From bc4d4229dc8150c1877e8673fb6be5be18487b6d Mon Sep 17 00:00:00 2001 From: msmith Date: Tue, 29 May 2001 19:52:40 +0000 Subject: Import the 20010518 Intel ACPI CA release. Note that Intel's directory layout keeps changing, so to reduce repository thrash everything has been moved into a single directory. (repo copy involved) --- sys/contrib/dev/acpica/acconfig.h | 11 +- sys/contrib/dev/acpica/acdebug.h | 10 +- sys/contrib/dev/acpica/acdispat.h | 53 +- sys/contrib/dev/acpica/acenv.h | 46 +- sys/contrib/dev/acpica/acevents.h | 27 +- sys/contrib/dev/acpica/acexcep.h | 28 +- sys/contrib/dev/acpica/acfreebsd.h | 69 ++- sys/contrib/dev/acpica/acgcc.h | 3 +- sys/contrib/dev/acpica/acglobal.h | 36 +- sys/contrib/dev/acpica/achware.h | 9 +- sys/contrib/dev/acpica/acinterp.h | 297 +++++----- sys/contrib/dev/acpica/aclocal.h | 647 ++++++++++------------ sys/contrib/dev/acpica/acmacros.h | 146 ++++- sys/contrib/dev/acpica/acnamesp.h | 51 +- sys/contrib/dev/acpica/acobject.h | 131 +++-- sys/contrib/dev/acpica/acoutput.h | 55 +- sys/contrib/dev/acpica/acpi.h | 31 +- sys/contrib/dev/acpica/acpiosxf.h | 42 +- sys/contrib/dev/acpica/acpixf.h | 46 +- sys/contrib/dev/acpica/acresrc.h | 54 +- sys/contrib/dev/acpica/actbl.h | 4 +- sys/contrib/dev/acpica/actbl2.h | 249 +++++---- sys/contrib/dev/acpica/actbl71.h | 7 +- sys/contrib/dev/acpica/actypes.h | 309 ++++++----- sys/contrib/dev/acpica/acutils.h | 302 ++++------ sys/contrib/dev/acpica/amlcode.h | 113 ++-- sys/contrib/dev/acpica/dbcmds.c | 144 +++-- sys/contrib/dev/acpica/dbdisasm.c | 28 +- sys/contrib/dev/acpica/dbdisply.c | 29 +- sys/contrib/dev/acpica/dbexec.c | 15 +- sys/contrib/dev/acpica/dbfileio.c | 16 +- sys/contrib/dev/acpica/dbhistry.c | 4 +- sys/contrib/dev/acpica/dbinput.c | 38 +- sys/contrib/dev/acpica/dbstats.c | 14 +- sys/contrib/dev/acpica/dbutils.c | 12 +- sys/contrib/dev/acpica/dbxface.c | 24 +- sys/contrib/dev/acpica/dsfield.c | 130 ++--- sys/contrib/dev/acpica/dsmethod.c | 111 ++-- sys/contrib/dev/acpica/dsmthdat.c | 176 +++--- sys/contrib/dev/acpica/dsobject.c | 108 ++-- sys/contrib/dev/acpica/dsopcode.c | 299 +++++----- sys/contrib/dev/acpica/dsutils.c | 139 +++-- sys/contrib/dev/acpica/dswexec.c | 89 ++- sys/contrib/dev/acpica/dswload.c | 249 ++++----- sys/contrib/dev/acpica/dswscope.c | 18 +- sys/contrib/dev/acpica/dswstate.c | 164 +++--- sys/contrib/dev/acpica/evevent.c | 89 ++- sys/contrib/dev/acpica/evmisc.c | 233 +++++--- sys/contrib/dev/acpica/evregion.c | 125 ++--- sys/contrib/dev/acpica/evrgnini.c | 100 ++-- sys/contrib/dev/acpica/evsci.c | 52 +- sys/contrib/dev/acpica/evxface.c | 202 ++++--- sys/contrib/dev/acpica/evxfevnt.c | 89 ++- sys/contrib/dev/acpica/evxfregn.c | 90 +-- sys/contrib/dev/acpica/exconfig.c | 76 ++- sys/contrib/dev/acpica/exconvrt.c | 315 ++++++----- sys/contrib/dev/acpica/excreate.c | 212 ++++--- sys/contrib/dev/acpica/exdump.c | 166 +++--- sys/contrib/dev/acpica/exdyadic.c | 173 +++--- sys/contrib/dev/acpica/exfield.c | 562 ++++++++++++------- sys/contrib/dev/acpica/exfldio.c | 1064 +++++++++++++++++++++--------------- sys/contrib/dev/acpica/exmisc.c | 115 ++-- sys/contrib/dev/acpica/exmonad.c | 264 ++++----- sys/contrib/dev/acpica/exnames.c | 96 ++-- sys/contrib/dev/acpica/exprep.c | 372 +++++++------ sys/contrib/dev/acpica/exregion.c | 65 +-- sys/contrib/dev/acpica/exresnte.c | 342 ++---------- sys/contrib/dev/acpica/exresolv.c | 282 ++++------ sys/contrib/dev/acpica/exresop.c | 129 +++-- sys/contrib/dev/acpica/exstore.c | 287 +++++----- sys/contrib/dev/acpica/exstoren.c | 100 ++-- sys/contrib/dev/acpica/exstorob.c | 358 +----------- sys/contrib/dev/acpica/exsystem.c | 107 ++-- sys/contrib/dev/acpica/exutils.c | 111 ++-- sys/contrib/dev/acpica/exxface.c | 24 +- sys/contrib/dev/acpica/hwacpi.c | 30 +- sys/contrib/dev/acpica/hwgpe.c | 4 +- sys/contrib/dev/acpica/hwregs.c | 110 ++-- sys/contrib/dev/acpica/hwsleep.c | 46 +- sys/contrib/dev/acpica/hwtimer.c | 60 +- sys/contrib/dev/acpica/nsaccess.c | 87 ++- sys/contrib/dev/acpica/nsalloc.c | 38 +- sys/contrib/dev/acpica/nsdump.c | 69 ++- sys/contrib/dev/acpica/nseval.c | 128 ++--- sys/contrib/dev/acpica/nsinit.c | 84 +-- sys/contrib/dev/acpica/nsload.c | 99 ++-- sys/contrib/dev/acpica/nsnames.c | 16 +- sys/contrib/dev/acpica/nsobject.c | 52 +- sys/contrib/dev/acpica/nssearch.c | 98 ++-- sys/contrib/dev/acpica/nsutils.c | 315 ++++++----- sys/contrib/dev/acpica/nswalk.c | 16 +- sys/contrib/dev/acpica/nsxfname.c | 58 +- sys/contrib/dev/acpica/nsxfobj.c | 128 +++-- sys/contrib/dev/acpica/psargs.c | 43 +- sys/contrib/dev/acpica/psfind.c | 23 +- sys/contrib/dev/acpica/psopcode.c | 293 +++++----- sys/contrib/dev/acpica/psparse.c | 131 ++--- sys/contrib/dev/acpica/psscope.c | 21 +- sys/contrib/dev/acpica/pstree.c | 8 +- sys/contrib/dev/acpica/psutils.c | 168 +++--- sys/contrib/dev/acpica/pswalk.c | 8 +- sys/contrib/dev/acpica/psxface.c | 16 +- sys/contrib/dev/acpica/rsaddr.c | 649 ++++++++++++++++++---- sys/contrib/dev/acpica/rscalc.c | 818 +++++++++++++-------------- sys/contrib/dev/acpica/rscreate.c | 120 ++-- sys/contrib/dev/acpica/rsdump.c | 299 +++++++--- sys/contrib/dev/acpica/rsio.c | 130 ++--- sys/contrib/dev/acpica/rsirq.c | 169 +++--- sys/contrib/dev/acpica/rslist.c | 547 +++++++++--------- sys/contrib/dev/acpica/rsmemory.c | 133 +++-- sys/contrib/dev/acpica/rsmisc.c | 224 ++++---- sys/contrib/dev/acpica/rsutils.c | 78 ++- sys/contrib/dev/acpica/rsxface.c | 82 ++- sys/contrib/dev/acpica/tbconvrt.c | 31 +- sys/contrib/dev/acpica/tbget.c | 18 +- sys/contrib/dev/acpica/tbinstal.c | 27 +- sys/contrib/dev/acpica/tbutils.c | 17 +- sys/contrib/dev/acpica/tbxface.c | 62 ++- sys/contrib/dev/acpica/tbxfroot.c | 6 +- sys/contrib/dev/acpica/utalloc.c | 190 +++---- sys/contrib/dev/acpica/utclib.c | 78 +-- sys/contrib/dev/acpica/utcopy.c | 127 +++-- sys/contrib/dev/acpica/utdebug.c | 67 ++- sys/contrib/dev/acpica/utdelete.c | 213 ++++---- sys/contrib/dev/acpica/uteval.c | 129 +++-- sys/contrib/dev/acpica/utglobal.c | 72 +-- sys/contrib/dev/acpica/utinit.c | 66 +-- sys/contrib/dev/acpica/utmisc.c | 355 ++++++++---- sys/contrib/dev/acpica/utobject.c | 174 +++--- sys/contrib/dev/acpica/utxface.c | 117 +++- 130 files changed, 9394 insertions(+), 8536 deletions(-) (limited to 'sys/contrib/dev') diff --git a/sys/contrib/dev/acpica/acconfig.h b/sys/contrib/dev/acpica/acconfig.h index b3c7ed6..8683e86e 100644 --- a/sys/contrib/dev/acpica/acconfig.h +++ b/sys/contrib/dev/acpica/acconfig.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acconfig.h - Global configuration constants - * $Revision: 55 $ + * $Revision: 64 $ * *****************************************************************************/ @@ -144,7 +144,7 @@ /* Version string */ -#define ACPI_CA_VERSION 0x20010208 +#define ACPI_CA_VERSION 0x20010518 /* Maximum objects in the various object caches */ @@ -180,7 +180,7 @@ /* * Debugger threading model * Use single threaded if the entire subsystem is contained in an application - * Use multiple threaded when the the subsystem is running in the kernel. + * 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. @@ -239,6 +239,11 @@ #define HI_RSDP_WINDOW_SIZE 0x20000 #define RSDP_SCAN_STEP 16 +/* Maximum SpaceIds for Operation Regions */ + +#define ACPI_MAX_ADDRESS_SPACE 255 +#define ACPI_NUM_ADDRESS_SPACES 256 + #endif /* _ACCONFIG_H */ diff --git a/sys/contrib/dev/acpica/acdebug.h b/sys/contrib/dev/acpica/acdebug.h index 88a41b6..0a1c293 100644 --- a/sys/contrib/dev/acpica/acdebug.h +++ b/sys/contrib/dev/acpica/acdebug.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acdebug.h - ACPI/AML debugger - * $Revision: 41 $ + * $Revision: 44 $ * *****************************************************************************/ @@ -127,7 +127,7 @@ extern int optind; extern NATIVE_CHAR *optarg; extern UINT8 *AmlPtr; -extern UINT32 AcpiAmlLength; +extern UINT32 AmlLength; extern BOOLEAN opt_tables; extern BOOLEAN opt_disasm; @@ -291,6 +291,10 @@ AcpiDbFindReferences ( NATIVE_CHAR *ObjectArg); void +AcpiDbDisplayLocks (void); + + +void AcpiDbDisplayResources ( NATIVE_CHAR *ObjectArg); @@ -394,7 +398,7 @@ AcpiDbCreateExecutionThreads ( * dbfileio - Debugger file I/O commands */ -OBJECT_TYPE_INTERNAL +ACPI_OBJECT_TYPE8 AcpiDbMatchArgument ( NATIVE_CHAR *UserArgument, ARGUMENT_INFO *Arguments); diff --git a/sys/contrib/dev/acpica/acdispat.h b/sys/contrib/dev/acpica/acdispat.h index 0a7b4d5..32b0d2e 100644 --- a/sys/contrib/dev/acpica/acdispat.h +++ b/sys/contrib/dev/acpica/acdispat.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acdispat.h - dispatcher (parser to interpreter interface) - * $Revision: 35 $ + * $Revision: 40 $ * *****************************************************************************/ @@ -123,12 +123,6 @@ #define NAMEOF_ARG_NTE "__A0" -/* For AcpiDsMethodDataSetValue */ - -#define MTH_TYPE_LOCAL 0 -#define MTH_TYPE_ARG 1 - - /* Common interfaces */ ACPI_STATUS @@ -155,7 +149,7 @@ AcpiDsObjStackPopObject ( /* dsopcode - support for late evaluation */ ACPI_STATUS -AcpiDsGetFieldUnitArguments ( +AcpiDsGetBufferFieldArguments ( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS @@ -217,7 +211,7 @@ AcpiDsCreateBankField ( ACPI_STATUS AcpiDsCreateIndexField ( ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE RegionNode, + ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState); @@ -264,8 +258,15 @@ AcpiDsLoad3EndOp ( ACPI_STATUS +AcpiDsStoreObjectToLocal ( + UINT16 Opcode, + UINT32 Index, + ACPI_OPERAND_OBJECT *SrcDesc, + ACPI_WALK_STATE *WalkState); + +ACPI_STATUS AcpiDsMethodDataGetEntry ( - UINT32 Type, + UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT ***Node); @@ -278,29 +279,22 @@ BOOLEAN AcpiDsIsMethodValue ( ACPI_OPERAND_OBJECT *ObjDesc); -OBJECT_TYPE_INTERNAL +ACPI_OBJECT_TYPE8 AcpiDsMethodDataGetType ( - UINT32 Type, + UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsMethodDataGetValue ( - UINT32 Type, + UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **DestDesc); ACPI_STATUS -AcpiDsMethodDataSetValue ( - UINT32 Type, - UINT32 Index, - ACPI_OPERAND_OBJECT *SrcDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS AcpiDsMethodDataDeleteValue ( - UINT32 Type, + UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState); @@ -311,8 +305,8 @@ AcpiDsMethodDataInitArgs ( ACPI_WALK_STATE *WalkState); ACPI_NAMESPACE_NODE * -AcpiDsMethodDataGetNte ( - UINT32 Type, +AcpiDsMethodDataGetNode ( + UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState); @@ -322,7 +316,7 @@ AcpiDsMethodDataInit ( ACPI_STATUS AcpiDsMethodDataSetEntry ( - UINT32 Type, + UINT16 Opcode, UINT32 Index, ACPI_OPERAND_OBJECT *Object, ACPI_WALK_STATE *WalkState); @@ -352,7 +346,8 @@ AcpiDsTerminateControlMethod ( ACPI_STATUS AcpiDsBeginMethodExecution ( ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT *ObjDesc); + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_NAMESPACE_NODE *CallingMethodNode); /* dsobj - Parser/Interpreter interface - object initialization and conversion */ @@ -398,7 +393,7 @@ AcpiDsCreateNode ( /* dsregn - Parser/Interpreter interface - Op Region parsing */ ACPI_STATUS -AcpiDsEvalFieldUnitOperands ( +AcpiDsEvalBufferFieldOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); @@ -440,12 +435,12 @@ ACPI_STATUS AcpiDsResolveOperands ( ACPI_WALK_STATE *WalkState); -OBJECT_TYPE_INTERNAL +ACPI_OBJECT_TYPE8 AcpiDsMapOpcodeToDataType ( UINT16 Opcode, UINT32 *OutFlags); -OBJECT_TYPE_INTERNAL +ACPI_OBJECT_TYPE8 AcpiDsMapNamedOpcodeToDataType ( UINT16 Opcode); @@ -457,7 +452,7 @@ AcpiDsMapNamedOpcodeToDataType ( ACPI_STATUS AcpiDsScopeStackPush ( ACPI_NAMESPACE_NODE *Node, - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, ACPI_WALK_STATE *WalkState); diff --git a/sys/contrib/dev/acpica/acenv.h b/sys/contrib/dev/acpica/acenv.h index f49098a..126c9cd 100644 --- a/sys/contrib/dev/acpica/acenv.h +++ b/sys/contrib/dev/acpica/acenv.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acenv.h - Generation environment specific items - * $Revision: 70 $ + * $Revision: 75 $ * *****************************************************************************/ @@ -252,8 +252,8 @@ */ #define STRSTR(s1,s2) strstr((s1), (s2)) -#define STRUPR(s) strupr((s)) -#define STRLEN(s) strlen((s)) +#define STRUPR(s) AcpiUtStrupr ((s)) +#define STRLEN(s) (UINT32) strlen((s)) #define STRCPY(d,s) strcpy((d), (s)) #define STRNCPY(d,s,n) strncpy((d), (s), (NATIVE_INT)(n)) #define STRNCMP(d,s,n) strncmp((d), (s), (NATIVE_INT)(n)) @@ -292,35 +292,35 @@ typedef char *va_list; * Storage alignment properties */ -#define _AUPBND (sizeof(int) - 1) -#define _ADNBND (sizeof(int) - 1) +#define _AUPBND (sizeof (NATIVE_INT) - 1) +#define _ADNBND (sizeof (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)))) +#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 STRSTR(s1,s2) AcpiCmStrstr ((s1), (s2)) -#define STRUPR(s) AcpiCmStrupr ((s)) -#define STRLEN(s) AcpiCmStrlen ((s)) -#define STRCPY(d,s) AcpiCmStrcpy ((d), (s)) -#define STRNCPY(d,s,n) AcpiCmStrncpy ((d), (s), (n)) -#define STRNCMP(d,s,n) AcpiCmStrncmp ((d), (s), (n)) -#define STRCMP(d,s) AcpiCmStrcmp ((d), (s)) -#define STRCAT(d,s) AcpiCmStrcat ((d), (s)) -#define STRNCAT(d,s,n) AcpiCmStrncat ((d), (s), (n)) -#define STRTOUL(d,s,n) AcpiCmStrtoul ((d), (s),(n)) -#define MEMCPY(d,s,n) AcpiCmMemcpy ((d), (s), (n)) -#define MEMSET(d,v,n) AcpiCmMemset ((d), (v), (n)) -#define TOUPPER AcpiCmToUpper -#define TOLOWER AcpiCmToLower +#define STRSTR(s1,s2) AcpiUtStrstr ((s1), (s2)) +#define STRUPR(s) AcpiUtStrupr ((s)) +#define STRLEN(s) AcpiUtStrlen ((s)) +#define STRCPY(d,s) AcpiUtStrcpy ((d), (s)) +#define STRNCPY(d,s,n) AcpiUtStrncpy ((d), (s), (n)) +#define STRNCMP(d,s,n) AcpiUtStrncmp ((d), (s), (n)) +#define STRCMP(d,s) AcpiUtStrcmp ((d), (s)) +#define STRCAT(d,s) AcpiUtStrcat ((d), (s)) +#define STRNCAT(d,s,n) AcpiUtStrncat ((d), (s), (n)) +#define STRTOUL(d,s,n) AcpiUtStrtoul ((d), (s),(n)) +#define MEMCPY(d,s,n) AcpiUtMemcpy ((d), (s), (n)) +#define MEMSET(d,v,n) AcpiUtMemset ((d), (v), (n)) +#define TOUPPER AcpiUtToUpper +#define TOLOWER AcpiUtToLower #endif /* ACPI_USE_SYSTEM_CLIBRARY */ diff --git a/sys/contrib/dev/acpica/acevents.h b/sys/contrib/dev/acpica/acevents.h index 846b399..e350ebe 100644 --- a/sys/contrib/dev/acpica/acevents.h +++ b/sys/contrib/dev/acpica/acevents.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acevents.h - Event subcomponent prototypes and defines - * $Revision: 63 $ + * $Revision: 65 $ * *****************************************************************************/ @@ -182,11 +182,14 @@ AcpiEvGpeDetect ( * AcpiEvnotify - Device Notify handling and dispatch */ -void -AcpiEvNotifyDispatch ( - ACPI_HANDLE Device, +ACPI_STATUS +AcpiEvQueueNotifyRequest ( + ACPI_NAMESPACE_NODE *Node, UINT32 NotifyValue); +void +AcpiEvNotifyDispatch ( + void *Context); /* * AcpiEvregion - Address Space handling @@ -288,20 +291,4 @@ AcpiEvTerminate ( void); -/* Debug support */ - -#ifdef ACPI_DEBUG - -UINT32 -AcpiEvSciCount ( - UINT32 AcpiEvent); - -#define DEBUG_INCREMENT_EVENT_COUNT(a) AcpiGbl_EventCount[a]++; - -#else - -#define DEBUG_INCREMENT_EVENT_COUNT(a) -#endif - - #endif /* __ACEVENTS_H__ */ diff --git a/sys/contrib/dev/acpica/acexcep.h b/sys/contrib/dev/acpica/acexcep.h index 13dbf75..2bf4cf3 100644 --- a/sys/contrib/dev/acpica/acexcep.h +++ b/sys/contrib/dev/acpica/acexcep.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acexcep.h - Exception codes returned by the ACPI subsystem - * $Revision: 41 $ + * $Revision: 46 $ * *****************************************************************************/ @@ -159,8 +159,14 @@ #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_CODE_ENV_MAX 0x0014 +#define AE_CODE_ENV_MAX 0x001A /* * Programmer exceptions @@ -209,8 +215,13 @@ #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_CODE_AML_MAX 0x0014 +#define AE_CODE_AML_MAX 0x0019 /* * Internal exceptions used for control @@ -256,6 +267,12 @@ static NATIVE_CHAR *AcpiGbl_ExceptionNames_Env[] = "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", }; static NATIVE_CHAR *AcpiGbl_ExceptionNames_Pgm[] = @@ -297,6 +314,11 @@ static NATIVE_CHAR *AcpiGbl_ExceptionNames_Aml[] = "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", }; static NATIVE_CHAR *AcpiGbl_ExceptionNames_Ctrl[] = diff --git a/sys/contrib/dev/acpica/acfreebsd.h b/sys/contrib/dev/acpica/acfreebsd.h index ca6c799..894af50 100644 --- a/sys/contrib/dev/acpica/acfreebsd.h +++ b/sys/contrib/dev/acpica/acfreebsd.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acfreebsd.h - OS specific defines, etc. - * $Revision: 4 $ + * $Revision: 6 $ * *****************************************************************************/ @@ -117,18 +117,83 @@ #ifndef __ACFREEBSD_H__ #define __ACFREEBSD_H__ +/* + * XXX this is technically correct, but will cause problems with some ASL + * which only works if the string names a Microsoft operating system. + */ #define ACPI_OS_NAME "FreeBSD" +/* FreeBSD uses GCC */ + +#include "acgcc.h" + #ifdef _KERNEL #include #include #include #include -#include +#include #define asm __asm #define __cli() disable_intr() #define __sti() enable_intr() +#ifdef ACPI_DEBUG +#ifdef DEBUGGER_THREADING +#undef DEBUGGER_THREADING +#endif /* DEBUGGER_THREADING */ +#define DEBUGGER_THREADING 0 /* integrated with DDB */ +#include "opt_ddb.h" +#ifdef DDB +#define ENABLE_DEBUGGER +#endif /* DDB */ +#endif /* ACPI_DEBUG */ + +#else /* _KERNEL */ + +/* Not building kernel code, so use libc */ +#define ACPI_USE_STANDARD_HEADERS + +#define __cli() +#define __sti() + +#endif /* _KERNEL */ + +/* Always use FreeBSD code over our local versions */ +#define ACPI_USE_SYSTEM_CLIBRARY + +/* FreeBSD doesn't have strupr, should be fixed. (move to libkern) */ +static __inline char * +strupr(char *str) +{ + char *c = str; + while(*c) { + *c = toupper(*c); + c++; + } + return(str); +} + +#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/acgcc.h b/sys/contrib/dev/acpica/acgcc.h index eb2f4ce..c426663 100644 --- a/sys/contrib/dev/acpica/acgcc.h +++ b/sys/contrib/dev/acpica/acgcc.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acgcc.h - GCC specific defines, etc. - * $Revision: 5 $ + * $Revision: 6 $ * *****************************************************************************/ @@ -118,7 +118,6 @@ #define __ACGCC_H__ - #ifdef __ia64__ #define _IA64 diff --git a/sys/contrib/dev/acpica/acglobal.h b/sys/contrib/dev/acpica/acglobal.h index ee2035f..2fbcbe1 100644 --- a/sys/contrib/dev/acpica/acglobal.h +++ b/sys/contrib/dev/acpica/acglobal.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acglobal.h - Declarations for global variables - * $Revision: 96 $ + * $Revision: 101 $ * *****************************************************************************/ @@ -241,19 +241,19 @@ ACPI_EXTERN UINT16 AcpiGbl_NextMethodOwnerId; ACPI_EXTERN UINT8 AcpiGbl_DebuggerConfiguration; ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockAcquired; -ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockSet; /* TBD: [Restructure] OBSOLETE?? */ ACPI_EXTERN BOOLEAN AcpiGbl_StepToNextCall; ACPI_EXTERN BOOLEAN AcpiGbl_AcpiHardwarePresent; +ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockPresent; ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_DrvNotify; ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_SysNotify; -extern BOOLEAN AcpiGbl_Shutdown; -extern UINT32 AcpiGbl_SystemFlags; -extern UINT32 AcpiGbl_StartupFlags; -extern UINT8 AcpiGbl_DecodeTo8bit[8]; -extern NATIVE_CHAR AcpiGbl_HexToAscii[]; +extern BOOLEAN AcpiGbl_Shutdown; +extern UINT32 AcpiGbl_SystemFlags; +extern UINT32 AcpiGbl_StartupFlags; +extern UINT8 AcpiGbl_DecodeTo8bit[8]; +extern NATIVE_CHAR AcpiGbl_HexToAscii[16]; /***************************************************************************** @@ -269,15 +269,15 @@ extern NATIVE_CHAR AcpiGbl_HexToAscii[]; ACPI_EXTERN ACPI_NAMESPACE_NODE AcpiGbl_RootNodeStruct; ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_RootNode; -extern UINT8 AcpiGbl_NsProperties[NUM_NS_TYPES]; -extern PREDEFINED_NAMES AcpiGbl_PreDefinedNames [NUM_PREDEFINED_NAMES]; +extern UINT8 AcpiGbl_NsProperties[NUM_NS_TYPES]; +extern PREDEFINED_NAMES AcpiGbl_PreDefinedNames [NUM_PREDEFINED_NAMES]; /* Used to detect memory leaks (DEBUG ONLY) */ #ifdef ACPI_DEBUG -ACPI_EXTERN ALLOCATION_INFO *AcpiGbl_HeadAllocPtr; -ACPI_EXTERN ALLOCATION_INFO *AcpiGbl_TailAllocPtr; +ACPI_EXTERN ACPI_ALLOCATION_INFO *AcpiGbl_HeadAllocPtr; +ACPI_EXTERN ACPI_ALLOCATION_INFO *AcpiGbl_TailAllocPtr; #endif @@ -291,15 +291,9 @@ ACPI_EXTERN ALLOCATION_INFO *AcpiGbl_TailAllocPtr; ACPI_EXTERN ACPI_WALK_LIST *AcpiGbl_CurrentWalkList; /* - * Handle to the last method found - used during pass1 of load - */ -ACPI_EXTERN ACPI_HANDLE AcpiGbl_LastMethod; - -/* * Table of Address Space handlers */ - -ACPI_EXTERN ACPI_ADDRESS_SPACE_INFO AcpiGbl_AddressSpaces[ACPI_NUM_ADDRESS_SPACES]; +ACPI_EXTERN ACPI_ADR_SPACE_INFO AcpiGbl_AddressSpaces[ACPI_NUM_ADDRESS_SPACES]; /* Control method single step flag */ @@ -331,7 +325,7 @@ extern UINT32 AcpiHwActiveCxState; * ****************************************************************************/ -ACPI_EXTERN ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventHandlers[NUM_FIXED_EVENTS]; +ACPI_EXTERN ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventHandlers[ACPI_NUM_FIXED_EVENTS]; ACPI_EXTERN ACPI_HANDLE AcpiGbl_GpeObjHandle; ACPI_EXTERN UINT32 AcpiGbl_GpeRegisterCount; @@ -346,12 +340,12 @@ ACPI_EXTERN ACPI_GPE_LEVEL_INFO *AcpiGbl_GpeInfo; * This table is needed because the GPE numbers supported by block 1 do not * have to be contiguous with the GPE numbers supported by block 0. */ -ACPI_EXTERN UINT8 AcpiGbl_GpeValid [NUM_GPE]; +ACPI_EXTERN UINT8 AcpiGbl_GpeValid [ACPI_NUM_GPE]; /* AcpiEvent counter for debug only */ #ifdef ACPI_DEBUG -ACPI_EXTERN UINT32 AcpiGbl_EventCount[NUM_FIXED_EVENTS]; +ACPI_EXTERN UINT32 AcpiGbl_EventCount[ACPI_NUM_FIXED_EVENTS]; #endif diff --git a/sys/contrib/dev/acpica/achware.h b/sys/contrib/dev/acpica/achware.h index bcefafa..9b2f90b 100644 --- a/sys/contrib/dev/acpica/achware.h +++ b/sys/contrib/dev/acpica/achware.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: achware.h -- hardware specific interfaces - * $Revision: 53 $ + * $Revision: 55 $ * *****************************************************************************/ @@ -119,7 +119,7 @@ /* PM Timer ticks per second (HZ) */ -#define PM_TIMER_FREQUENCY 3579545 +#define PM_TIMER_FREQUENCY 3579545 /* Prototypes */ @@ -173,14 +173,14 @@ AcpiHwRegisterWrite ( UINT32 AcpiHwLowLevelRead ( UINT32 Width, - ACPI_GAS *Reg, + ACPI_GENERIC_ADDRESS *Reg, UINT32 Offset); void AcpiHwLowLevelWrite ( UINT32 Width, UINT32 Value, - ACPI_GAS *Reg, + ACPI_GENERIC_ADDRESS *Reg, UINT32 Offset); void @@ -192,7 +192,6 @@ AcpiHwGetBitShift ( UINT32 Mask); - /* GPE support */ void diff --git a/sys/contrib/dev/acpica/acinterp.h b/sys/contrib/dev/acpica/acinterp.h index 6ebdd17..a3518fa 100644 --- a/sys/contrib/dev/acpica/acinterp.h +++ b/sys/contrib/dev/acpica/acinterp.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acinterp.h - Interpreter subcomponent prototypes and defines - * $Revision: 92 $ + * $Revision: 102 $ * *****************************************************************************/ @@ -138,9 +138,8 @@ #define METHOD_DELETE_AT_COMPLETION 0x2 - ACPI_STATUS -AcpiAmlResolveOperands ( +AcpiExResolveOperands ( UINT16 Opcode, ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState); @@ -151,11 +150,11 @@ AcpiAmlResolveOperands ( */ ACPI_STATUS -AcpiAmlLoadTable ( +AcpiExLoadTable ( ACPI_TABLE_TYPE TableId); ACPI_STATUS -AcpiAmlExecuteMethod ( +AcpiExExecuteMethod ( ACPI_NAMESPACE_NODE *MethodNode, ACPI_OPERAND_OBJECT **Params, ACPI_OPERAND_OBJECT **ReturnObjDesc); @@ -166,23 +165,23 @@ AcpiAmlExecuteMethod ( */ ACPI_STATUS -AcpiAmlConvertToInteger ( +AcpiExConvertToInteger ( ACPI_OPERAND_OBJECT **ObjDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlConvertToBuffer ( +AcpiExConvertToBuffer ( ACPI_OPERAND_OBJECT **ObjDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlConvertToString ( +AcpiExConvertToString ( ACPI_OPERAND_OBJECT **ObjDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlConvertToTargetType ( - OBJECT_TYPE_INTERNAL DestinationType, +AcpiExConvertToTargetType ( + ACPI_OBJECT_TYPE8 DestinationType, ACPI_OPERAND_OBJECT **ObjDesc, ACPI_WALK_STATE *WalkState); @@ -192,110 +191,164 @@ AcpiAmlConvertToTargetType ( */ ACPI_STATUS -AcpiAmlReadField ( +AcpiExExtractFromField ( ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, - UINT32 BufferLength, - UINT32 ByteLength, - UINT32 DatumLength, - UINT32 BitGranularity, - UINT32 ByteGranularity); + UINT32 BufferLength); ACPI_STATUS -AcpiAmlWriteField ( +AcpiExInsertIntoField ( ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, - UINT32 BufferLength, - UINT32 ByteLength, - UINT32 DatumLength, - UINT32 BitGranularity, - UINT32 ByteGranularity); + UINT32 BufferLength); ACPI_STATUS -AcpiAmlSetupField ( +AcpiExSetupField ( ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *RgnDesc, - UINT32 FieldBitWidth); + UINT32 FieldByteOffset); ACPI_STATUS -AcpiAmlReadFieldData ( +AcpiExReadFieldDatum ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldByteOffset, - UINT32 FieldBitWidth, UINT32 *Value); ACPI_STATUS -AcpiAmlAccessNamedField ( +AcpiExCommonAccessField ( + UINT32 Mode, + ACPI_OPERAND_OBJECT *ObjDesc, + void *Buffer, + UINT32 BufferLength); + + +ACPI_STATUS +AcpiExAccessIndexField ( + UINT32 Mode, + ACPI_OPERAND_OBJECT *ObjDesc, + void *Buffer, + UINT32 BufferLength); + +ACPI_STATUS +AcpiExAccessBankField ( UINT32 Mode, - ACPI_HANDLE NamedField, + ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, - UINT32 Length); + UINT32 BufferLength); + +ACPI_STATUS +AcpiExAccessRegionField ( + UINT32 Mode, + ACPI_OPERAND_OBJECT *ObjDesc, + void *Buffer, + UINT32 BufferLength); + + +ACPI_STATUS +AcpiExAccessBufferField ( + UINT32 Mode, + ACPI_OPERAND_OBJECT *ObjDesc, + void *Buffer, + UINT32 BufferLength); + +ACPI_STATUS +AcpiExReadDataFromField ( + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_OPERAND_OBJECT **RetBufferDesc); + +ACPI_STATUS +AcpiExWriteDataToField ( + ACPI_OPERAND_OBJECT *SourceDesc, + ACPI_OPERAND_OBJECT *ObjDesc); /* * ammisc - ACPI AML (p-code) execution - specific opcodes */ ACPI_STATUS -AcpiAmlExecCreateField ( +AcpiExCreateBufferField ( UINT8 *AmlPtr, UINT32 AmlLength, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlExecReconfiguration ( +AcpiExReconfiguration ( UINT16 Opcode, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlExecFatal ( +AcpiExFatal ( ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlExecIndex ( +AcpiExIndex ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc); ACPI_STATUS -AcpiAmlExecMatch ( +AcpiExMatch ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc); ACPI_STATUS -AcpiAmlExecCreateMutex ( +AcpiExCreateMutex ( ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlExecCreateProcessor ( +AcpiExCreateProcessor ( ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE ProcessorNTE); + ACPI_NAMESPACE_NODE *ProcessorNode); ACPI_STATUS -AcpiAmlExecCreatePowerResource ( +AcpiExCreatePowerResource ( ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE ProcessorNTE); + ACPI_NAMESPACE_NODE *PowerNode); ACPI_STATUS -AcpiAmlExecCreateRegion ( +AcpiExCreateRegion ( UINT8 *AmlPtr, - UINT32 AcpiAmlLength, + UINT32 AmlLength, UINT8 RegionSpace, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlExecCreateEvent ( +AcpiExCreateEvent ( ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlExecCreateAlias ( +AcpiExCreateAlias ( ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlExecCreateMethod ( +AcpiExCreateMethod ( UINT8 *AmlPtr, - UINT32 AcpiAmlLength, + UINT32 AmlLength, UINT32 MethodFlags, - ACPI_HANDLE Method); + ACPI_NAMESPACE_NODE *Method); + + +/* + * ammutex - 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); + +ACPI_STATUS +AcpiExReleaseAllMutexes ( + ACPI_OPERAND_OBJECT *MutexList); + +void +AcpiExUnlinkMutex ( + ACPI_OPERAND_OBJECT *ObjDesc); /* @@ -303,32 +356,36 @@ AcpiAmlExecCreateMethod ( */ ACPI_STATUS -AcpiAmlPrepDefFieldValue ( +AcpiExPrepCommonFieldObject ( + ACPI_OPERAND_OBJECT *ObjDesc, + UINT8 FieldFlags, + UINT32 FieldPosition, + UINT32 FieldLength); + +ACPI_STATUS +AcpiExPrepRegionFieldValue ( ACPI_NAMESPACE_NODE *Node, ACPI_HANDLE Region, UINT8 FieldFlags, - UINT8 FieldAttribute, UINT32 FieldPosition, UINT32 FieldLength); ACPI_STATUS -AcpiAmlPrepBankFieldValue ( +AcpiExPrepBankFieldValue ( ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE Region, - ACPI_HANDLE BankReg, + ACPI_NAMESPACE_NODE *RegionNode, + ACPI_NAMESPACE_NODE *BankRegisterNode, UINT32 BankVal, UINT8 FieldFlags, - UINT8 FieldAttribute, UINT32 FieldPosition, UINT32 FieldLength); ACPI_STATUS -AcpiAmlPrepIndexFieldValue ( +AcpiExPrepIndexFieldValue ( ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE IndexReg, - ACPI_HANDLE DataReg, + ACPI_NAMESPACE_NODE *IndexReg, + ACPI_NAMESPACE_NODE *DataReg, UINT8 FieldFlags, - UINT8 FieldAttribute, UINT32 FieldPosition, UINT32 FieldLength); @@ -337,47 +394,43 @@ AcpiAmlPrepIndexFieldValue ( * amsystem - Interface to OS services */ -UINT16 -AcpiAmlSystemThreadId ( - void); - ACPI_STATUS -AcpiAmlSystemDoNotifyOp ( +AcpiExSystemDoNotifyOp ( ACPI_OPERAND_OBJECT *Value, ACPI_OPERAND_OBJECT *ObjDesc); void -AcpiAmlSystemDoSuspend( +AcpiExSystemDoSuspend( UINT32 Time); void -AcpiAmlSystemDoStall ( +AcpiExSystemDoStall ( UINT32 Time); ACPI_STATUS -AcpiAmlSystemAcquireMutex( +AcpiExSystemAcquireMutex( ACPI_OPERAND_OBJECT *Time, ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS -AcpiAmlSystemReleaseMutex( +AcpiExSystemReleaseMutex( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS -AcpiAmlSystemSignalEvent( +AcpiExSystemSignalEvent( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS -AcpiAmlSystemWaitEvent( +AcpiExSystemWaitEvent( ACPI_OPERAND_OBJECT *Time, ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS -AcpiAmlSystemResetEvent( +AcpiExSystemResetEvent( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS -AcpiAmlSystemWaitSemaphore ( +AcpiExSystemWaitSemaphore ( ACPI_HANDLE Semaphore, UINT32 Timeout); @@ -387,18 +440,18 @@ AcpiAmlSystemWaitSemaphore ( */ ACPI_STATUS -AcpiAmlExecMonadic1 ( +AcpiExMonadic1 ( UINT16 Opcode, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlExecMonadic2 ( +AcpiExMonadic2 ( UINT16 Opcode, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc); ACPI_STATUS -AcpiAmlExecMonadic2R ( +AcpiExMonadic2R ( UINT16 Opcode, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc); @@ -409,24 +462,24 @@ AcpiAmlExecMonadic2R ( */ ACPI_STATUS -AcpiAmlExecDyadic1 ( +AcpiExDyadic1 ( UINT16 Opcode, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlExecDyadic2 ( +AcpiExDyadic2 ( UINT16 Opcode, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc); ACPI_STATUS -AcpiAmlExecDyadic2R ( +AcpiExDyadic2R ( UINT16 Opcode, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc); ACPI_STATUS -AcpiAmlExecDyadic2S ( +AcpiExDyadic2S ( UINT16 Opcode, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc); @@ -437,22 +490,22 @@ AcpiAmlExecDyadic2S ( */ ACPI_STATUS -AcpiAmlResolveToValue ( +AcpiExResolveToValue ( ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlResolveNodeToValue ( +AcpiExResolveNodeToValue ( ACPI_NAMESPACE_NODE **StackPtr, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlResolveObjectToValue ( +AcpiExResolveObjectToValue ( ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlGetFieldUnitValue ( +AcpiExGetBufferFieldValue ( ACPI_OPERAND_OBJECT *FieldDesc, ACPI_OPERAND_OBJECT *ResultDesc); @@ -462,18 +515,18 @@ AcpiAmlGetFieldUnitValue ( */ void -AcpiAmlShowHexValue ( +AcpiExShowHexValue ( UINT32 ByteCount, UINT8 *AmlPtr, UINT32 LeadSpace); ACPI_STATUS -AcpiAmlDumpOperand ( +AcpiExDumpOperand ( ACPI_OPERAND_OBJECT *EntryDesc); void -AcpiAmlDumpOperands ( +AcpiExDumpOperands ( ACPI_OPERAND_OBJECT **Operands, OPERATING_MODE InterpreterMode, NATIVE_CHAR *Ident, @@ -483,13 +536,13 @@ AcpiAmlDumpOperands ( UINT32 LineNumber); void -AcpiAmlDumpObjectDescriptor ( +AcpiExDumpObjectDescriptor ( ACPI_OPERAND_OBJECT *Object, UINT32 Flags); void -AcpiAmlDumpNode ( +AcpiExDumpNode ( ACPI_NAMESPACE_NODE *Node, UINT32 Flags); @@ -499,28 +552,28 @@ AcpiAmlDumpNode ( */ NATIVE_CHAR * -AcpiAmlAllocateNameString ( +AcpiExAllocateNameString ( UINT32 PrefixCount, UINT32 NumNameSegs); UINT32 -AcpiAmlGoodChar ( +AcpiExGoodChar ( UINT32 Character); ACPI_STATUS -AcpiAmlExecNameSegment ( +AcpiExNameSegment ( UINT8 **InAmlAddress, NATIVE_CHAR *NameString); ACPI_STATUS -AcpiAmlGetNameString ( - OBJECT_TYPE_INTERNAL DataType, +AcpiExGetNameString ( + ACPI_OBJECT_TYPE8 DataType, UINT8 *InAmlAddress, NATIVE_CHAR **OutNameString, UINT32 *OutNameLength); ACPI_STATUS -AcpiAmlDoName ( +AcpiExDoName ( ACPI_OBJECT_TYPE DataType, OPERATING_MODE LoadExecMode); @@ -530,44 +583,44 @@ AcpiAmlDoName ( */ ACPI_STATUS -AcpiAmlExecStore ( +AcpiExStore ( ACPI_OPERAND_OBJECT *ValDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlStoreObjectToIndex ( +AcpiExStoreObjectToIndex ( ACPI_OPERAND_OBJECT *ValDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlStoreObjectToNode ( +AcpiExStoreObjectToNode ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlStoreObjectToObject ( +AcpiExStoreObjectToObject ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState); /* - * + * */ ACPI_STATUS -AcpiAmlResolveObject ( +AcpiExResolveObject ( ACPI_OPERAND_OBJECT **SourceDescPtr, - OBJECT_TYPE_INTERNAL TargetType, + ACPI_OBJECT_TYPE8 TargetType, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiAmlStoreObject ( +AcpiExStoreObject ( ACPI_OPERAND_OBJECT *SourceDesc, - OBJECT_TYPE_INTERNAL TargetType, + ACPI_OBJECT_TYPE8 TargetType, ACPI_OPERAND_OBJECT **TargetDescPtr, ACPI_WALK_STATE *WalkState); @@ -577,32 +630,32 @@ AcpiAmlStoreObject ( */ ACPI_STATUS -AcpiAmlCopyBufferToBuffer ( +AcpiExCopyBufferToBuffer ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); ACPI_STATUS -AcpiAmlCopyStringToString ( +AcpiExCopyStringToString ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); ACPI_STATUS -AcpiAmlCopyIntegerToIndexField ( +AcpiExCopyIntegerToIndexField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); ACPI_STATUS -AcpiAmlCopyIntegerToBankField ( +AcpiExCopyIntegerToBankField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); ACPI_STATUS -AcpiAmlCopyDataToNamedField ( +AcpiExCopyDataToNamedField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node); ACPI_STATUS -AcpiAmlCopyIntegerToFieldUnit ( +AcpiExCopyIntegerToBufferField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); @@ -610,43 +663,43 @@ AcpiAmlCopyIntegerToFieldUnit ( * amutils - interpreter/scanner utilities */ -void -AcpiAmlEnterInterpreter ( +ACPI_STATUS +AcpiExEnterInterpreter ( void); void -AcpiAmlExitInterpreter ( +AcpiExExitInterpreter ( void); void -AcpiAmlTruncateFor32bitTable ( +AcpiExTruncateFor32bitTable ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState); BOOLEAN -AcpiAmlValidateObjectType ( +AcpiExValidateObjectType ( ACPI_OBJECT_TYPE Type); BOOLEAN -AcpiAmlAcquireGlobalLock ( +AcpiExAcquireGlobalLock ( UINT32 Rule); ACPI_STATUS -AcpiAmlReleaseGlobalLock ( +AcpiExReleaseGlobalLock ( BOOLEAN Locked); UINT32 -AcpiAmlDigitsNeeded ( +AcpiExDigitsNeeded ( ACPI_INTEGER Value, UINT32 Base); ACPI_STATUS -AcpiAmlEisaIdToString ( +AcpiExEisaIdToString ( UINT32 NumericId, NATIVE_CHAR *OutString); ACPI_STATUS -AcpiAmlUnsignedIntegerToString ( +AcpiExUnsignedIntegerToString ( ACPI_INTEGER Value, NATIVE_CHAR *OutString); @@ -656,7 +709,7 @@ AcpiAmlUnsignedIntegerToString ( */ ACPI_STATUS -AcpiAmlSystemMemorySpaceHandler ( +AcpiExSystemMemorySpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, @@ -665,7 +718,7 @@ AcpiAmlSystemMemorySpaceHandler ( void *RegionContext); ACPI_STATUS -AcpiAmlSystemIoSpaceHandler ( +AcpiExSystemIoSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, @@ -674,7 +727,7 @@ AcpiAmlSystemIoSpaceHandler ( void *RegionContext); ACPI_STATUS -AcpiAmlPciConfigSpaceHandler ( +AcpiExPciConfigSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, @@ -683,7 +736,7 @@ AcpiAmlPciConfigSpaceHandler ( void *RegionContext); ACPI_STATUS -AcpiAmlEmbeddedControllerSpaceHandler ( +AcpiExEmbeddedControllerSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, @@ -692,7 +745,7 @@ AcpiAmlEmbeddedControllerSpaceHandler ( void *RegionContext); ACPI_STATUS -AcpiAmlSmBusSpaceHandler ( +AcpiExSmBusSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, diff --git a/sys/contrib/dev/acpica/aclocal.h b/sys/contrib/dev/acpica/aclocal.h index e021acc..86e28bc 100644 --- a/sys/contrib/dev/acpica/aclocal.h +++ b/sys/contrib/dev/acpica/aclocal.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: aclocal.h - Internal data types used across the ACPI subsystem - * $Revision: 104 $ + * $Revision: 121 $ * *****************************************************************************/ @@ -118,20 +118,20 @@ #define __ACLOCAL_H__ -#define WAIT_FOREVER ((UINT32) -1) +#define WAIT_FOREVER ((UINT32) -1) -typedef void* ACPI_MUTEX; -typedef UINT32 ACPI_MUTEX_HANDLE; +typedef void* ACPI_MUTEX; +typedef UINT32 ACPI_MUTEX_HANDLE; /* Object descriptor types */ -#define ACPI_CACHED_OBJECT 0x11 /* ORed in when object is cached */ -#define ACPI_DESC_TYPE_STATE 0x22 -#define ACPI_DESC_TYPE_WALK 0x44 -#define ACPI_DESC_TYPE_PARSER 0x66 -#define ACPI_DESC_TYPE_INTERNAL 0x88 -#define ACPI_DESC_TYPE_NAMED 0xAA +#define ACPI_CACHED_OBJECT 0x11 /* ORed in when object is cached */ +#define ACPI_DESC_TYPE_STATE 0x22 +#define ACPI_DESC_TYPE_WALK 0x44 +#define ACPI_DESC_TYPE_PARSER 0x66 +#define ACPI_DESC_TYPE_INTERNAL 0x88 +#define ACPI_DESC_TYPE_NAMED 0xAA /***************************************************************************** @@ -143,26 +143,30 @@ typedef UINT32 ACPI_MUTEX_HANDLE; /* * Predefined handles for the mutex objects used within the subsystem - * All mutex objects are automatically created by AcpiCmMutexInitialize. + * 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 also! */ -#define ACPI_MTX_HARDWARE 0 -#define ACPI_MTX_MEMORY 1 -#define ACPI_MTX_CACHES 2 -#define ACPI_MTX_TABLES 3 -#define ACPI_MTX_PARSER 4 -#define ACPI_MTX_DISPATCHER 5 -#define ACPI_MTX_INTERPRETER 6 -#define ACPI_MTX_EXECUTE 7 -#define ACPI_MTX_NAMESPACE 8 -#define ACPI_MTX_EVENTS 9 -#define ACPI_MTX_OP_REGIONS 10 -#define ACPI_MTX_DEBUG_CMD_READY 11 -#define ACPI_MTX_DEBUG_CMD_COMPLETE 12 +#define ACPI_MTX_EXECUTE 0 +#define ACPI_MTX_INTERPRETER 1 +#define ACPI_MTX_PARSER 2 +#define ACPI_MTX_DISPATCHER 3 +#define ACPI_MTX_TABLES 4 +#define ACPI_MTX_OP_REGIONS 5 +#define ACPI_MTX_NAMESPACE 6 +#define ACPI_MTX_EVENTS 7 +#define ACPI_MTX_HARDWARE 8 +#define ACPI_MTX_CACHES 9 +#define ACPI_MTX_MEMORY 10 +#define ACPI_MTX_DEBUG_CMD_COMPLETE 11 +#define ACPI_MTX_DEBUG_CMD_READY 12 -#define MAX_MTX 12 -#define NUM_MTX MAX_MTX+1 +#define MAX_MTX 12 +#define NUM_MTX MAX_MTX+1 #if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) @@ -172,19 +176,19 @@ typedef UINT32 ACPI_MUTEX_HANDLE; static NATIVE_CHAR *AcpiGbl_MutexNames[] = { - "ACPI_MTX_Hardware", - "ACPI_MTX_Memory", - "ACPI_MTX_Caches", - "ACPI_MTX_Tables", + "ACPI_MTX_Execute", + "ACPI_MTX_Interpreter", "ACPI_MTX_Parser", "ACPI_MTX_Dispatcher", - "ACPI_MTX_Interpreter", - "ACPI_MTX_Execute", + "ACPI_MTX_Tables", + "ACPI_MTX_OpRegions", "ACPI_MTX_Namespace", "ACPI_MTX_Events", - "ACPI_MTX_OpRegions", + "ACPI_MTX_Hardware", + "ACPI_MTX_Caches", + "ACPI_MTX_Memory", + "ACPI_MTX_DebugCmdComplete", "ACPI_MTX_DebugCmdReady", - "ACPI_MTX_DebugCmdComplete" }; #endif @@ -197,26 +201,38 @@ typedef struct AcpiMutexInfo { ACPI_MUTEX Mutex; UINT32 UseCount; - BOOLEAN Locked; + UINT32 OwnerId; } ACPI_MUTEX_INFO; +/* This owner ID means that the mutex is not in use (unlocked) */ + +#define ACPI_MUTEX_NOT_ACQUIRED (UINT32) (-1) + /* Lock flag parameter for various interfaces */ -#define ACPI_MTX_DO_NOT_LOCK 0 -#define ACPI_MTX_LOCK 1 +#define ACPI_MTX_DO_NOT_LOCK 0 +#define ACPI_MTX_LOCK 1 -typedef UINT16 ACPI_OWNER_ID; -#define OWNER_TYPE_TABLE 0x0 -#define OWNER_TYPE_METHOD 0x1 -#define FIRST_METHOD_ID 0x0000 -#define FIRST_TABLE_ID 0x8000 +typedef UINT16 ACPI_OWNER_ID; +#define OWNER_TYPE_TABLE 0x0 +#define OWNER_TYPE_METHOD 0x1 +#define FIRST_METHOD_ID 0x0000 +#define FIRST_TABLE_ID 0x8000 /* TBD: [Restructure] get rid of the need for this! */ -#define TABLE_ID_DSDT (ACPI_OWNER_ID) 0x8000 +#define TABLE_ID_DSDT (ACPI_OWNER_ID) 0x8000 + + +/* 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 /***************************************************************************** * @@ -266,13 +282,13 @@ typedef struct acpi_node /* Node flags */ -#define ANOBJ_AML_ATTACHMENT 0x01 -#define ANOBJ_END_OF_PEER_LIST 0x02 -#define ANOBJ_DATA_WIDTH_32 0x04 /* Parent table is 64-bits */ -#define ANOBJ_METHOD_ARG 0x08 -#define ANOBJ_METHOD_LOCAL 0x10 -#define ANOBJ_METHOD_NO_RETVAL 0x20 -#define ANOBJ_METHOD_SOME_NO_RETVAL 0x40 +#define ANOBJ_AML_ATTACHMENT 0x01 +#define ANOBJ_END_OF_PEER_LIST 0x02 +#define ANOBJ_DATA_WIDTH_32 0x04 /* Parent table is 64-bits */ +#define ANOBJ_METHOD_ARG 0x08 +#define ANOBJ_METHOD_LOCAL 0x10 +#define ANOBJ_METHOD_NO_RETVAL 0x20 +#define ANOBJ_METHOD_SOME_NO_RETVAL 0x40 /* @@ -316,19 +332,36 @@ typedef struct /* * Predefined Namespace items */ -#define ACPI_MAX_ADDRESS_SPACE 255 -#define ACPI_NUM_ADDRESS_SPACES 256 - - typedef struct { NATIVE_CHAR *Name; - ACPI_OBJECT_TYPE Type; + ACPI_OBJECT_TYPE8 Type; NATIVE_CHAR *Val; } 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 +{ + NATIVE_CHAR *ExternalName; + NATIVE_CHAR *NextExternalChar; + NATIVE_CHAR *InternalName; + UINT32 Length; + UINT32 NumSegments; + UINT32 NumCarats; + BOOLEAN FullyQualified; + +} ACPI_NAMESTRING_INFO; + + /***************************************************************************** * * Event typedefs and structs @@ -338,19 +371,19 @@ typedef struct /* Status bits. */ -#define ACPI_STATUS_PMTIMER 0x0001 -#define ACPI_STATUS_GLOBAL 0x0020 -#define ACPI_STATUS_POWER_BUTTON 0x0100 -#define ACPI_STATUS_SLEEP_BUTTON 0x0200 -#define ACPI_STATUS_RTC_ALARM 0x0400 +#define ACPI_STATUS_PMTIMER 0x0001 +#define ACPI_STATUS_GLOBAL 0x0020 +#define ACPI_STATUS_POWER_BUTTON 0x0100 +#define ACPI_STATUS_SLEEP_BUTTON 0x0200 +#define ACPI_STATUS_RTC_ALARM 0x0400 /* Enable bits. */ -#define ACPI_ENABLE_PMTIMER 0x0001 -#define ACPI_ENABLE_GLOBAL 0x0020 -#define ACPI_ENABLE_POWER_BUTTON 0x0100 -#define ACPI_ENABLE_SLEEP_BUTTON 0x0200 -#define ACPI_ENABLE_RTC_ALARM 0x0400 +#define ACPI_ENABLE_PMTIMER 0x0001 +#define ACPI_ENABLE_GLOBAL 0x0020 +#define ACPI_ENABLE_POWER_BUTTON 0x0100 +#define ACPI_ENABLE_SLEEP_BUTTON 0x0200 +#define ACPI_ENABLE_RTC_ALARM 0x0400 /* @@ -359,10 +392,10 @@ typedef struct typedef struct { - ADDRESS_SPACE_HANDLER Handler; + ACPI_ADR_SPACE_HANDLER Handler; void *Context; -} ACPI_ADDRESS_SPACE_INFO; +} ACPI_ADR_SPACE_INFO; /* Values and addresses of the GPE registers (both banks) */ @@ -378,8 +411,8 @@ typedef struct } ACPI_GPE_REGISTERS; -#define ACPI_GPE_LEVEL_TRIGGERED 1 -#define ACPI_GPE_EDGE_TRIGGERED 2 +#define ACPI_GPE_LEVEL_TRIGGERED 1 +#define ACPI_GPE_EDGE_TRIGGERED 2 /* Information about each particular GPE level */ @@ -389,7 +422,7 @@ typedef struct UINT8 Type; /* Level or Edge */ ACPI_HANDLE MethodHandle; /* Method handle for direct (fast) execution */ - GPE_HANDLER Handler; /* Address of handler, if any */ + ACPI_GPE_HANDLER Handler; /* Address of handler, if any */ void *Context; /* Context to be passed to handler */ } ACPI_GPE_LEVEL_INFO; @@ -399,7 +432,7 @@ typedef struct typedef struct { - FIXED_EVENT_HANDLER Handler; /* Address of handler. */ + ACPI_EVENT_HANDLER Handler; /* Address of handler. */ void *Context; /* Context to be passed to handler */ } ACPI_FIXED_EVENT_INFO; @@ -423,16 +456,18 @@ typedef struct ****************************************************************************/ -#define CONTROL_NORMAL 0xC0 -#define CONTROL_CONDITIONAL_EXECUTING 0xC1 -#define CONTROL_PREDICATE_EXECUTING 0xC2 -#define CONTROL_PREDICATE_FALSE 0xC3 -#define CONTROL_PREDICATE_TRUE 0xC4 +#define CONTROL_NORMAL 0xC0 +#define CONTROL_CONDITIONAL_EXECUTING 0xC1 +#define CONTROL_PREDICATE_EXECUTING 0xC2 +#define CONTROL_PREDICATE_FALSE 0xC3 +#define CONTROL_PREDICATE_TRUE 0xC4 -/* Forward declaration */ +/* Forward declarations */ struct acpi_walk_state; -struct acpi_parse_obj ; +struct acpi_walk_list; +struct acpi_parse_obj; +struct acpi_obj_mutex; #define ACPI_STATE_COMMON /* Two 32-bit fields and a pointer */\ @@ -492,7 +527,6 @@ typedef struct acpi_control_state /* * Scope state - current scope during namespace lookups */ - typedef struct acpi_scope_state { ACPI_STATE_COMMON @@ -527,6 +561,19 @@ typedef struct acpi_result_values } ACPI_RESULT_VALUES; +/* + * 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_obj *HandlerObj; + +} ACPI_NOTIFY_INFO; + + /* Generic state is union of structs above */ typedef union acpi_gen_state @@ -538,6 +585,7 @@ typedef union acpi_gen_state ACPI_PSCOPE_STATE ParseScope; ACPI_PKG_STATE Pkg; ACPI_RESULT_VALUES Results; + ACPI_NOTIFY_INFO Notify; } ACPI_GENERIC_STATE; @@ -561,19 +609,18 @@ ACPI_STATUS (*ACPI_PARSE_UPWARDS) ( * ****************************************************************************/ +#define ACPI_OP_CLASS_MASK 0x1F +#define ACPI_OP_ARGS_MASK 0x20 +#define ACPI_OP_TYPE_MASK 0xC0 -#define ACPI_OP_CLASS_MASK 0x1F -#define ACPI_OP_ARGS_MASK 0x20 -#define ACPI_OP_TYPE_MASK 0xC0 - -#define ACPI_OP_TYPE_OPCODE 0x00 -#define ACPI_OP_TYPE_ASCII 0x40 -#define ACPI_OP_TYPE_PREFIX 0x80 -#define ACPI_OP_TYPE_UNKNOWN 0xC0 +#define ACPI_OP_TYPE_OPCODE 0x00 +#define ACPI_OP_TYPE_ASCII 0x40 +#define ACPI_OP_TYPE_PREFIX 0x80 +#define ACPI_OP_TYPE_UNKNOWN 0xC0 -#define ACPI_GET_OP_CLASS(a) ((a)->Flags & ACPI_OP_CLASS_MASK) -#define ACPI_GET_OP_ARGS(a) ((a)->Flags & ACPI_OP_ARGS_MASK) -#define ACPI_GET_OP_TYPE(a) ((a)->Flags & ACPI_OP_TYPE_MASK) +#define ACPI_GET_OP_CLASS(a) ((a)->Flags & ACPI_OP_CLASS_MASK) +#define ACPI_GET_OP_ARGS(a) ((a)->Flags & ACPI_OP_ARGS_MASK) +#define ACPI_GET_OP_TYPE(a) ((a)->Flags & ACPI_OP_TYPE_MASK) /* @@ -663,130 +710,6 @@ typedef struct acpi_parse_state /***************************************************************************** * - * 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 NEXT_OP_DOWNWARD 1 -#define NEXT_OP_UPWARD 2 - -#define WALK_NON_METHOD 0 -#define WALK_METHOD 1 -#define WALK_METHOD_RESTART 2 - -typedef struct acpi_walk_state -{ - UINT8 DataType; /* To differentiate various internal objs */\ - ACPI_OWNER_ID OwnerId; /* Owner of objects created during the walk */ - BOOLEAN LastPredicate; /* Result of last predicate */ - UINT8 NextOpInfo; /* Info about NextOp */ - UINT8 NumOperands; /* Stack pointer for Operands[] array */ - UINT8 CurrentResult; /* */ - - struct acpi_walk_state *Next; /* Next WalkState in list */ - ACPI_PARSE_OBJECT *Origin; /* Start of walk [Obsolete] */ - -/* TBD: Obsolete with removal of WALK procedure ? */ - ACPI_PARSE_OBJECT *PrevOp; /* Last op that was processed */ - ACPI_PARSE_OBJECT *NextOp; /* next op to be processed */ - - - ACPI_GENERIC_STATE *Results; /* Stack of accumulated results */ - ACPI_GENERIC_STATE *ControlState; /* List of control states (nested IFs) */ - ACPI_GENERIC_STATE *ScopeInfo; /* Stack of nested scopes */ - ACPI_PARSE_STATE *ParserState; /* Current state of parser */ - UINT8 *AmlLastWhile; - ACPI_OPCODE_INFO *OpInfo; /* Info on current opcode */ - ACPI_PARSE_DOWNWARDS DescendingCallback; - ACPI_PARSE_UPWARDS AscendingCallback; - - union acpi_operand_obj *ReturnDesc; /* Return object, if any */ - union acpi_operand_obj *MethodDesc; /* Method descriptor if running a method */ - struct acpi_node *MethodNode; /* Method Node if running a method */ - ACPI_PARSE_OBJECT *MethodCallOp; /* MethodCall Op if running a method */ - struct acpi_node *MethodCallNode; /* Called method Node*/ - union acpi_operand_obj *Operands[OBJ_NUM_OPERANDS]; /* Operands passed to the interpreter */ - struct acpi_node Arguments[MTH_NUM_ARGS]; /* Control method arguments */ - struct acpi_node LocalVariables[MTH_NUM_LOCALS]; /* Control method locals */ - UINT32 ParseFlags; - UINT8 WalkType; - UINT8 ReturnUsed; - UINT16 Opcode; /* Current AML opcode */ - UINT32 PrevArgTypes; - - /* Debug support */ - - UINT32 MethodBreakpoint; - - -} ACPI_WALK_STATE; - - -/* - * Walk list - head of a tree of walk states. Multiple walk states are created when there - * are nested control methods executing. - */ -typedef struct acpi_walk_list -{ - - ACPI_WALK_STATE *WalkState; - -} ACPI_WALK_LIST; - - -/* Info used by AcpiPsInitObjects */ - -typedef struct acpi_init_walk_info -{ - UINT16 MethodCount; - UINT16 OpRegionCount; - UINT16 FieldCount; - UINT16 OpRegionInit; - UINT16 FieldInit; - UINT16 ObjectCount; - ACPI_TABLE_DESC *TableDesc; - -} ACPI_INIT_WALK_INFO; - - -/* Info used by TBD */ - -typedef struct acpi_device_walk_info -{ - UINT16 DeviceCount; - UINT16 Num_STA; - UINT16 Num_INI; - ACPI_TABLE_DESC *TableDesc; - -} ACPI_DEVICE_WALK_INFO; - - -/* TBD: [Restructure] Merge with struct above */ - -typedef struct acpi_walk_info -{ - UINT32 DebugLevel; - UINT32 OwnerId; - -} ACPI_WALK_INFO; - -typedef struct acpi_get_devices_info -{ - WALK_CALLBACK UserFunction; - void *Context; - NATIVE_CHAR *Hid; - -} ACPI_GET_DEVICES_INFO; - - -/***************************************************************************** - * * Hardware and PNP * ****************************************************************************/ @@ -794,20 +717,20 @@ typedef struct acpi_get_devices_info /* PCI */ -#define PCI_ROOT_HID_STRING "PNP0A03" -#define PCI_ROOT_HID_VALUE 0x030AD041 /* EISAID("PNP0A03") */ +#define PCI_ROOT_HID_STRING "PNP0A03" +#define PCI_ROOT_HID_VALUE 0x030AD041 /* EISAID("PNP0A03") */ /* Sleep states */ -#define SLWA_DEBUG_LEVEL 4 -#define GTS_CALL 0 -#define GTS_WAKE 1 +#define SLWA_DEBUG_LEVEL 4 +#define GTS_CALL 0 +#define GTS_WAKE 1 /* Cx States */ -#define MAX_CX_STATE_LATENCY 0xFFFFFFFF -#define MAX_CX_STATES 4 +#define MAX_CX_STATE_LATENCY 0xFFFFFFFF +#define MAX_CX_STATES 4 /* @@ -816,13 +739,13 @@ typedef struct acpi_get_devices_info * values as they are used in switch statements and offset calculations. */ -#define REGISTER_BLOCK_MASK 0xFF00 /* Register Block Id */ -#define BIT_IN_REGISTER_MASK 0x00FF /* Bit Id in the Register Block Id */ -#define BYTE_IN_REGISTER_MASK 0x00FF /* Register Offset in the Register Block */ +#define REGISTER_BLOCK_MASK 0xFF00 /* Register Block Id */ +#define BIT_IN_REGISTER_MASK 0x00FF /* Bit Id in the Register Block Id */ +#define BYTE_IN_REGISTER_MASK 0x00FF /* Register Offset in the Register Block */ -#define REGISTER_BLOCK_ID(RegId) (RegId & REGISTER_BLOCK_MASK) -#define REGISTER_BIT_ID(RegId) (RegId & BIT_IN_REGISTER_MASK) -#define REGISTER_OFFSET(RegId) (RegId & BYTE_IN_REGISTER_MASK) +#define REGISTER_BLOCK_ID(RegId) (RegId & REGISTER_BLOCK_MASK) +#define REGISTER_BIT_ID(RegId) (RegId & BIT_IN_REGISTER_MASK) +#define REGISTER_OFFSET(RegId) (RegId & BYTE_IN_REGISTER_MASK) /* * Access Rule @@ -837,94 +760,94 @@ typedef struct acpi_get_devices_info /* * Register Block Id */ -#define PM1_STS 0x0100 -#define PM1_EN 0x0200 -#define PM1_CONTROL 0x0300 -#define PM1A_CONTROL 0x0400 -#define PM1B_CONTROL 0x0500 -#define PM2_CONTROL 0x0600 -#define PM_TIMER 0x0700 -#define PROCESSOR_BLOCK 0x0800 -#define GPE0_STS_BLOCK 0x0900 -#define GPE0_EN_BLOCK 0x0A00 -#define GPE1_STS_BLOCK 0x0B00 -#define GPE1_EN_BLOCK 0x0C00 -#define SMI_CMD_BLOCK 0x0D00 +#define PM1_STS 0x0100 +#define PM1_EN 0x0200 +#define PM1_CONTROL 0x0300 +#define PM1A_CONTROL 0x0400 +#define PM1B_CONTROL 0x0500 +#define PM2_CONTROL 0x0600 +#define PM_TIMER 0x0700 +#define PROCESSOR_BLOCK 0x0800 +#define GPE0_STS_BLOCK 0x0900 +#define GPE0_EN_BLOCK 0x0A00 +#define GPE1_STS_BLOCK 0x0B00 +#define GPE1_EN_BLOCK 0x0C00 +#define SMI_CMD_BLOCK 0x0D00 /* * Address space bitmasks for mmio or io spaces */ -#define SMI_CMD_ADDRESS_SPACE 0x01 -#define PM1_BLK_ADDRESS_SPACE 0x02 -#define PM2_CNT_BLK_ADDRESS_SPACE 0x04 -#define PM_TMR_BLK_ADDRESS_SPACE 0x08 -#define GPE0_BLK_ADDRESS_SPACE 0x10 -#define GPE1_BLK_ADDRESS_SPACE 0x20 +#define SMI_CMD_ADDRESS_SPACE 0x01 +#define PM1_BLK_ADDRESS_SPACE 0x02 +#define PM2_CNT_BLK_ADDRESS_SPACE 0x04 +#define PM_TMR_BLK_ADDRESS_SPACE 0x08 +#define GPE0_BLK_ADDRESS_SPACE 0x10 +#define GPE1_BLK_ADDRESS_SPACE 0x20 /* * Control bit definitions */ -#define TMR_STS (PM1_STS | 0x01) -#define BM_STS (PM1_STS | 0x02) -#define GBL_STS (PM1_STS | 0x03) -#define PWRBTN_STS (PM1_STS | 0x04) -#define SLPBTN_STS (PM1_STS | 0x05) -#define RTC_STS (PM1_STS | 0x06) -#define WAK_STS (PM1_STS | 0x07) - -#define TMR_EN (PM1_EN | 0x01) - /* no BM_EN */ -#define GBL_EN (PM1_EN | 0x03) -#define PWRBTN_EN (PM1_EN | 0x04) -#define SLPBTN_EN (PM1_EN | 0x05) -#define RTC_EN (PM1_EN | 0x06) -#define WAK_EN (PM1_EN | 0x07) - -#define SCI_EN (PM1_CONTROL | 0x01) -#define BM_RLD (PM1_CONTROL | 0x02) -#define GBL_RLS (PM1_CONTROL | 0x03) -#define SLP_TYPE_A (PM1_CONTROL | 0x04) -#define SLP_TYPE_B (PM1_CONTROL | 0x05) -#define SLP_EN (PM1_CONTROL | 0x06) - -#define ARB_DIS (PM2_CONTROL | 0x01) - -#define TMR_VAL (PM_TIMER | 0x01) - -#define GPE0_STS (GPE0_STS_BLOCK | 0x01) -#define GPE0_EN (GPE0_EN_BLOCK | 0x01) - -#define GPE1_STS (GPE1_STS_BLOCK | 0x01) -#define GPE1_EN (GPE1_EN_BLOCK | 0x01) - - -#define TMR_STS_MASK 0x0001 -#define BM_STS_MASK 0x0010 -#define GBL_STS_MASK 0x0020 -#define PWRBTN_STS_MASK 0x0100 -#define SLPBTN_STS_MASK 0x0200 -#define RTC_STS_MASK 0x0400 -#define WAK_STS_MASK 0x8000 - -#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK \ - | PWRBTN_STS_MASK | SLPBTN_STS_MASK \ - | RTC_STS_MASK | WAK_STS_MASK) - -#define TMR_EN_MASK 0x0001 -#define GBL_EN_MASK 0x0020 -#define PWRBTN_EN_MASK 0x0100 -#define SLPBTN_EN_MASK 0x0200 -#define RTC_EN_MASK 0x0400 - -#define SCI_EN_MASK 0x0001 -#define BM_RLD_MASK 0x0002 -#define GBL_RLS_MASK 0x0004 -#define SLP_TYPE_X_MASK 0x1C00 -#define SLP_EN_MASK 0x2000 - -#define ARB_DIS_MASK 0x0001 -#define TMR_VAL_MASK 0xFFFFFFFF +#define TMR_STS (PM1_STS | 0x01) +#define BM_STS (PM1_STS | 0x02) +#define GBL_STS (PM1_STS | 0x03) +#define PWRBTN_STS (PM1_STS | 0x04) +#define SLPBTN_STS (PM1_STS | 0x05) +#define RTC_STS (PM1_STS | 0x06) +#define WAK_STS (PM1_STS | 0x07) + +#define TMR_EN (PM1_EN | 0x01) + /* no BM_EN */ +#define GBL_EN (PM1_EN | 0x03) +#define PWRBTN_EN (PM1_EN | 0x04) +#define SLPBTN_EN (PM1_EN | 0x05) +#define RTC_EN (PM1_EN | 0x06) +#define WAK_EN (PM1_EN | 0x07) + +#define SCI_EN (PM1_CONTROL | 0x01) +#define BM_RLD (PM1_CONTROL | 0x02) +#define GBL_RLS (PM1_CONTROL | 0x03) +#define SLP_TYPE_A (PM1_CONTROL | 0x04) +#define SLP_TYPE_B (PM1_CONTROL | 0x05) +#define SLP_EN (PM1_CONTROL | 0x06) + +#define ARB_DIS (PM2_CONTROL | 0x01) + +#define TMR_VAL (PM_TIMER | 0x01) + +#define GPE0_STS (GPE0_STS_BLOCK | 0x01) +#define GPE0_EN (GPE0_EN_BLOCK | 0x01) + +#define GPE1_STS (GPE1_STS_BLOCK | 0x01) +#define GPE1_EN (GPE1_EN_BLOCK | 0x01) + + +#define TMR_STS_MASK 0x0001 +#define BM_STS_MASK 0x0010 +#define GBL_STS_MASK 0x0020 +#define PWRBTN_STS_MASK 0x0100 +#define SLPBTN_STS_MASK 0x0200 +#define RTC_STS_MASK 0x0400 +#define WAK_STS_MASK 0x8000 + +#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK \ + | PWRBTN_STS_MASK | SLPBTN_STS_MASK \ + | RTC_STS_MASK | WAK_STS_MASK) + +#define TMR_EN_MASK 0x0001 +#define GBL_EN_MASK 0x0020 +#define PWRBTN_EN_MASK 0x0100 +#define SLPBTN_EN_MASK 0x0200 +#define RTC_EN_MASK 0x0400 + +#define SCI_EN_MASK 0x0001 +#define BM_RLD_MASK 0x0002 +#define GBL_RLS_MASK 0x0004 +#define SLP_TYPE_X_MASK 0x1C00 +#define SLP_EN_MASK 0x2000 + +#define ARB_DIS_MASK 0x0001 +#define TMR_VAL_MASK 0xFFFFFFFF #define GPE0_STS_MASK #define GPE0_EN_MASK @@ -933,55 +856,69 @@ typedef struct acpi_get_devices_info #define GPE1_EN_MASK -#define ACPI_READ 1 -#define ACPI_WRITE 2 +#define ACPI_READ 1 +#define ACPI_WRITE 2 + +/***************************************************************************** + * + * Resource descriptors + * + ****************************************************************************/ -/* Plug and play */ -/* Pnp and ACPI data */ +/* ResourceType values */ -#define VERSION_NO 0x01 -#define LOGICAL_DEVICE_ID 0x02 -#define COMPATIBLE_DEVICE_ID 0x03 -#define IRQ_FORMAT 0x04 -#define DMA_FORMAT 0x05 -#define START_DEPENDENT_TAG 0x06 -#define END_DEPENDENT_TAG 0x07 -#define IO_PORT_DESCRIPTOR 0x08 -#define FIXED_LOCATION_IO_DESCRIPTOR 0x09 -#define RESERVED_TYPE0 0x0A -#define RESERVED_TYPE1 0x0B -#define RESERVED_TYPE2 0x0C -#define RESERVED_TYPE3 0x0D -#define SMALL_VENDOR_DEFINED 0x0E -#define END_TAG 0x0F +#define RESOURCE_TYPE_MEMORY_RANGE 0 +#define RESOURCE_TYPE_IO_RANGE 1 +#define RESOURCE_TYPE_BUS_NUMBER_RANGE 2 -/* Pnp and ACPI data */ +/* Resource descriptor types and masks */ -#define MEMORY_RANGE_24 0x81 -#define ISA_MEMORY_RANGE 0x81 -#define LARGE_VENDOR_DEFINED 0x84 -#define EISA_MEMORY_RANGE 0x85 -#define MEMORY_RANGE_32 0x85 -#define FIXED_EISA_MEMORY_RANGE 0x86 -#define FIXED_MEMORY_RANGE_32 0x86 +#define RESOURCE_DESC_TYPE_LARGE 0x80 +#define RESOURCE_DESC_TYPE_SMALL 0x00 -/* ACPI only data */ +#define RESOURCE_DESC_TYPE_MASK 0x80 +#define RESOURCE_DESC_SMALL_MASK 0x78 /* Only bits 6:3 contain the type */ -#define DWORD_ADDRESS_SPACE 0x87 -#define WORD_ADDRESS_SPACE 0x88 -#define EXTENDED_IRQ 0x89 -/* MUST HAVES */ +/* + * Small resource descriptor types + * Note: The 3 length bits (2:0) must be zero + */ +#define RESOURCE_DESC_IRQ_FORMAT 0x20 +#define RESOURCE_DESC_DMA_FORMAT 0x28 +#define RESOURCE_DESC_START_DEPENDENT 0x30 +#define RESOURCE_DESC_END_DEPENDENT 0x38 +#define RESOURCE_DESC_IO_PORT 0x40 +#define RESOURCE_DESC_FIXED_IO_PORT 0x48 +#define RESOURCE_DESC_SMALL_VENDOR 0x70 +#define RESOURCE_DESC_END_TAG 0x78 + +/* + * Large resource descriptor types + */ + +#define RESOURCE_DESC_MEMORY_24 0x81 +#define RESOURCE_DESC_GENERAL_REGISTER 0x82 +#define RESOURCE_DESC_LARGE_VENDOR 0x84 +#define RESOURCE_DESC_MEMORY_32 0x85 +#define RESOURCE_DESC_FIXED_MEMORY_32 0x86 +#define RESOURCE_DESC_DWORD_ADDRESS_SPACE 0x87 +#define RESOURCE_DESC_WORD_ADDRESS_SPACE 0x88 +#define RESOURCE_DESC_EXTENDED_XRUPT 0x89 +#define RESOURCE_DESC_QWORD_ADDRESS_SPACE 0x8A -#define DEVICE_ID_LENGTH 0x09 + +/* String version of device HIDs and UIDs */ + +#define ACPI_DEVICE_ID_LENGTH 0x09 typedef struct { - NATIVE_CHAR Buffer[DEVICE_ID_LENGTH]; + NATIVE_CHAR Buffer[ACPI_DEVICE_ID_LENGTH]; -} DEVICE_ID; +} ACPI_DEVICE_ID; /***************************************************************************** @@ -995,22 +932,22 @@ typedef struct #ifdef ACPI_DEBUG -#define MEM_MALLOC 0 -#define MEM_CALLOC 1 -#define MAX_MODULE_NAME 16 +#define MEM_MALLOC 0 +#define MEM_CALLOC 1 +#define MAX_MODULE_NAME 16 -typedef struct AllocationInfo +typedef struct AcpiAllocationInfo { - struct AllocationInfo *Previous; - struct AllocationInfo *Next; - void *Address; - UINT32 Size; - UINT32 Component; - UINT32 Line; - NATIVE_CHAR Module[MAX_MODULE_NAME]; - UINT8 AllocType; - -} ALLOCATION_INFO; + struct AcpiAllocationInfo *Previous; + struct AcpiAllocationInfo *Next; + void *Address; + UINT32 Size; + UINT32 Component; + UINT32 Line; + NATIVE_CHAR Module[MAX_MODULE_NAME]; + UINT8 AllocType; + +} ACPI_ALLOCATION_INFO; #endif diff --git a/sys/contrib/dev/acpica/acmacros.h b/sys/contrib/dev/acpica/acmacros.h index f30933f..55e6064 100644 --- a/sys/contrib/dev/acpica/acmacros.h +++ b/sys/contrib/dev/acpica/acmacros.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acmacros.h - C macros for the entire subsystem. - * $Revision: 62 $ + * $Revision: 72 $ * *****************************************************************************/ @@ -179,12 +179,18 @@ #define ACPI_STORE_ADDRESS(a,b) ((a)=(b)) #define ACPI_VALID_ADDRESS(a) (a) #endif + /* * Extract a byte of data using a pointer. Any more than a byte and we * get into potential aligment issues -- see the STORE macros below */ #define GET8(addr) (*(UINT8*)(addr)) +/* Pointer arithmetic */ + + +#define POINTER_ADD(t,a,b) (t *) ((NATIVE_UINT)(a) + (NATIVE_UINT)(b)) +#define POINTER_DIFF(a,b) ((UINT32) ((NATIVE_UINT)(a) - (NATIVE_UINT)(b))) /* * Macros for moving data around to/from buffers that are possibly unaligned. @@ -199,6 +205,7 @@ #define MOVE_UNALIGNED16_TO_16(d,s) *(UINT16*)(d) = *(UINT16*)(s) #define MOVE_UNALIGNED32_TO_32(d,s) *(UINT32*)(d) = *(UINT32*)(s) #define MOVE_UNALIGNED16_TO_32(d,s) *(UINT32*)(d) = *(UINT16*)(s) +#define MOVE_UNALIGNED64_TO_64(d,s) *(UINT64*)(d) = *(UINT64*)(s) #else /* @@ -217,6 +224,15 @@ #define MOVE_UNALIGNED16_TO_32(d,s) {(*(UINT32*)(d)) = 0; MOVE_UNALIGNED16_TO_16(d,s);} +#define MOVE_UNALIGNED64_TO_64(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\ + ((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];\ + ((UINT8 *)(d))[2] = ((UINT8 *)(s))[2];\ + ((UINT8 *)(d))[3] = ((UINT8 *)(s))[3];\ + ((UINT8 *)(d))[4] = ((UINT8 *)(s))[4];\ + ((UINT8 *)(d))[5] = ((UINT8 *)(s))[5];\ + ((UINT8 *)(d))[6] = ((UINT8 *)(s))[6];\ + ((UINT8 *)(d))[7] = ((UINT8 *)(s))[7];} + #endif @@ -268,8 +284,26 @@ #define ROUND_PTR_UP_TO_4(a,b) ((b *)(((NATIVE_UINT)(a) + 3) & ~3)) #define ROUND_PTR_UP_TO_8(a,b) ((b *)(((NATIVE_UINT)(a) + 7) & ~7)) +#define ROUND_BITS_UP_TO_BYTES(a) DIV_8((a) + 7) +#define ROUND_BITS_DOWN_TO_BYTES(a) DIV_8((a)) + #define ROUND_UP_TO_1K(a) (((a) + 1023) >> 10) +/* Generic (non-power-of-two) rounding */ + +#define ROUND_UP_TO(value,boundary) (((value) + ((boundary)-1)) / (boundary)) + +/* + * 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 MASK_BITS_ABOVE(position) (~(((UINT32)(-1)) << ((UINT32) (position)))) +#define MASK_BITS_BELOW(position) (((UINT32)(-1)) << ((UINT32) (position))) + #ifdef DEBUG_ASSERT #undef DEBUG_ASSERT #endif @@ -313,6 +347,10 @@ #define IS_SINGLE_TABLE(x) (((x) & 0x01) == ACPI_TABLE_SINGLE ? 1 : 0) +/* Check if ACPI has been initialized properly */ + +#define ACPI_IS_INITIALIZATION_COMPLETE(s) {if (AcpiGbl_RootNode) s = AE_OK; else s=AE_NO_NAMESPACE;} + /* * Macro to check if a pointer is within an ACPI table. * Parameter (a) is the pointer to check. Parameter (b) must be defined @@ -367,6 +405,26 @@ /* + * Build a GAS structure from earlier ACPI table entries (V1.0 and 0.71 extensions) + * + * 1) Address space + * 2) Length in bytes -- convert to length in bits + * 3) Bit offset is zero + * 4) Reserved field is zero + * 5) Expand address to 64 bits + */ +#define ASL_BUILD_GAS_FROM_ENTRY(a,b,c,d) {a.AddressSpaceId = (UINT8) d;\ + a.RegisterBitWidth = (UINT8) MUL_8 (b);\ + a.RegisterBitOffset = 0;\ + a.Reserved = 0;\ + ACPI_STORE_ADDRESS (a.Address,c);} + +/* ACPI V1.0 entries -- address space is always I/O */ + +#define ASL_BUILD_GAS_FROM_V1_ENTRY(a,b,c) ASL_BUILD_GAS_FROM_ENTRY(a,b,c,ACPI_ADR_SPACE_SYSTEM_IO) + + +/* * Reporting macros that are never compiled out */ @@ -409,7 +467,7 @@ /* Buffer dump macros */ -#define DUMP_BUFFER(a,b) AcpiCmDumpBuffer((UINT8 *)a,b,DB_BYTE_DISPLAY,_COMPONENT) +#define DUMP_BUFFER(a,b) AcpiUtDumpBuffer((UINT8 *)a,b,DB_BYTE_DISPLAY,_COMPONENT) /* * Debug macros that are conditionally compiled @@ -425,6 +483,7 @@ * as a local string ("_ProcName) so that it can be also used by the function exit macros below. */ +#define PROC_NAME(a) char * _ProcName = a; #define FUNCTION_TRACE(a) char * _ProcName = a;\ FunctionTrace(_THIS_MODULE,__LINE__,_COMPONENT,a) #define FUNCTION_TRACE_PTR(a,b) char * _ProcName = a;\ @@ -442,7 +501,7 @@ */ #define return_VOID {FunctionExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName);return;} #define return_ACPI_STATUS(s) {FunctionStatusExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,s);return(s);} -#define return_VALUE(s) {FunctionValueExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,(ACPI_INTEGER)s);return(s);} +#define return_VALUE(s) {FunctionValueExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,s);return(s);} #define return_PTR(s) {FunctionPtrExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,(UINT8 *)s);return(s);} @@ -459,8 +518,8 @@ /* Stack and buffer dumping */ -#define DUMP_STACK_ENTRY(a) AcpiAmlDumpOperand(a) -#define DUMP_OPERANDS(a,b,c,d,e) AcpiAmlDumpOperands(a,b,c,d,e,_THIS_MODULE,__LINE__) +#define DUMP_STACK_ENTRY(a) AcpiExDumpOperand(a) +#define DUMP_OPERANDS(a,b,c,d,e) AcpiExDumpOperands(a,b,c,d,e,_THIS_MODULE,__LINE__) #define DUMP_ENTRY(a,b) AcpiNsDumpEntry (a,b) @@ -495,6 +554,12 @@ DebugPrintRaw PARAM_LIST(fp);\ BREAK_ON_ERROR(lvl);} +#define DEBUG_PRINTP(lvl,fp) TEST_DEBUG_SWITCH(lvl) {\ + DebugPrintPrefix (_THIS_MODULE,__LINE__);\ + DebugPrintRaw ("%s: ",_ProcName);\ + DebugPrintRaw PARAM_LIST(fp);\ + BREAK_ON_ERROR(lvl);} + #define DEBUG_PRINT_RAW(lvl,fp) TEST_DEBUG_SWITCH(lvl) {\ DebugPrintRaw PARAM_LIST(fp);} @@ -522,6 +587,7 @@ #define DEBUG_DEFINE(a) #define DEBUG_ONLY_MEMBERS(a) +#define PROC_NAME(a) #define FUNCTION_TRACE(a) #define FUNCTION_TRACE_PTR(a,b) #define FUNCTION_TRACE_U32(a,b) @@ -536,6 +602,7 @@ #define DUMP_PATHNAME(a,b,c,d) #define DUMP_RESOURCE_LIST(a) #define DEBUG_PRINT(l,f) +#define DEBUG_PRINTP(l,f) #define DEBUG_PRINT_RAW(l,f) #define BREAK_MSG(a) @@ -589,4 +656,73 @@ #endif +/* + * Memory allocation tracking (DEBUG ONLY) + */ + +#ifndef ACPI_DEBUG_TRACK_ALLOCATIONS + +#define AcpiUtAddElementToAllocList(a,b,c,d,e,f) +#define AcpiUtDeleteElementFromAllocList(a,b,c,d) +#define AcpiUtDumpCurrentAllocations(a,b) +#define AcpiUtDumpAllocationInfo() + +#define DECREMENT_OBJECT_METRICS(a) +#define INCREMENT_OBJECT_METRICS(a) +#define INITIALIZE_ALLOCATION_METRICS() +#define DECREMENT_NAME_TABLE_METRICS(a) +#define INCREMENT_NAME_TABLE_METRICS(a) + +#else + +#define INITIALIZE_ALLOCATION_METRICS() \ + AcpiGbl_CurrentObjectCount = 0; \ + AcpiGbl_CurrentObjectSize = 0; \ + AcpiGbl_RunningObjectCount = 0; \ + AcpiGbl_RunningObjectSize = 0; \ + AcpiGbl_MaxConcurrentObjectCount = 0; \ + AcpiGbl_MaxConcurrentObjectSize = 0; \ + AcpiGbl_CurrentAllocSize = 0; \ + AcpiGbl_CurrentAllocCount = 0; \ + AcpiGbl_RunningAllocSize = 0; \ + AcpiGbl_RunningAllocCount = 0; \ + AcpiGbl_MaxConcurrentAllocSize = 0; \ + AcpiGbl_MaxConcurrentAllocCount = 0; \ + AcpiGbl_CurrentNodeCount = 0; \ + AcpiGbl_CurrentNodeSize = 0; \ + AcpiGbl_MaxConcurrentNodeCount = 0 + + +#define DECREMENT_OBJECT_METRICS(a) \ + AcpiGbl_CurrentObjectCount--; \ + AcpiGbl_CurrentObjectSize -= a + +#define INCREMENT_OBJECT_METRICS(a) \ + AcpiGbl_CurrentObjectCount++; \ + AcpiGbl_RunningObjectCount++; \ + if (AcpiGbl_MaxConcurrentObjectCount < AcpiGbl_CurrentObjectCount) \ + { \ + AcpiGbl_MaxConcurrentObjectCount = AcpiGbl_CurrentObjectCount; \ + } \ + AcpiGbl_RunningObjectSize += a; \ + AcpiGbl_CurrentObjectSize += a; \ + if (AcpiGbl_MaxConcurrentObjectSize < AcpiGbl_CurrentObjectSize) \ + { \ + AcpiGbl_MaxConcurrentObjectSize = AcpiGbl_CurrentObjectSize; \ + } + +#define DECREMENT_NAME_TABLE_METRICS(a) \ + AcpiGbl_CurrentNodeCount--; \ + AcpiGbl_CurrentNodeSize -= (a) + +#define INCREMENT_NAME_TABLE_METRICS(a) \ + AcpiGbl_CurrentNodeCount++; \ + AcpiGbl_CurrentNodeSize+= (a); \ + if (AcpiGbl_MaxConcurrentNodeCount < AcpiGbl_CurrentNodeCount) \ + { \ + AcpiGbl_MaxConcurrentNodeCount = AcpiGbl_CurrentNodeCount; \ + } +#endif /* ACPI_DEBUG_TRACK_ALLOCATIONS */ + + #endif /* ACMACROS_H */ diff --git a/sys/contrib/dev/acpica/acnamesp.h b/sys/contrib/dev/acpica/acnamesp.h index 7302295..5554a81 100644 --- a/sys/contrib/dev/acpica/acnamesp.h +++ b/sys/contrib/dev/acpica/acnamesp.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acnamesp.h - Namespace subcomponent prototypes and defines - * $Revision: 103 $ + * $Revision: 106 $ * *****************************************************************************/ @@ -185,18 +185,18 @@ AcpiNsInitOneObject ( ACPI_STATUS AcpiNsWalkNamespace ( - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, ACPI_HANDLE StartObject, UINT32 MaxDepth, BOOLEAN UnlockBeforeCallback, - WALK_CALLBACK UserFunction, + ACPI_WALK_CALLBACK UserFunction, void *Context, void **ReturnValue); ACPI_NAMESPACE_NODE * AcpiNsGetNextObject ( - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, ACPI_NAMESPACE_NODE *Parent, ACPI_NAMESPACE_NODE *Child); @@ -241,7 +241,7 @@ ACPI_STATUS AcpiNsLookup ( ACPI_GENERIC_STATE *ScopeInfo, NATIVE_CHAR *Name, - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, OPERATING_MODE InterpreterMode, UINT32 Flags, ACPI_WALK_STATE *WalkState, @@ -314,7 +314,7 @@ AcpiNsDumpRootDevices ( void AcpiNsDumpObjects ( - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, UINT32 MaxDepth, UINT32 OwnderId, ACPI_HANDLE StartHandle); @@ -374,7 +374,7 @@ AcpiNsExistDownstreamSibling ( UINT32 AcpiNsOpensScope ( - OBJECT_TYPE_INTERNAL Type); + ACPI_OBJECT_TYPE8 Type); NATIVE_CHAR * AcpiNsGetTablePathname ( @@ -395,12 +395,6 @@ AcpiNsPatternMatch ( ACPI_NAMESPACE_NODE *ObjNode, NATIVE_CHAR *SearchFor); -ACPI_STATUS -AcpiNsNameCompare ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); ACPI_STATUS AcpiNsGetNode ( @@ -421,14 +415,7 @@ ACPI_STATUS AcpiNsAttachObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *Object, - OBJECT_TYPE_INTERNAL Type); - - -void * -AcpiNsCompareValue ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *ObjDesc); + ACPI_OBJECT_TYPE8 Type); /* @@ -441,7 +428,7 @@ AcpiNsSearchAndEnter ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *Node, OPERATING_MODE InterpreterMode, - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, UINT32 Flags, ACPI_NAMESPACE_NODE **RetNode); @@ -449,7 +436,7 @@ ACPI_STATUS AcpiNsSearchNode ( UINT32 EntryName, ACPI_NAMESPACE_NODE *Node, - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, ACPI_NAMESPACE_NODE **RetNode); void @@ -457,7 +444,7 @@ AcpiNsInstallNode ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *ParentNode, /* Parent */ ACPI_NAMESPACE_NODE *Node, /* New Child*/ - OBJECT_TYPE_INTERNAL Type); + ACPI_OBJECT_TYPE8 Type); /* @@ -472,17 +459,25 @@ BOOLEAN AcpiNsValidPathSeparator ( NATIVE_CHAR Sep); -OBJECT_TYPE_INTERNAL +ACPI_OBJECT_TYPE8 AcpiNsGetType ( - ACPI_HANDLE ObjHandle); + ACPI_NAMESPACE_NODE *Node); void * AcpiNsGetAttachedObject ( - ACPI_HANDLE ObjHandle); + ACPI_NAMESPACE_NODE *Node); UINT32 AcpiNsLocal ( - OBJECT_TYPE_INTERNAL Type); + ACPI_OBJECT_TYPE8 Type); + +ACPI_STATUS +AcpiNsBuildInternalName ( + ACPI_NAMESTRING_INFO *Info); + +ACPI_STATUS +AcpiNsGetInternalNameLength ( + ACPI_NAMESTRING_INFO *Info); ACPI_STATUS AcpiNsInternalizeName ( diff --git a/sys/contrib/dev/acpica/acobject.h b/sys/contrib/dev/acpica/acobject.h index d873b11..104644d 100644 --- a/sys/contrib/dev/acpica/acobject.h +++ b/sys/contrib/dev/acpica/acobject.h @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only) - * $Revision: 78 $ + * $Revision: 89 $ * *****************************************************************************/ @@ -149,7 +149,7 @@ */ -#define ACPI_OBJECT_COMMON_HEADER /* 32-bits plus 8-bit flag */\ +#define ACPI_OBJECT_COMMON_HEADER /* SIZE/ALIGNMENT: 32-bits plus trailing 8-bit flag */\ UINT8 DataType; /* To differentiate various internal objs */\ UINT8 Type; /* ACPI_OBJECT_TYPE */\ UINT16 ReferenceCount; /* For object deletion management */\ @@ -164,16 +164,27 @@ /* * 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 /* Three 32-bit values plus 8*/\ - UINT8 Granularity;\ - UINT16 Length; \ - UINT32 Offset; /* Byte offset within containing object */\ - UINT8 BitOffset; /* Bit offset within min read/write data unit */\ - UINT8 Access; /* AccessType */\ - UINT8 LockRule;\ - UINT8 UpdateRule;\ - UINT8 AccessAttribute; +#define ACPI_COMMON_FIELD_INFO /* SIZE/ALIGNMENT: 24 bits + three 32-bit values */\ + UINT8 AccessFlags;\ + UINT16 BitLength; /* Length of field in bits */\ + UINT32 BaseByteOffset; /* Byte offset within containing object */\ + UINT8 AccessBitWidth; /* Read/Write size in bits (from ASL AccessType)*/\ + UINT8 AccessByteWidth; /* Read/Write size in bytes */\ + UINT8 UpdateRule; /* How neighboring field bits are handled */\ + UINT8 LockRule; /* Global Lock: 1 = "Must Lock" */\ + UINT8 StartFieldBitOffset;/* Bit offset within first field datum (0-63) */\ + UINT8 DatumValidBits; /* Valid bit in first "Field datum" */\ + UINT8 EndFieldValidBits; /* Valid bits in the last "field datum" */\ + UINT8 EndBufferValidBits; /* Valid bits in the last "buffer datum" */\ + UINT32 Value; /* Value to store into the Bank or Index register */ + + +/* Access flag bits */ + +#define AFIELD_SINGLE_DATUM 0x1 /****************************************************************************** @@ -212,7 +223,7 @@ typedef struct /* STRING - has length and pointer - Null terminated, ASCII chara ACPI_OBJECT_COMMON_HEADER UINT32 Length; - NATIVE_CHAR *Pointer; /* String value in AML stream or in allocated space */ + NATIVE_CHAR *Pointer; /* String value in AML stream or in allocated space */ } ACPI_OBJECT_STRING; @@ -222,7 +233,7 @@ typedef struct /* BUFFER - has length and pointer - not null terminated */ ACPI_OBJECT_COMMON_HEADER UINT32 Length; - UINT8 *Pointer; /* points to the buffer in allocated space */ + UINT8 *Pointer; /* points to the buffer in allocated space */ } ACPI_OBJECT_BUFFER; @@ -231,27 +242,14 @@ typedef struct /* PACKAGE - has count, elements, next element */ { ACPI_OBJECT_COMMON_HEADER - UINT32 Count; /* # of elements in package */ + UINT32 Count; /* # of elements in package */ - union acpi_operand_obj **Elements; /* Array of pointers to AcpiObjects */ - union acpi_operand_obj **NextElement; /* used only while initializing */ + union acpi_operand_obj **Elements; /* Array of pointers to AcpiObjects */ + union acpi_operand_obj **NextElement; /* used only while initializing */ } ACPI_OBJECT_PACKAGE; -typedef struct /* FIELD UNIT */ -{ - ACPI_OBJECT_COMMON_HEADER - - ACPI_COMMON_FIELD_INFO - - union acpi_operand_obj *Extra; /* Pointer to executable AML (in field definition) */ - ACPI_NAMESPACE_NODE *Node; /* containing object */ - union acpi_operand_obj *Container; /* Containing object (Buffer) */ - -} ACPI_OBJECT_FIELD_UNIT; - - typedef struct /* DEVICE - has handle and notification handler/context */ { ACPI_OBJECT_COMMON_HEADER @@ -266,7 +264,6 @@ typedef struct /* DEVICE - has handle and notification handler/context */ typedef struct /* EVENT */ { ACPI_OBJECT_COMMON_HEADER - void *Semaphore; } ACPI_OBJECT_EVENT; @@ -292,12 +289,16 @@ typedef struct /* METHOD */ } ACPI_OBJECT_METHOD; -typedef struct /* MUTEX */ +typedef struct acpi_obj_mutex /* MUTEX */ { ACPI_OBJECT_COMMON_HEADER UINT16 SyncLevel; + UINT16 AcquisitionDepth; void *Semaphore; + void *Owner; + union acpi_operand_obj *Prev; /* Link for list of acquired mutexes */ + union acpi_operand_obj *Next; /* Link for list of acquired mutexes */ } ACPI_OBJECT_MUTEX; @@ -358,57 +359,78 @@ typedef struct /* THERMAL ZONE - has Handle and Handler/Context */ /* - * Internal types + * Fields. All share a common header/info field. */ - -typedef struct /* FIELD */ +typedef struct /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */ { ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO + union acpi_operand_obj *RegionObj; /* Containing Operation Region object */ + /* (REGION/BANK fields only) */ +} ACPI_OBJECT_FIELD_COMMON; - union acpi_operand_obj *Container; /* Containing object */ -} ACPI_OBJECT_FIELD; +typedef struct /* REGION FIELD */ +{ + ACPI_OBJECT_COMMON_HEADER + ACPI_COMMON_FIELD_INFO + union acpi_operand_obj *RegionObj; /* Containing OpRegion object */ + +} ACPI_OBJECT_REGION_FIELD; typedef struct /* BANK FIELD */ { ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO - UINT32 Value; /* Value to store into BankSelect */ - ACPI_HANDLE BankSelect; /* Bank select register */ - union acpi_operand_obj *Container; /* Containing object */ + union acpi_operand_obj *RegionObj; /* Containing OpRegion object */ + union acpi_operand_obj *BankRegisterObj; /* BankSelect Register object */ } ACPI_OBJECT_BANK_FIELD; typedef struct /* INDEX FIELD */ { + ACPI_OBJECT_COMMON_HEADER + ACPI_COMMON_FIELD_INFO + /* - * No container pointer needed since the index and data register definitions - * will define how to access the respective registers + * No "RegionObj" pointer needed since the Index and Data registers + * are each field definitions unto themselves. */ - ACPI_OBJECT_COMMON_HEADER + union acpi_operand_obj *IndexObj; /* Index register */ + union acpi_operand_obj *DataObj; /* Data register */ + + +} ACPI_OBJECT_INDEX_FIELD; + +/* The BufferField is different in that it is part of a Buffer, not an OpRegion */ + +typedef struct /* BUFFER FIELD */ +{ + ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO - UINT32 Value; /* Value to store into Index register */ - ACPI_HANDLE Index; /* Index register */ - ACPI_HANDLE Data; /* Data register */ + union acpi_operand_obj *Extra; /* Pointer to executable AML (in field definition) */ + ACPI_NAMESPACE_NODE *Node; /* Parent (containing) object node */ + union acpi_operand_obj *BufferObj; /* Containing Buffer object */ + +} ACPI_OBJECT_BUFFER_FIELD; -} ACPI_OBJECT_INDEX_FIELD; +/* + * Handlers + */ typedef struct /* NOTIFY HANDLER */ { ACPI_OBJECT_COMMON_HEADER ACPI_NAMESPACE_NODE *Node; /* Parent device */ - NOTIFY_HANDLER Handler; + ACPI_NOTIFY_HANDLER Handler; void *Context; } ACPI_OBJECT_NOTIFY_HANDLER; @@ -425,11 +447,11 @@ typedef struct /* ADDRESS HANDLER */ UINT8 SpaceId; UINT16 Hflags; - ADDRESS_SPACE_HANDLER Handler; + ACPI_ADR_SPACE_HANDLER Handler; ACPI_NAMESPACE_NODE *Node; /* Parent device */ void *Context; - ADDRESS_SPACE_SETUP Setup; + ACPI_ADR_SPACE_SETUP Setup; union acpi_operand_obj *RegionList; /* regions using this handler */ union acpi_operand_obj *Next; @@ -446,7 +468,7 @@ typedef struct /* Reference - Local object type */ ACPI_OBJECT_COMMON_HEADER UINT8 TargetType; /* Used for IndexOp */ - UINT16 OpCode; + UINT16 Opcode; UINT32 Offset; /* Used for ArgOp, LocalOp, and IndexOp */ void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OPERAND_OBJECT */ @@ -491,7 +513,7 @@ typedef union acpi_operand_obj ACPI_OBJECT_STRING String; ACPI_OBJECT_BUFFER Buffer; ACPI_OBJECT_PACKAGE Package; - ACPI_OBJECT_FIELD_UNIT FieldUnit; + ACPI_OBJECT_BUFFER_FIELD BufferField; ACPI_OBJECT_DEVICE Device; ACPI_OBJECT_EVENT Event; ACPI_OBJECT_METHOD Method; @@ -500,7 +522,8 @@ typedef union acpi_operand_obj ACPI_OBJECT_POWER_RESOURCE PowerResource; ACPI_OBJECT_PROCESSOR Processor; ACPI_OBJECT_THERMAL_ZONE ThermalZone; - ACPI_OBJECT_FIELD Field; + ACPI_OBJECT_FIELD_COMMON CommonField; + ACPI_OBJECT_REGION_FIELD Field; ACPI_OBJECT_BANK_FIELD BankField; ACPI_OBJECT_INDEX_FIELD IndexField; ACPI_OBJECT_REFERENCE Reference; diff --git a/sys/contrib/dev/acpica/acoutput.h b/sys/contrib/dev/acpica/acoutput.h index 00f4918..f2746a8 100644 --- a/sys/contrib/dev/acpica/acoutput.h +++ b/sys/contrib/dev/acpica/acoutput.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acoutput.h -- debug output - * $Revision: 70 $ + * $Revision: 77 $ * *****************************************************************************/ @@ -125,34 +125,38 @@ /* Component IDs -- used in the global "DebugLayer" */ -#define GLOBAL 0x00000001 -#define COMMON 0x00000002 -#define PARSER 0x00000004 -#define DISPATCHER 0x00000008 -#define INTERPRETER 0x00000010 -#define NAMESPACE 0x00000020 -#define RESOURCE_MANAGER 0x00000040 -#define TABLE_MANAGER 0x00000080 -#define EVENT_HANDLING 0x00000100 -#define HARDWARE 0x00000200 -#define MISCELLANEOUS 0x00000400 -#define OS_DEPENDENT 0x00000800 +#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_DEVICES 0x00000200 +#define ACPI_POWER 0x00000400 -#define BUS_MANAGER 0x00001000 -#define PROCESSOR_CONTROL 0x00002000 -#define SYSTEM_CONTROL 0x00004000 -#define THERMAL_CONTROL 0x00008000 -#define POWER_CONTROL 0x00010000 +#define ACPI_BUS_MANAGER 0x00001000 +#define ACPI_POWER_CONTROL 0x00002000 +#define ACPI_EMBEDDED_CONTROLLER 0x00004000 +#define ACPI_PROCESSOR_CONTROL 0x00008000 +#define ACPI_AC_ADAPTER 0x00010000 +#define ACPI_BATTERY 0x00020000 +#define ACPI_BUTTON 0x00040000 +#define ACPI_SYSTEM 0x00080000 +#define ACPI_THERMAL_ZONE 0x00100000 -#define EMBEDDED_CONTROLLER 0x00020000 -#define BATTERY 0x00040000 +#define ACPI_DEBUGGER 0x01000000 +#define ACPI_OS_SERVICES 0x02000000 +#define ACPI_ALL_COMPONENTS 0x01FFFFFF -#define DEBUGGER 0x00100000 -#define COMPILER 0x00200000 -#define ALL_COMPONENTS 0x001FFFFF +#define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS) -#define COMPONENT_DEFAULT (ALL_COMPONENTS) + +#define ACPI_COMPILER 0x10000000 +#define ACPI_TOOLS 0x20000000 /* Exception level -- used in the global "DebugLevel" */ @@ -168,6 +172,7 @@ /* Trace level -- also used in the global "DebugLevel" */ +#define TRACE_THREADS 0x00000080 #define TRACE_PARSE 0x00000100 #define TRACE_DISPATCH 0x00000200 #define TRACE_LOAD 0x00000400 @@ -189,7 +194,7 @@ #define TRACE_MUTEX 0x04000000 #define TRACE_INIT 0x08000000 -#define TRACE_ALL 0x0FFFFF00 +#define TRACE_ALL 0x0FFFFF80 /* Exceptionally verbose output -- also used in the global "DebugLevel" */ diff --git a/sys/contrib/dev/acpica/acpi.h b/sys/contrib/dev/acpica/acpi.h index 4f32887..fca0cb4 100644 --- a/sys/contrib/dev/acpica/acpi.h +++ b/sys/contrib/dev/acpica/acpi.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acpi.h - Master include file, Publics and external data. - * $Revision: 50 $ + * $Revision: 54 $ * *****************************************************************************/ @@ -122,20 +122,21 @@ * We put them here because we don't want to duplicate them * in the rest of the source code again and again. */ -#include "acconfig.h" /* Configuration constants */ -#include "acenv.h" /* Target environment specific items */ -#include "actypes.h" /* Fundamental data types */ -#include "acexcep.h" /* Local 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 external interfaces */ -#include "acobject.h" /* Acpi internal object */ -#include "acglobal.h" /* All global variables */ -#include "achware.h" /* Hardware defines and interfaces */ -#include "accommon.h" /* Common (global) interfaces */ +#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/acpiosxf.h b/sys/contrib/dev/acpica/acpiosxf.h index 8603fb9..a893970 100644 --- a/sys/contrib/dev/acpica/acpiosxf.h +++ b/sys/contrib/dev/acpica/acpiosxf.h @@ -1,9 +1,9 @@ /****************************************************************************** * - * Name: acpiosxf.h - All interfaces to the OS-dependent layer. These - * interfaces must be implemented by the OS-dependent - * front-end to the ACPI subsystem. + * 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. * *****************************************************************************/ @@ -117,26 +117,26 @@ * *****************************************************************************/ -#ifndef __ACPIOSD_H__ -#define __ACPIOSD_H__ +#ifndef __ACPIOSXF_H__ +#define __ACPIOSXF_H__ -#include "acenv.h" +#include "platform/acenv.h" #include "actypes.h" /* Priorities for AcpiOsQueueForExecution */ -#define OSD_PRIORITY_GPE 1 -#define OSD_PRIORITY_HIGH 2 -#define OSD_PRIORITY_MED 3 -#define OSD_PRIORITY_LO 4 +#define OSD_PRIORITY_GPE 1 +#define OSD_PRIORITY_HIGH 2 +#define OSD_PRIORITY_MED 3 +#define OSD_PRIORITY_LO 4 -#define ACPI_NO_UNIT_LIMIT ((UINT32) -1) -#define ACPI_MUTEX_SEM 1 +#define ACPI_NO_UNIT_LIMIT ((UINT32) -1) +#define ACPI_MUTEX_SEM 1 /* - * Types specific to the OS-dependent layer interfaces + * Types specific to the OS service interfaces */ typedef @@ -149,7 +149,7 @@ void (*OSD_EXECUTION_CALLBACK) ( /* - * Initialization and shutdown primitives (Optional) + * OSL Initialization and shutdown primitives */ ACPI_STATUS @@ -160,6 +160,7 @@ ACPI_STATUS AcpiOsTerminate ( void); + /* * Synchronization primitives */ @@ -185,6 +186,7 @@ AcpiOsSignalSemaphore ( ACPI_HANDLE Handle, UINT32 Units); + /* * Memory allocation and mapping */ @@ -217,6 +219,7 @@ AcpiOsGetPhysicalAddress ( void *LogicalAddress, ACPI_PHYSICAL_ADDRESS *PhysicalAddress); + /* * Interrupt handlers */ @@ -234,9 +237,13 @@ AcpiOsRemoveInterruptHandler ( /* - * Scheduling + * Threads and Scheduling */ +UINT32 +AcpiOsGetThreadId ( + void); + ACPI_STATUS AcpiOsQueueForExecution ( UINT32 Priority, @@ -252,6 +259,7 @@ void AcpiOsSleepUsec ( UINT32 Microseconds); + /* * Platform/Hardware independent I/O interfaces */ @@ -284,6 +292,7 @@ AcpiOsOut32 ( ACPI_IO_ADDRESS OutPort, UINT32 Value); + /* * Platform/Hardware independent physical memory interfaces */ @@ -398,6 +407,7 @@ AcpiOsVprintf ( const NATIVE_CHAR *Format, va_list Args); + /* * Debug input */ @@ -419,4 +429,4 @@ AcpiOsDbgAssert( NATIVE_CHAR *Message); -#endif /* __ACPIOSD_H__ */ +#endif /* __ACPIOSXF_H__ */ diff --git a/sys/contrib/dev/acpica/acpixf.h b/sys/contrib/dev/acpica/acpixf.h index c33ca3f..84ec9a2 100644 --- a/sys/contrib/dev/acpica/acpixf.h +++ b/sys/contrib/dev/acpica/acpixf.h @@ -121,6 +121,7 @@ #include "actypes.h" #include "actbl.h" + /* * Global interfaces */ @@ -156,6 +157,23 @@ AcpiFormatException ( /* + * ACPI Memory manager + */ + +void * +AcpiAllocate ( + UINT32 Size); + +void * +AcpiCallocate ( + UINT32 Size); + +void +AcpiFree ( + void *Address); + + +/* * ACPI table manipulation interfaces */ @@ -197,14 +215,14 @@ AcpiWalkNamespace ( ACPI_OBJECT_TYPE Type, ACPI_HANDLE StartObject, UINT32 MaxDepth, - WALK_CALLBACK UserFunction, + ACPI_WALK_CALLBACK UserFunction, void *Context, void * *ReturnValue); ACPI_STATUS AcpiGetDevices ( NATIVE_CHAR *HID, - WALK_CALLBACK UserFunction, + ACPI_WALK_CALLBACK UserFunction, void *Context, void **ReturnValue); @@ -256,52 +274,52 @@ AcpiGetParent ( /* - * AcpiEvent handler interfaces + * Event handler interfaces */ ACPI_STATUS AcpiInstallFixedEventHandler ( UINT32 AcpiEvent, - FIXED_EVENT_HANDLER Handler, + ACPI_EVENT_HANDLER Handler, void *Context); ACPI_STATUS AcpiRemoveFixedEventHandler ( UINT32 AcpiEvent, - FIXED_EVENT_HANDLER Handler); + ACPI_EVENT_HANDLER Handler); ACPI_STATUS AcpiInstallNotifyHandler ( ACPI_HANDLE Device, UINT32 HandlerType, - NOTIFY_HANDLER Handler, + ACPI_NOTIFY_HANDLER Handler, void *Context); ACPI_STATUS AcpiRemoveNotifyHandler ( ACPI_HANDLE Device, UINT32 HandlerType, - NOTIFY_HANDLER Handler); + ACPI_NOTIFY_HANDLER Handler); ACPI_STATUS AcpiInstallAddressSpaceHandler ( ACPI_HANDLE Device, - ACPI_ADDRESS_SPACE_TYPE SpaceId, - ADDRESS_SPACE_HANDLER Handler, - ADDRESS_SPACE_SETUP Setup, + ACPI_ADR_SPACE_TYPE SpaceId, + ACPI_ADR_SPACE_HANDLER Handler, + ACPI_ADR_SPACE_SETUP Setup, void *Context); ACPI_STATUS AcpiRemoveAddressSpaceHandler ( ACPI_HANDLE Device, - ACPI_ADDRESS_SPACE_TYPE SpaceId, - ADDRESS_SPACE_HANDLER Handler); + ACPI_ADR_SPACE_TYPE SpaceId, + ACPI_ADR_SPACE_HANDLER Handler); ACPI_STATUS AcpiInstallGpeHandler ( UINT32 GpeNumber, UINT32 Type, - GPE_HANDLER Handler, + ACPI_GPE_HANDLER Handler, void *Context); ACPI_STATUS @@ -315,7 +333,7 @@ AcpiReleaseGlobalLock ( ACPI_STATUS AcpiRemoveGpeHandler ( UINT32 GpeNumber, - GPE_HANDLER Handler); + ACPI_GPE_HANDLER Handler); ACPI_STATUS AcpiEnableEvent ( diff --git a/sys/contrib/dev/acpica/acresrc.h b/sys/contrib/dev/acpica/acresrc.h index dd942a9..4700c94 100644 --- a/sys/contrib/dev/acpica/acresrc.h +++ b/sys/contrib/dev/acpica/acresrc.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acresrc.h - Resource Manager function prototypes - * $Revision: 22 $ + * $Revision: 25 $ * *****************************************************************************/ @@ -152,7 +152,7 @@ AcpiRsCreateResourceList ( ACPI_STATUS AcpiRsCreateByteStream ( - RESOURCE *LinkedListBuffer, + ACPI_RESOURCE *LinkedListBuffer, UINT8 *OutputBuffer, UINT32 *OutputBufferLength); @@ -169,7 +169,7 @@ AcpiRsCreatePciRoutingTable ( void AcpiRsDumpResourceList ( - RESOURCE *Resource); + ACPI_RESOURCE *Resource); void AcpiRsDumpIrqList ( @@ -189,7 +189,7 @@ AcpiRsCalculateListLength ( ACPI_STATUS AcpiRsCalculateByteStreamLength ( - RESOURCE *LinkedListBuffer, + ACPI_RESOURCE *LinkedListBuffer, UINT32 *SizeNeeded); ACPI_STATUS @@ -205,7 +205,7 @@ AcpiRsByteStreamToList ( ACPI_STATUS AcpiRsListToByteStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT32 ByteStreamSizeNeeded, UINT8 **OutputBuffer); @@ -225,13 +225,13 @@ AcpiRsFixedIoResource ( ACPI_STATUS AcpiRsIoStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); ACPI_STATUS AcpiRsFixedIoStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); @@ -244,7 +244,7 @@ AcpiRsIrqResource ( ACPI_STATUS AcpiRsIrqStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); @@ -257,7 +257,7 @@ AcpiRsDmaResource ( ACPI_STATUS AcpiRsDmaStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); @@ -270,7 +270,7 @@ AcpiRsAddress16Resource ( ACPI_STATUS AcpiRsAddress16Stream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); @@ -283,7 +283,20 @@ AcpiRsAddress32Resource ( ACPI_STATUS AcpiRsAddress32Stream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, + UINT8 **OutputBuffer, + UINT32 *BytesConsumed); + +ACPI_STATUS +AcpiRsAddress64Resource ( + UINT8 *ByteStreamBuffer, + UINT32 *BytesConsumed, + UINT8 **OutputBuffer, + UINT32 *StructureSize); + +ACPI_STATUS +AcpiRsAddress64Stream ( + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); @@ -303,13 +316,13 @@ AcpiRsEndDependentFunctionsResource ( ACPI_STATUS AcpiRsStartDependentFunctionsStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); ACPI_STATUS AcpiRsEndDependentFunctionsStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); @@ -322,7 +335,7 @@ AcpiRsMemory24Resource ( ACPI_STATUS AcpiRsMemory24Stream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); @@ -343,13 +356,13 @@ AcpiRsFixedMemory32Resource ( ACPI_STATUS AcpiRsMemory32RangeStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); ACPI_STATUS AcpiRsFixedMemory32Stream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); @@ -362,7 +375,7 @@ AcpiRsExtendedIrqResource ( ACPI_STATUS AcpiRsExtendedIrqStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); @@ -375,7 +388,7 @@ AcpiRsEndTagResource ( ACPI_STATUS AcpiRsEndTagStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); @@ -388,9 +401,12 @@ AcpiRsVendorResource ( ACPI_STATUS AcpiRsVendorStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed); +UINT8 +AcpiRsGetResourceType ( + UINT8 ResourceStartByte); #endif /* __ACRESRC_H__ */ diff --git a/sys/contrib/dev/acpica/actbl.h b/sys/contrib/dev/acpica/actbl.h index bd1d718..fe81c96 100644 --- a/sys/contrib/dev/acpica/actbl.h +++ b/sys/contrib/dev/acpica/actbl.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: actbl.h - Table data structures defined in ACPI specification - * $Revision: 45 $ + * $Revision: 46 $ * *****************************************************************************/ @@ -231,7 +231,7 @@ typedef struct /* Processor APIC */ UINT8 ProcessorApicId; /* ACPI processor id */ UINT8 LocalApicId; /* processor's local APIC id */ UINT32_BIT ProcessorEnabled: 1; /* Processor is usable if set */ - UINT32_BIT Reserved1 : 32; + UINT32_BIT Reserved1 : 31; } PROCESSOR_APIC; diff --git a/sys/contrib/dev/acpica/actbl2.h b/sys/contrib/dev/acpica/actbl2.h index 43d534c..3c17cc1 100644 --- a/sys/contrib/dev/acpica/actbl2.h +++ b/sys/contrib/dev/acpica/actbl2.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: actbl2.h - ACPI Specification Revision 2.0 Tables - * $Revision: 21 $ + * $Revision: 24 $ * *****************************************************************************/ @@ -117,159 +117,156 @@ #ifndef __ACTBL2_H__ #define __ACTBL2_H__ -/**************************************/ -/* Prefered Power Management Profiles */ -/**************************************/ -#define PM_UNSPECIFIED 0 -#define PM_DESKTOP 1 -#define PM_MOBILE 2 -#define PM_WORKSTATION 3 -#define PM_ENTERPRISE_SERVER 4 -#define PM_SOHO_SERVER 5 -#define PM_APPLIANCE_PC 6 +/* + * Prefered Power Management Profiles + */ +#define PM_UNSPECIFIED 0 +#define PM_DESKTOP 1 +#define PM_MOBILE 2 +#define PM_WORKSTATION 3 +#define PM_ENTERPRISE_SERVER 4 +#define PM_SOHO_SERVER 5 +#define PM_APPLIANCE_PC 6 -/*********************************************/ -/* ACPI Boot Arch Flags, See spec Table 5-10 */ -/*********************************************/ -#define BAF_LEGACY_DEVICES 0x0001 -#define BAF_8042_KEYBOARD_CONTROLLER 0x0002 +/* + * ACPI Boot Arch Flags + */ +#define BAF_LEGACY_DEVICES 0x0001 +#define BAF_8042_KEYBOARD_CONTROLLER 0x0002 + +#define FADT2_REVISION_ID 3 -#define FADT2_REVISION_ID 3 #pragma pack(1) -/*************************************/ -/* ACPI Specification Rev 2.0 for */ -/* the Root System Description Table */ -/*************************************/ +/* + * ACPI Specification Rev 2.0 for the Root System Description Table + */ typedef struct { - ACPI_TABLE_HEADER header; /* Table header */ - UINT32 TableOffsetEntry [1]; /* Array of pointers to */ - /* other tables' headers */ + ACPI_TABLE_HEADER header; /* Table header */ + UINT32 TableOffsetEntry [1]; /* Array of pointers to */ + /* other tables' headers */ } RSDT_DESCRIPTOR_REV2; -/********************************************/ -/* ACPI Specification Rev 2.0 for the */ -/* Extended System Description Table (XSDT) */ -/********************************************/ +/* + * ACPI Specification Rev 2.0 for the Extended System Description Table (XSDT) + */ typedef struct { - ACPI_TABLE_HEADER Header; /* Table header */ - UINT64 TableOffsetEntry [1]; /* Array of pointers to */ - /* other tables' headers */ + ACPI_TABLE_HEADER Header; /* Table header */ + UINT64 TableOffsetEntry [1]; /* Array of pointers to */ + /* other tables' headers */ } XSDT_DESCRIPTOR_REV2; -/***************************************/ -/* ACPI Specification Rev 2.0 for */ -/* the Firmware ACPI Control Structure */ -/***************************************/ + +/* + * ACPI Specification Rev 2.0 for the Firmware ACPI Control Structure + */ typedef struct { - NATIVE_CHAR Signature[4]; /* signature "FACS" */ - UINT32 Length; /* length of structure, in bytes */ - UINT32 HardwareSignature; /* hardware configuration signature */ - UINT32 FirmwareWakingVector; /* 32bit physical address of the Firmware Waking Vector. */ - UINT32 GlobalLock; /* Global Lock used to synchronize access to shared hardware resources */ - UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */ - UINT32_BIT Reserved1 : 31; /* must be 0 */ - UINT64 XFirmwareWakingVector; /* 64bit physical address of the Firmware Waking Vector. */ - UINT8 Version; /* Version of this table */ - UINT8 Reserved3 [31]; /* reserved - must be zero */ + NATIVE_CHAR Signature[4]; /* signature "FACS" */ + UINT32 Length; /* length of structure, in bytes */ + UINT32 HardwareSignature; /* hardware configuration signature */ + UINT32 FirmwareWakingVector; /* 32bit physical address of the Firmware Waking Vector. */ + UINT32 GlobalLock; /* Global Lock used to synchronize access to shared hardware resources */ + UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */ + UINT32_BIT Reserved1 : 31; /* must be 0 */ + UINT64 XFirmwareWakingVector; /* 64bit physical address of the Firmware Waking Vector. */ + UINT8 Version; /* Version of this table */ + UINT8 Reserved3 [31]; /* reserved - must be zero */ } FACS_DESCRIPTOR_REV2; -/***************************************/ -/* ACPI Specification Rev 2.0 for */ -/* the Generic Address Structure (GAS) */ -/***************************************/ +/* + * ACPI Specification Rev 2.0 for the Generic Address Structure (GAS) + */ typedef struct { - UINT8 AddressSpaceId; /* Address space where struct or register exists. */ - UINT8 RegisterBitWidth; /* Size in bits of given register */ - UINT8 RegisterBitOffset; /* Bit offset within the register */ - UINT8 Reserved; /* Must be 0 */ - UINT64 Address; /* 64-bit address of struct or register */ + UINT8 AddressSpaceId; /* Address space where struct or register exists. */ + UINT8 RegisterBitWidth; /* Size in bits of given register */ + UINT8 RegisterBitOffset; /* Bit offset within the register */ + UINT8 Reserved; /* Must be 0 */ + UINT64 Address; /* 64-bit address of struct or register */ -} ACPI_GAS; +} ACPI_GENERIC_ADDRESS; -/************************************/ -/* ACPI Specification Rev 2.0 for */ -/* the Fixed ACPI Description Table */ -/************************************/ +/* + * ACPI Specification Rev 2.0 for the Fixed ACPI Description Table + */ typedef struct { - ACPI_TABLE_HEADER header; /* table header */ - UINT32 V1_FirmwareCtrl; /* 32-bit physical address of FACS */ - UINT32 V1_Dsdt; /* 32-bit physical address of DSDT */ - UINT8 Reserved1; /* System Interrupt Model isn't used in ACPI 2.0*/ - UINT8 Prefer_PM_Profile; /* Conveys preferred power management profile to OSPM. */ - UINT16 SciInt; /* System vector of SCI interrupt */ - UINT32 SmiCmd; /* 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 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ - UINT8 PstateCnt; /* processor performance state control*/ - UINT32 V1_Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */ - UINT32 V1_Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */ - UINT32 V1_Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ - UINT32 V1_Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */ - UINT32 V1_Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */ - UINT32 V1_PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ - UINT32 V1_Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */ - UINT32 V1_Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */ - UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */ - UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */ - UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */ - UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ - UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ - UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ - UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */ - UINT8 CstCnt; /* Support for the _CST object and C States change notification.*/ - UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */ - UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */ - UINT16 FlushSize; /* number of flush strides that need to be read */ - UINT16 FlushStride; /* Processor's memory cache line width, in bytes */ - UINT8 DutyOffset; /* Processor’s duty cycle index in processor's P_CNT reg*/ - UINT8 DutyWidth; /* Processor’s duty cycle value bit width in P_CNT register.*/ - UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */ - UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */ - UINT8 Century; /* index to century in RTC CMOS RAM */ - UINT16 IapcBootArch; /* IA-PC Boot Architecture Flags. See Table 5-10 for description*/ - UINT8 Reserved2; /* reserved */ - UINT32_BIT WbInvd : 1; /* wbinvd instruction works properly */ - UINT32_BIT WbInvdFlush : 1; /* wbinvd flushes but does not invalidate */ - UINT32_BIT ProcC1 : 1; /* all processors support C1 state */ - UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */ - UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */ - UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */ - UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */ - UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ - UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */ - UINT32_BIT DockCap : 1; /* Supports Docking */ - UINT32_BIT ResetRegSup : 1; /* Indicates system supports system reset via the FADT RESET_REG*/ - UINT32_BIT SealedCase : 1; /* Indicates system has no internal expansion capabilities and case is sealed. */ - UINT32_BIT Headless : 1; /* Indicates system does not have local video capabilities or local input devices.*/ - UINT32_BIT CpuSwSleep : 1; /* Indicates to OSPM that a processor native instruction */ - /* must be executed after writing the SLP_TYPx register. */ - UINT32_BIT Reserved6 : 18; /* reserved - must be zero */ + ACPI_TABLE_HEADER header; /* table header */ + UINT32 V1_FirmwareCtrl; /* 32-bit physical address of FACS */ + UINT32 V1_Dsdt; /* 32-bit physical address of DSDT */ + UINT8 Reserved1; /* System Interrupt Model isn't used in ACPI 2.0*/ + UINT8 Prefer_PM_Profile; /* Conveys preferred power management profile to OSPM. */ + UINT16 SciInt; /* System vector of SCI interrupt */ + UINT32 SmiCmd; /* 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 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ + UINT8 PstateCnt; /* processor performance state control*/ + UINT32 V1_Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */ + UINT32 V1_Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */ + UINT32 V1_Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ + UINT32 V1_Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */ + UINT32 V1_Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */ + UINT32 V1_PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ + UINT32 V1_Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */ + UINT32 V1_Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */ + UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */ + UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */ + UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */ + UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ + UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ + UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ + UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */ + UINT8 CstCnt; /* Support for the _CST object and C States change notification.*/ + UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */ + UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */ + UINT16 FlushSize; /* number of flush strides that need to be read */ + UINT16 FlushStride; /* Processor's memory cache line width, in bytes */ + UINT8 DutyOffset; /* Processor’s duty cycle index in processor's P_CNT reg*/ + UINT8 DutyWidth; /* Processor’s duty cycle value bit width in P_CNT register.*/ + UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */ + UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */ + UINT8 Century; /* index to century in RTC CMOS RAM */ + UINT16 IapcBootArch; /* IA-PC Boot Architecture Flags. See Table 5-10 for description*/ + UINT8 Reserved2; /* reserved */ + UINT32_BIT WbInvd : 1; /* wbinvd instruction works properly */ + UINT32_BIT WbInvdFlush : 1; /* wbinvd flushes but does not invalidate */ + UINT32_BIT ProcC1 : 1; /* all processors support C1 state */ + UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */ + UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */ + UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */ + UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */ + UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ + UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */ + UINT32_BIT DockCap : 1; /* Supports Docking */ + UINT32_BIT ResetRegSup : 1; /* Indicates system supports system reset via the FADT RESET_REG*/ + UINT32_BIT SealedCase : 1; /* Indicates system has no internal expansion capabilities and case is sealed. */ + UINT32_BIT Headless : 1; /* Indicates system does not have local video capabilities or local input devices.*/ + UINT32_BIT CpuSwSleep : 1; /* Indicates to OSPM that a processor native instruction */ + /* must be executed after writing the SLP_TYPx register. */ + UINT32_BIT Reserved6 : 18; /* reserved - must be zero */ - ACPI_GAS ResetRegister; /* Reset register address in GAS format */ - UINT8 ResetValue; /* Value to write to the ResetRegister port to reset the system. */ - UINT8 Reserved7[3]; /* These three bytes must be zero */ - UINT64 XFirmwareCtrl; /* 64-bit physical address of FACS */ - UINT64 XDsdt; /* 64-bit physical address of DSDT */ - ACPI_GAS XPm1aEvtBlk; /* Extended Power Mgt 1a AcpiEvent Reg Blk address */ - ACPI_GAS XPm1bEvtBlk; /* Extended Power Mgt 1b AcpiEvent Reg Blk address */ - ACPI_GAS XPm1aCntBlk; /* Extended Power Mgt 1a Control Reg Blk address */ - ACPI_GAS XPm1bCntBlk; /* Extended Power Mgt 1b Control Reg Blk address */ - ACPI_GAS XPm2CntBlk; /* Extended Power Mgt 2 Control Reg Blk address */ - ACPI_GAS XPmTmrBlk; /* Extended Power Mgt Timer Ctrl Reg Blk address */ - ACPI_GAS XGpe0Blk; /* Extended General Purpose AcpiEvent 0 Reg Blk address */ - ACPI_GAS XGpe1Blk; /* Extended General Purpose AcpiEvent 1 Reg Blk address */ + ACPI_GENERIC_ADDRESS ResetRegister; /* Reset register address in GAS format */ + UINT8 ResetValue; /* Value to write to the ResetRegister port to reset the system. */ + UINT8 Reserved7[3]; /* These three bytes must be zero */ + UINT64 XFirmwareCtrl; /* 64-bit physical address of FACS */ + UINT64 XDsdt; /* 64-bit physical address of DSDT */ + ACPI_GENERIC_ADDRESS XPm1aEvtBlk; /* Extended Power Mgt 1a AcpiEvent Reg Blk address */ + ACPI_GENERIC_ADDRESS XPm1bEvtBlk; /* Extended Power Mgt 1b AcpiEvent Reg Blk address */ + ACPI_GENERIC_ADDRESS XPm1aCntBlk; /* Extended Power Mgt 1a Control Reg Blk address */ + ACPI_GENERIC_ADDRESS XPm1bCntBlk; /* Extended Power Mgt 1b Control Reg Blk address */ + ACPI_GENERIC_ADDRESS XPm2CntBlk; /* Extended Power Mgt 2 Control Reg Blk address */ + ACPI_GENERIC_ADDRESS XPmTmrBlk; /* Extended Power Mgt Timer Ctrl Reg Blk address */ + ACPI_GENERIC_ADDRESS XGpe0Blk; /* Extended General Purpose AcpiEvent 0 Reg Blk address */ + ACPI_GENERIC_ADDRESS XGpe1Blk; /* Extended General Purpose AcpiEvent 1 Reg Blk address */ } FADT_DESCRIPTOR_REV2; diff --git a/sys/contrib/dev/acpica/actbl71.h b/sys/contrib/dev/acpica/actbl71.h index 4f9767a..a8d4392 100644 --- a/sys/contrib/dev/acpica/actbl71.h +++ b/sys/contrib/dev/acpica/actbl71.h @@ -3,7 +3,7 @@ * Name: actbl71.h - IA-64 Extensions to the ACPI Spec Rev. 0.71 * This file includes tables specific to this * specification revision. - * $Revision: 9 $ + * $Revision: 11 $ * *****************************************************************************/ @@ -119,8 +119,10 @@ #ifndef __ACTBL71_H__ #define __ACTBL71_H__ + /* 0.71 FADT AddressSpace data item bitmasks defines */ /* If the associated bit is zero then it is in memory space else in io space */ + #define SMI_CMD_ADDRESS_SPACE 0x01 #define PM1_BLK_ADDRESS_SPACE 0x02 #define PM2_CNT_BLK_ADDRESS_SPACE 0x04 @@ -129,10 +131,11 @@ #define GPE1_BLK_ADDRESS_SPACE 0x20 /* Only for clarity in declarations */ + typedef UINT64 IO_ADDRESS; -#pragma pack(1) +#pragma pack(1) typedef struct /* Root System Descriptor Pointer */ { NATIVE_CHAR Signature [8]; /* contains "RSD PTR " */ diff --git a/sys/contrib/dev/acpica/actypes.h b/sys/contrib/dev/acpica/actypes.h index 7e8db54..3d375aa 100644 --- a/sys/contrib/dev/acpica/actypes.h +++ b/sys/contrib/dev/acpica/actypes.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: actypes.h - Common data types for the entire ACPI subsystem - * $Revision: 165 $ + * $Revision: 178 $ * *****************************************************************************/ @@ -322,6 +322,10 @@ typedef UINT64 ACPI_INTEGER; #define ACPI_ROOT_OBJECT (ACPI_HANDLE)(-1) + +/* + * Initialization sequence + */ #define ACPI_FULL_INITIALIZATION 0x00 #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 #define ACPI_NO_HARDWARE_INIT 0x02 @@ -332,7 +336,7 @@ typedef UINT64 ACPI_INTEGER; /* - * Sleep state constants + * System states */ #define ACPI_STATE_S0 (UINT8) 0 #define ACPI_STATE_S1 (UINT8) 1 @@ -343,6 +347,19 @@ typedef UINT64 ACPI_INTEGER; /* let's pretend S4BIOS didn't exist for now. ASG */ #define ACPI_STATE_S4BIOS (UINT8) 6 #define ACPI_S_STATES_MAX ACPI_STATE_S5 +#define ACPI_S_STATE_COUNT 6 + +/* + * Device power states + */ +#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_UNKNOWN (UINT8) 0xFF /* @@ -373,35 +390,7 @@ typedef UINT32 ACPI_TABLE_TYPE; */ typedef UINT32 ACPI_OBJECT_TYPE; -typedef UINT8 OBJECT_TYPE_INTERNAL; - -#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 0x00017FFF /* ARG or LOCAL */ -#define ACPI_BTYPE_ALL_OBJECTS 0x00007FFF +typedef UINT8 ACPI_OBJECT_TYPE8; #define ACPI_TYPE_ANY 0 /* 0x00 */ @@ -433,7 +422,7 @@ typedef UINT8 OBJECT_TYPE_INTERNAL; */ #define INTERNAL_TYPE_BEGIN 17 -#define INTERNAL_TYPE_DEF_FIELD 17 /* 0x11 */ +#define INTERNAL_TYPE_REGION_FIELD 17 /* 0x11 */ #define INTERNAL_TYPE_BANK_FIELD 18 /* 0x12 */ #define INTERNAL_TYPE_INDEX_FIELD 19 /* 0x13 */ #define INTERNAL_TYPE_REFERENCE 20 /* 0x14 Arg#, Local#, Name, Debug; used only in descriptors */ @@ -447,12 +436,12 @@ typedef UINT8 OBJECT_TYPE_INTERNAL; /* These are pseudo-types because there are never any namespace nodes with these types */ -#define INTERNAL_TYPE_DEF_FIELD_DEFN 25 /* 0x19 Name, ByteConst, multiple FieldElement */ +#define INTERNAL_TYPE_FIELD_DEFN 25 /* 0x19 Name, ByteConst, multiple FieldElement */ #define INTERNAL_TYPE_BANK_FIELD_DEFN 26 /* 0x1A 2 Name,DWordConst,ByteConst,multi FieldElement */ #define INTERNAL_TYPE_INDEX_FIELD_DEFN 27 /* 0x1B 2 Name, ByteConst, multiple FieldElement */ -#define INTERNAL_TYPE_IF 28 /* 0x1C OpCode, multiple Code */ -#define INTERNAL_TYPE_ELSE 29 /* 0x1D multiple Code */ -#define INTERNAL_TYPE_WHILE 30 /* 0x1E OpCode, multiple Code */ +#define INTERNAL_TYPE_IF 28 /* 0x1C */ +#define INTERNAL_TYPE_ELSE 29 /* 0x1D */ +#define INTERNAL_TYPE_WHILE 30 /* 0x1E */ #define INTERNAL_TYPE_SCOPE 31 /* 0x1F Name, multiple Node */ #define INTERNAL_TYPE_DEF_ANY 32 /* 0x20 type is Any, suppress search of enclosing scopes */ #define INTERNAL_TYPE_EXTRA 33 /* 0x21 */ @@ -462,6 +451,40 @@ typedef UINT8 OBJECT_TYPE_INTERNAL; #define INTERNAL_TYPE_INVALID 34 #define ACPI_TYPE_NOT_FOUND 0xFF + +/* + * 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 + + /* * AcpiEvent Types: * ------------ @@ -489,11 +512,11 @@ typedef UINT32 ACPI_EVENT_TYPE; #define ACPI_EVENT_RTC (ACPI_EVENT_TYPE) 5 #define ACPI_EVENT_GENERAL (ACPI_EVENT_TYPE) 6 #define ACPI_EVENT_MAX 6 -#define NUM_FIXED_EVENTS (ACPI_EVENT_TYPE) 7 +#define ACPI_NUM_FIXED_EVENTS (ACPI_EVENT_TYPE) 7 #define ACPI_GPE_INVALID 0xFF #define ACPI_GPE_MAX 0xFF -#define NUM_GPE 256 +#define ACPI_NUM_GPE 256 #define ACPI_EVENT_LEVEL_TRIGGERED (ACPI_EVENT_TYPE) 1 #define ACPI_EVENT_EDGE_TRIGGERED (ACPI_EVENT_TYPE) 2 @@ -530,15 +553,15 @@ typedef UINT32 ACPI_EVENT_STATUS; /* Address Space (Operation Region) Types */ -typedef UINT8 ACPI_ADDRESS_SPACE_TYPE; +typedef UINT8 ACPI_ADR_SPACE_TYPE; -#define ADDRESS_SPACE_SYSTEM_MEMORY (ACPI_ADDRESS_SPACE_TYPE) 0 -#define ADDRESS_SPACE_SYSTEM_IO (ACPI_ADDRESS_SPACE_TYPE) 1 -#define ADDRESS_SPACE_PCI_CONFIG (ACPI_ADDRESS_SPACE_TYPE) 2 -#define ADDRESS_SPACE_EC (ACPI_ADDRESS_SPACE_TYPE) 3 -#define ADDRESS_SPACE_SMBUS (ACPI_ADDRESS_SPACE_TYPE) 4 -#define ADDRESS_SPACE_CMOS (ACPI_ADDRESS_SPACE_TYPE) 5 -#define ADDRESS_SPACE_PCI_BAR_TARGET (ACPI_ADDRESS_SPACE_TYPE) 6 +#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 /* @@ -586,7 +609,7 @@ typedef union AcpiObj { ACPI_OBJECT_TYPE Type; UINT32 ProcId; - UINT32 PblkAddress; + ACPI_IO_ADDRESS PblkAddress; UINT32 PblkLength; } Processor; @@ -707,29 +730,33 @@ typedef struct _AcpiInitData /* not found in the IA32 manner */ } ACPI_INIT_DATA; + /* * Various handlers and callback procedures */ typedef -UINT32 (*FIXED_EVENT_HANDLER) ( +UINT32 (*ACPI_EVENT_HANDLER) ( void *Context); typedef -void (*GPE_HANDLER) ( +void (*ACPI_GPE_HANDLER) ( void *Context); typedef -void (*NOTIFY_HANDLER) ( +void (*ACPI_NOTIFY_HANDLER) ( ACPI_HANDLE Device, UINT32 Value, void *Context); -#define ADDRESS_SPACE_READ 1 -#define ADDRESS_SPACE_WRITE 2 + +/* Address Spaces (Operation Regions */ + +#define ACPI_READ_ADR_SPACE 1 +#define ACPI_WRITE_ADR_SPACE 2 typedef -ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( +ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, @@ -737,11 +764,11 @@ ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( void *HandlerContext, void *RegionContext); -#define ACPI_DEFAULT_HANDLER ((ADDRESS_SPACE_HANDLER) NULL) +#define ACPI_DEFAULT_HANDLER ((ACPI_ADR_SPACE_HANDLER) NULL) typedef -ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( +ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( ACPI_HANDLE RegionHandle, UINT32 Function, void *HandlerContext, @@ -751,15 +778,13 @@ ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( #define ACPI_REGION_DEACTIVATE 1 typedef -ACPI_STATUS (*WALK_CALLBACK) ( +ACPI_STATUS (*ACPI_WALK_CALLBACK) ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); - - /* Interrupt handler return values */ #define INTERRUPT_NOT_HANDLED 0x00 @@ -804,7 +829,7 @@ typedef struct UINT32 Seg; UINT32 Bus; UINT32 DevFunc; -} PCI_HANDLER_CONTEXT; +} ACPI_PCI_SPACE_CONTEXT; typedef struct @@ -812,7 +837,7 @@ typedef struct ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; UINT8 *MappedLogicalAddress; UINT32 MappedLength; -} MEM_HANDLER_CONTEXT; +} ACPI_MEM_SPACE_CONTEXT; /* @@ -914,7 +939,7 @@ typedef struct UINT32 NumberOfInterrupts; UINT32 Interrupts[1]; -} IRQ_RESOURCE; +} ACPI_RESOURCE_IRQ; typedef struct { @@ -924,14 +949,14 @@ typedef struct UINT32 NumberOfChannels; UINT32 Channels[1]; -} DMA_RESOURCE; +} ACPI_RESOURCE_DMA; typedef struct { UINT32 CompatibilityPriority; UINT32 PerformanceRobustness; -} START_DEPENDENT_FUNCTIONS_RESOURCE; +} ACPI_RESOURCE_START_DPF; /* * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not @@ -946,21 +971,21 @@ typedef struct UINT32 Alignment; UINT32 RangeLength; -} IO_RESOURCE; +} ACPI_RESOURCE_IO; typedef struct { UINT32 BaseAddress; UINT32 RangeLength; -} FIXED_IO_RESOURCE; +} ACPI_RESOURCE_FIXED_IO; typedef struct { UINT32 Length; UINT8 Reserved[1]; -} VENDOR_RESOURCE; +} ACPI_RESOURCE_VENDOR; typedef struct { @@ -970,7 +995,7 @@ typedef struct UINT32 Alignment; UINT32 RangeLength; -} MEMORY24_RESOURCE; +} ACPI_RESOURCE_MEM24; typedef struct { @@ -980,7 +1005,7 @@ typedef struct UINT32 Alignment; UINT32 RangeLength; -} MEMORY32_RESOURCE; +} ACPI_RESOURCE_MEM32; typedef struct { @@ -988,36 +1013,44 @@ typedef struct UINT32 RangeBaseAddress; UINT32 RangeLength; -} FIXED_MEMORY32_RESOURCE; +} ACPI_RESOURCE_FIXED_MEM32; typedef struct { UINT16 CacheAttribute; UINT16 ReadWriteAttribute; -} MEMORY_ATTRIBUTE; +} ACPI_MEMORY_ATTRIBUTE; typedef struct { UINT16 RangeAttribute; UINT16 Reserved; -} IO_ATTRIBUTE; +} ACPI_IO_ATTRIBUTE; typedef struct { UINT16 Reserved1; UINT16 Reserved2; -} BUS_ATTRIBUTE; +} ACPI_BUS_ATTRIBUTE; typedef union { - MEMORY_ATTRIBUTE Memory; - IO_ATTRIBUTE Io; - BUS_ATTRIBUTE Bus; + ACPI_MEMORY_ATTRIBUTE Memory; + ACPI_IO_ATTRIBUTE Io; + ACPI_BUS_ATTRIBUTE Bus; + +} ACPI_RESOURCE_ATTRIBUTE; + +typedef struct +{ + UINT32 Index; + UINT32 StringLength; + NATIVE_CHAR *StringPtr; -} ATTRIBUTE_DATA; +} ACPI_RESOURCE_SOURCE; typedef struct { @@ -1026,17 +1059,15 @@ typedef struct UINT32 Decode; UINT32 MinAddressFixed; UINT32 MaxAddressFixed; - ATTRIBUTE_DATA Attribute; + ACPI_RESOURCE_ATTRIBUTE Attribute; UINT32 Granularity; UINT32 MinAddressRange; UINT32 MaxAddressRange; UINT32 AddressTranslationOffset; UINT32 AddressLength; - UINT32 ResourceSourceIndex; - UINT32 ResourceSourceStringLength; - NATIVE_CHAR ResourceSource[1]; + ACPI_RESOURCE_SOURCE ResourceSource; -} ADDRESS16_RESOURCE; +} ACPI_RESOURCE_ADDRESS16; typedef struct { @@ -1045,17 +1076,32 @@ typedef struct UINT32 Decode; UINT32 MinAddressFixed; UINT32 MaxAddressFixed; - ATTRIBUTE_DATA Attribute; + ACPI_RESOURCE_ATTRIBUTE Attribute; UINT32 Granularity; UINT32 MinAddressRange; UINT32 MaxAddressRange; UINT32 AddressTranslationOffset; UINT32 AddressLength; - UINT32 ResourceSourceIndex; - UINT32 ResourceSourceStringLength; - NATIVE_CHAR ResourceSource[1]; + ACPI_RESOURCE_SOURCE ResourceSource; -} ADDRESS32_RESOURCE; +} ACPI_RESOURCE_ADDRESS32; + +typedef struct +{ + UINT32 ResourceType; + UINT32 ProducerConsumer; + UINT32 Decode; + UINT32 MinAddressFixed; + UINT32 MaxAddressFixed; + ACPI_RESOURCE_ATTRIBUTE Attribute; + UINT64 Granularity; + UINT64 MinAddressRange; + UINT64 MaxAddressRange; + UINT64 AddressTranslationOffset; + UINT64 AddressLength; + ACPI_RESOURCE_SOURCE ResourceSource; + +} ACPI_RESOURCE_ADDRESS64; typedef struct { @@ -1064,58 +1110,65 @@ typedef struct UINT32 ActiveHighLow; UINT32 SharedExclusive; UINT32 NumberOfInterrupts; + ACPI_RESOURCE_SOURCE ResourceSource; UINT32 Interrupts[1]; - UINT32 ResourceSourceIndex; - UINT32 ResourceSourceStringLength; - NATIVE_CHAR ResourceSource[1]; -} EXTENDED_IRQ_RESOURCE; +} ACPI_RESOURCE_EXT_IRQ; -typedef enum -{ - Irq, - Dma, - StartDependentFunctions, - EndDependentFunctions, - Io, - FixedIo, - VendorSpecific, - EndTag, - Memory24, - Memory32, - FixedMemory32, - Address16, - Address32, - ExtendedIrq -} RESOURCE_TYPE; + +/* ACPI_RESOURCE_TYPEs */ + +#define ACPI_RSTYPE_IRQ 0 +#define ACPI_RSTYPE_DMA 1 +#define ACPI_RSTYPE_START_DPF 2 +#define ACPI_RSTYPE_END_DPF 3 +#define ACPI_RSTYPE_IO 4 +#define ACPI_RSTYPE_FIXED_IO 5 +#define ACPI_RSTYPE_VENDOR 6 +#define ACPI_RSTYPE_END_TAG 7 +#define ACPI_RSTYPE_MEM24 8 +#define ACPI_RSTYPE_MEM32 9 +#define ACPI_RSTYPE_FIXED_MEM32 10 +#define ACPI_RSTYPE_ADDRESS16 11 +#define ACPI_RSTYPE_ADDRESS32 12 +#define ACPI_RSTYPE_ADDRESS64 13 +#define ACPI_RSTYPE_EXT_IRQ 14 + +typedef UINT32 ACPI_RESOURCE_TYPE; typedef union { - IRQ_RESOURCE Irq; - DMA_RESOURCE Dma; - START_DEPENDENT_FUNCTIONS_RESOURCE StartDependentFunctions; - IO_RESOURCE Io; - FIXED_IO_RESOURCE FixedIo; - VENDOR_RESOURCE VendorSpecific; - MEMORY24_RESOURCE Memory24; - MEMORY32_RESOURCE Memory32; - FIXED_MEMORY32_RESOURCE FixedMemory32; - ADDRESS16_RESOURCE Address16; - ADDRESS32_RESOURCE Address32; - EXTENDED_IRQ_RESOURCE ExtendedIrq; -} RESOURCE_DATA; - -typedef struct _resource_tag + ACPI_RESOURCE_IRQ Irq; + ACPI_RESOURCE_DMA Dma; + ACPI_RESOURCE_START_DPF StartDpf; + ACPI_RESOURCE_IO Io; + ACPI_RESOURCE_FIXED_IO FixedIo; + ACPI_RESOURCE_VENDOR VendorSpecific; + ACPI_RESOURCE_MEM24 Memory24; + ACPI_RESOURCE_MEM32 Memory32; + ACPI_RESOURCE_FIXED_MEM32 FixedMemory32; + ACPI_RESOURCE_ADDRESS16 Address16; + ACPI_RESOURCE_ADDRESS32 Address32; + ACPI_RESOURCE_ADDRESS64 Address64; + ACPI_RESOURCE_EXT_IRQ ExtendedIrq; + +} ACPI_RESOURCE_DATA; + +typedef struct AcpiResource { - RESOURCE_TYPE Id; + ACPI_RESOURCE_TYPE Id; UINT32 Length; - RESOURCE_DATA Data; -} RESOURCE; + ACPI_RESOURCE_DATA Data; + +} ACPI_RESOURCE; + +#define ACPI_RESOURCE_LENGTH 12 +#define ACPI_RESOURCE_LENGTH_NO_DATA 8 /* Id + Length fields */ + +#define SIZEOF_RESOURCE(Type) (ACPI_RESOURCE_LENGTH_NO_DATA + sizeof (Type)) -#define RESOURCE_LENGTH 12 -#define RESOURCE_LENGTH_NO_DATA 8 +#define NEXT_RESOURCE(Res) (ACPI_RESOURCE *)((UINT8 *) Res + Res->length) -#define NEXT_RESOURCE(Res) (RESOURCE*)((UINT8*) Res + Res->length) /* * END: Definitions for Resource Attributes diff --git a/sys/contrib/dev/acpica/acutils.h b/sys/contrib/dev/acpica/acutils.h index 3872386..1e463b8 100644 --- a/sys/contrib/dev/acpica/acutils.h +++ b/sys/contrib/dev/acpica/acutils.h @@ -1,7 +1,7 @@ /****************************************************************************** * - * Name: accommon.h -- prototypes for the common (subsystem-wide) procedures - * $Revision: 90 $ + * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures + * $Revision: 100 $ * *****************************************************************************/ @@ -114,9 +114,8 @@ * *****************************************************************************/ -#ifndef _ACCOMMON_H -#define _ACCOMMON_H - +#ifndef _ACUTILS_H +#define _ACUTILS_H typedef @@ -127,9 +126,8 @@ ACPI_STATUS (*ACPI_PKG_CALLBACK) ( void *Context); - ACPI_STATUS -AcpiCmWalkPackageTree ( +AcpiUtWalkPackageTree ( ACPI_OPERAND_OBJECT *SourceObject, void *TargetObject, ACPI_PKG_CALLBACK WalkCallback, @@ -148,7 +146,7 @@ typedef struct acpi_pkg_info #define REF_DECREMENT (UINT16) 1 #define REF_FORCE_DELETE (UINT16) 2 -/* AcpiCmDumpBuffer */ +/* AcpiUtDumpBuffer */ #define DB_BYTE_DISPLAY 1 #define DB_WORD_DISPLAY 2 @@ -159,203 +157,199 @@ typedef struct acpi_pkg_info /* Global initialization interfaces */ void -AcpiCmInitGlobals ( +AcpiUtInitGlobals ( void); void -AcpiCmTerminate ( +AcpiUtTerminate ( void); /* - * CmInit - miscellaneous initialization and shutdown + * UtInit - miscellaneous initialization and shutdown */ ACPI_STATUS -AcpiCmHardwareInitialize ( +AcpiUtHardwareInitialize ( void); ACPI_STATUS -AcpiCmSubsystemShutdown ( +AcpiUtSubsystemShutdown ( void); ACPI_STATUS -AcpiCmValidateFadt ( +AcpiUtValidateFadt ( void); /* - * CmGlobal - Global data structures and procedures + * UtGlobal - Global data structures and procedures */ #ifdef ACPI_DEBUG NATIVE_CHAR * -AcpiCmGetMutexName ( +AcpiUtGetMutexName ( UINT32 MutexId); NATIVE_CHAR * -AcpiCmGetTypeName ( +AcpiUtGetTypeName ( UINT32 Type); NATIVE_CHAR * -AcpiCmGetRegionName ( +AcpiUtGetRegionName ( UINT8 SpaceId); #endif BOOLEAN -AcpiCmValidObjectType ( +AcpiUtValidObjectType ( UINT32 Type); ACPI_OWNER_ID -AcpiCmAllocateOwnerId ( +AcpiUtAllocateOwnerId ( UINT32 IdType); /* - * CmClib - Local implementations of C library functions + * UtClib - Local implementations of C library functions */ #ifndef ACPI_USE_SYSTEM_CLIBRARY -NATIVE_UINT -AcpiCmStrlen ( +UINT32 +AcpiUtStrlen ( const NATIVE_CHAR *String); NATIVE_CHAR * -AcpiCmStrcpy ( +AcpiUtStrcpy ( NATIVE_CHAR *DstString, const NATIVE_CHAR *SrcString); NATIVE_CHAR * -AcpiCmStrncpy ( +AcpiUtStrncpy ( NATIVE_CHAR *DstString, const NATIVE_CHAR *SrcString, NATIVE_UINT Count); UINT32 -AcpiCmStrncmp ( +AcpiUtStrncmp ( const NATIVE_CHAR *String1, const NATIVE_CHAR *String2, NATIVE_UINT Count); UINT32 -AcpiCmStrcmp ( +AcpiUtStrcmp ( const NATIVE_CHAR *String1, const NATIVE_CHAR *String2); NATIVE_CHAR * -AcpiCmStrcat ( +AcpiUtStrcat ( NATIVE_CHAR *DstString, const NATIVE_CHAR *SrcString); NATIVE_CHAR * -AcpiCmStrncat ( +AcpiUtStrncat ( NATIVE_CHAR *DstString, const NATIVE_CHAR *SrcString, NATIVE_UINT Count); UINT32 -AcpiCmStrtoul ( +AcpiUtStrtoul ( const NATIVE_CHAR *String, NATIVE_CHAR **Terminator, - NATIVE_UINT Base); + UINT32 Base); NATIVE_CHAR * -AcpiCmStrstr ( +AcpiUtStrstr ( NATIVE_CHAR *String1, NATIVE_CHAR *String2); -NATIVE_CHAR * -AcpiCmStrupr ( - NATIVE_CHAR *SrcString); - void * -AcpiCmMemcpy ( +AcpiUtMemcpy ( void *Dest, const void *Src, NATIVE_UINT Count); void * -AcpiCmMemset ( +AcpiUtMemset ( void *Dest, NATIVE_UINT Value, NATIVE_UINT Count); UINT32 -AcpiCmToUpper ( +AcpiUtToUpper ( UINT32 c); UINT32 -AcpiCmToLower ( +AcpiUtToLower ( UINT32 c); #endif /* ACPI_USE_SYSTEM_CLIBRARY */ /* - * CmCopy - Object construction and conversion interfaces + * UtCopy - Object construction and conversion interfaces */ ACPI_STATUS -AcpiCmBuildSimpleObject( +AcpiUtBuildSimpleObject( ACPI_OPERAND_OBJECT *Obj, ACPI_OBJECT *UserObj, UINT8 *DataSpace, UINT32 *BufferSpaceUsed); ACPI_STATUS -AcpiCmBuildPackageObject ( +AcpiUtBuildPackageObject ( ACPI_OPERAND_OBJECT *Obj, UINT8 *Buffer, UINT32 *SpaceUsed); ACPI_STATUS -AcpiCmCopyIobjectToEobject ( +AcpiUtCopyIobjectToEobject ( ACPI_OPERAND_OBJECT *Obj, ACPI_BUFFER *RetBuffer); ACPI_STATUS -AcpiCmCopyEsimpleToIsimple( +AcpiUtCopyEsimpleToIsimple( ACPI_OBJECT *UserObj, ACPI_OPERAND_OBJECT *Obj); ACPI_STATUS -AcpiCmCopyEobjectToIobject ( +AcpiUtCopyEobjectToIobject ( ACPI_OBJECT *Obj, ACPI_OPERAND_OBJECT *InternalObj); ACPI_STATUS -AcpiCmCopyISimpleToIsimple ( +AcpiUtCopyISimpleToIsimple ( ACPI_OPERAND_OBJECT *SourceObj, ACPI_OPERAND_OBJECT *DestObj); ACPI_STATUS -AcpiCmCopyIpackageToIpackage ( +AcpiUtCopyIpackageToIpackage ( ACPI_OPERAND_OBJECT *SourceObj, ACPI_OPERAND_OBJECT *DestObj, ACPI_WALK_STATE *WalkState); /* - * CmCreate - Object creation + * UtCreate - Object creation */ ACPI_STATUS -AcpiCmUpdateObjectReference ( +AcpiUtUpdateObjectReference ( ACPI_OPERAND_OBJECT *Object, UINT16 Action); ACPI_OPERAND_OBJECT * -_CmCreateInternalObject ( +_UtCreateInternalObject ( NATIVE_CHAR *ModuleName, UINT32 LineNumber, UINT32 ComponentId, - OBJECT_TYPE_INTERNAL Type); + ACPI_OBJECT_TYPE8 Type); /* - * CmDebug - Debug interfaces + * UtDebug - Debug interfaces */ UINT32 @@ -464,7 +458,7 @@ _ReportWarning ( UINT32 ComponentId); void -AcpiCmDumpBuffer ( +AcpiUtDumpBuffer ( UINT8 *Buffer, UINT32 Count, UINT32 Display, @@ -472,28 +466,28 @@ AcpiCmDumpBuffer ( /* - * CmDelete - Object deletion + * UtDelete - Object deletion */ void -AcpiCmDeleteInternalObj ( +AcpiUtDeleteInternalObj ( ACPI_OPERAND_OBJECT *Object); void -AcpiCmDeleteInternalPackageObject ( +AcpiUtDeleteInternalPackageObject ( ACPI_OPERAND_OBJECT *Object); void -AcpiCmDeleteInternalSimpleObject ( +AcpiUtDeleteInternalSimpleObject ( ACPI_OPERAND_OBJECT *Object); ACPI_STATUS -AcpiCmDeleteInternalObjectList ( +AcpiUtDeleteInternalObjectList ( ACPI_OPERAND_OBJECT **ObjList); /* - * CmEval - object evaluation + * UtEval - object evaluation */ /* Method name strings */ @@ -508,197 +502,201 @@ AcpiCmDeleteInternalObjectList ( ACPI_STATUS -AcpiCmEvaluateNumericObject ( +AcpiUtEvaluateNumericObject ( NATIVE_CHAR *ObjectName, ACPI_NAMESPACE_NODE *DeviceNode, ACPI_INTEGER *Address); ACPI_STATUS -AcpiCmExecute_HID ( +AcpiUtExecute_HID ( ACPI_NAMESPACE_NODE *DeviceNode, - DEVICE_ID *Hid); + ACPI_DEVICE_ID *Hid); ACPI_STATUS -AcpiCmExecute_STA ( +AcpiUtExecute_STA ( ACPI_NAMESPACE_NODE *DeviceNode, UINT32 *StatusFlags); ACPI_STATUS -AcpiCmExecute_UID ( +AcpiUtExecute_UID ( ACPI_NAMESPACE_NODE *DeviceNode, - DEVICE_ID *Uid); + ACPI_DEVICE_ID *Uid); /* - * CmError - exception interfaces + * UtError - exception interfaces */ NATIVE_CHAR * -AcpiCmFormatException ( +AcpiUtFormatException ( ACPI_STATUS Status); /* - * CmMutex - mutual exclusion interfaces + * UtMutex - mutual exclusion interfaces */ ACPI_STATUS -AcpiCmMutexInitialize ( +AcpiUtMutexInitialize ( void); void -AcpiCmMutexTerminate ( +AcpiUtMutexTerminate ( void); ACPI_STATUS -AcpiCmCreateMutex ( +AcpiUtCreateMutex ( ACPI_MUTEX_HANDLE MutexId); ACPI_STATUS -AcpiCmDeleteMutex ( +AcpiUtDeleteMutex ( ACPI_MUTEX_HANDLE MutexId); ACPI_STATUS -AcpiCmAcquireMutex ( +AcpiUtAcquireMutex ( ACPI_MUTEX_HANDLE MutexId); ACPI_STATUS -AcpiCmReleaseMutex ( +AcpiUtReleaseMutex ( ACPI_MUTEX_HANDLE MutexId); /* - * CmObject - internal object create/delete/cache routines + * UtObject - internal object create/delete/cache routines */ void * -_CmAllocateObjectDesc ( +_UtAllocateObjectDesc ( NATIVE_CHAR *ModuleName, UINT32 LineNumber, UINT32 ComponentId); -#define AcpiCmCreateInternalObject(t) _CmCreateInternalObject(_THIS_MODULE,__LINE__,_COMPONENT,t) -#define AcpiCmAllocateObjectDesc() _CmAllocateObjectDesc(_THIS_MODULE,__LINE__,_COMPONENT) +#define AcpiUtCreateInternalObject(t) _UtCreateInternalObject(_THIS_MODULE,__LINE__,_COMPONENT,t) +#define AcpiUtAllocateObjectDesc() _UtAllocateObjectDesc(_THIS_MODULE,__LINE__,_COMPONENT) void -AcpiCmDeleteObjectDesc ( +AcpiUtDeleteObjectDesc ( ACPI_OPERAND_OBJECT *Object); BOOLEAN -AcpiCmValidInternalObject ( +AcpiUtValidInternalObject ( void *Object); /* - * CmRefCnt - Object reference count management + * UtRefCnt - Object reference count management */ void -AcpiCmAddReference ( +AcpiUtAddReference ( ACPI_OPERAND_OBJECT *Object); void -AcpiCmRemoveReference ( +AcpiUtRemoveReference ( ACPI_OPERAND_OBJECT *Object); /* - * CmSize - Object size routines + * UtSize - Object size routines */ ACPI_STATUS -AcpiCmGetSimpleObjectSize ( +AcpiUtGetSimpleObjectSize ( ACPI_OPERAND_OBJECT *Obj, UINT32 *ObjLength); ACPI_STATUS -AcpiCmGetPackageObjectSize ( +AcpiUtGetPackageObjectSize ( ACPI_OPERAND_OBJECT *Obj, UINT32 *ObjLength); ACPI_STATUS -AcpiCmGetObjectSize( +AcpiUtGetObjectSize( ACPI_OPERAND_OBJECT *Obj, UINT32 *ObjLength); /* - * CmState - Generic state creation/cache routines + * UtState - Generic state creation/cache routines */ void -AcpiCmPushGenericState ( +AcpiUtPushGenericState ( ACPI_GENERIC_STATE **ListHead, ACPI_GENERIC_STATE *State); ACPI_GENERIC_STATE * -AcpiCmPopGenericState ( +AcpiUtPopGenericState ( ACPI_GENERIC_STATE **ListHead); ACPI_GENERIC_STATE * -AcpiCmCreateGenericState ( +AcpiUtCreateGenericState ( void); ACPI_GENERIC_STATE * -AcpiCmCreateUpdateState ( +AcpiUtCreateUpdateState ( ACPI_OPERAND_OBJECT *Object, UINT16 Action); ACPI_GENERIC_STATE * -AcpiCmCreatePkgState ( +AcpiUtCreatePkgState ( void *InternalObject, void *ExternalObject, UINT16 Index); ACPI_STATUS -AcpiCmCreateUpdateStateAndPush ( +AcpiUtCreateUpdateStateAndPush ( ACPI_OPERAND_OBJECT *Object, UINT16 Action, ACPI_GENERIC_STATE **StateList); ACPI_STATUS -AcpiCmCreatePkgStateAndPush ( +AcpiUtCreatePkgStateAndPush ( void *InternalObject, void *ExternalObject, UINT16 Index, ACPI_GENERIC_STATE **StateList); ACPI_GENERIC_STATE * -AcpiCmCreateControlState ( +AcpiUtCreateControlState ( void); void -AcpiCmDeleteGenericState ( +AcpiUtDeleteGenericState ( ACPI_GENERIC_STATE *State); void -AcpiCmDeleteGenericStateCache ( +AcpiUtDeleteGenericStateCache ( void); void -AcpiCmDeleteObjectCache ( +AcpiUtDeleteObjectCache ( void); /* - * Cmutils + * Ututils */ BOOLEAN -AcpiCmValidAcpiName ( +AcpiUtValidAcpiName ( UINT32 Name); BOOLEAN -AcpiCmValidAcpiCharacter ( +AcpiUtValidAcpiCharacter ( NATIVE_CHAR Character); +NATIVE_CHAR * +AcpiUtStrupr ( + NATIVE_CHAR *SrcString); + ACPI_STATUS -AcpiCmResolvePackageReferences ( +AcpiUtResolvePackageReferences ( ACPI_OPERAND_OBJECT *ObjDesc); -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG void -AcpiCmDisplayInitPathname ( +AcpiUtDisplayInitPathname ( ACPI_HANDLE ObjHandle, char *Path); @@ -711,108 +709,46 @@ AcpiCmDisplayInitPathname ( */ void * -_CmAllocate ( +_UtAllocate ( UINT32 Size, UINT32 Component, NATIVE_CHAR *Module, UINT32 Line); void * -_CmCallocate ( +_UtCallocate ( UINT32 Size, UINT32 Component, NATIVE_CHAR *Module, UINT32 Line); void -_CmFree ( +_UtFree ( void *Address, UINT32 Component, NATIVE_CHAR *Module, UINT32 Line); void -AcpiCmInitStaticObject ( +AcpiUtInitStaticObject ( ACPI_OPERAND_OBJECT *ObjDesc); -#define AcpiCmAllocate(a) _CmAllocate(a,_COMPONENT,_THIS_MODULE,__LINE__) -#define AcpiCmCallocate(a) _CmCallocate(a, _COMPONENT,_THIS_MODULE,__LINE__) -#define AcpiCmFree(a) _CmFree(a,_COMPONENT,_THIS_MODULE,__LINE__) - -#ifndef ACPI_DEBUG_TRACK_ALLOCATIONS - -#define AcpiCmAddElementToAllocList(a,b,c,d,e,f) -#define AcpiCmDeleteElementFromAllocList(a,b,c,d) -#define AcpiCmDumpCurrentAllocations(a,b) -#define AcpiCmDumpAllocationInfo() - -#define DECREMENT_OBJECT_METRICS(a) -#define INCREMENT_OBJECT_METRICS(a) -#define INITIALIZE_ALLOCATION_METRICS() -#define DECREMENT_NAME_TABLE_METRICS(a) -#define INCREMENT_NAME_TABLE_METRICS(a) - -#else - -#define INITIALIZE_ALLOCATION_METRICS() \ - AcpiGbl_CurrentObjectCount = 0; \ - AcpiGbl_CurrentObjectSize = 0; \ - AcpiGbl_RunningObjectCount = 0; \ - AcpiGbl_RunningObjectSize = 0; \ - AcpiGbl_MaxConcurrentObjectCount = 0; \ - AcpiGbl_MaxConcurrentObjectSize = 0; \ - AcpiGbl_CurrentAllocSize = 0; \ - AcpiGbl_CurrentAllocCount = 0; \ - AcpiGbl_RunningAllocSize = 0; \ - AcpiGbl_RunningAllocCount = 0; \ - AcpiGbl_MaxConcurrentAllocSize = 0; \ - AcpiGbl_MaxConcurrentAllocCount = 0; \ - AcpiGbl_CurrentNodeCount = 0; \ - AcpiGbl_CurrentNodeSize = 0; \ - AcpiGbl_MaxConcurrentNodeCount = 0 - - -#define DECREMENT_OBJECT_METRICS(a) \ - AcpiGbl_CurrentObjectCount--; \ - AcpiGbl_CurrentObjectSize -= a - -#define INCREMENT_OBJECT_METRICS(a) \ - AcpiGbl_CurrentObjectCount++; \ - AcpiGbl_RunningObjectCount++; \ - if (AcpiGbl_MaxConcurrentObjectCount < AcpiGbl_CurrentObjectCount) \ - { \ - AcpiGbl_MaxConcurrentObjectCount = AcpiGbl_CurrentObjectCount; \ - } \ - AcpiGbl_RunningObjectSize += a; \ - AcpiGbl_CurrentObjectSize += a; \ - if (AcpiGbl_MaxConcurrentObjectSize < AcpiGbl_CurrentObjectSize) \ - { \ - AcpiGbl_MaxConcurrentObjectSize = AcpiGbl_CurrentObjectSize; \ - } - -#define DECREMENT_NAME_TABLE_METRICS(a) \ - AcpiGbl_CurrentNodeCount--; \ - AcpiGbl_CurrentNodeSize -= (a) - -#define INCREMENT_NAME_TABLE_METRICS(a) \ - AcpiGbl_CurrentNodeCount++; \ - AcpiGbl_CurrentNodeSize+= (a); \ - if (AcpiGbl_MaxConcurrentNodeCount < AcpiGbl_CurrentNodeCount) \ - { \ - AcpiGbl_MaxConcurrentNodeCount = AcpiGbl_CurrentNodeCount; \ - } \ - - -void -AcpiCmDumpAllocationInfo ( + +#ifdef ACPI_DEBUG_TRACK_ALLOCATIONS +void +AcpiUtDumpAllocationInfo ( void); void -AcpiCmDumpCurrentAllocations ( +AcpiUtDumpCurrentAllocations ( UINT32 Component, NATIVE_CHAR *Module); - #endif -#endif /* _ACCOMMON_H */ +#define AcpiUtAllocate(a) _UtAllocate(a,_COMPONENT,_THIS_MODULE,__LINE__) +#define AcpiUtCallocate(a) _UtCallocate(a, _COMPONENT,_THIS_MODULE,__LINE__) +#define AcpiUtFree(a) _UtFree(a,_COMPONENT,_THIS_MODULE,__LINE__) + + +#endif /* _ACUTILS_H */ diff --git a/sys/contrib/dev/acpica/amlcode.h b/sys/contrib/dev/acpica/amlcode.h index afca031..2dbcd49 100644 --- a/sys/contrib/dev/acpica/amlcode.h +++ b/sys/contrib/dev/acpica/amlcode.h @@ -3,7 +3,7 @@ * Name: amlcode.h - Definitions for AML, as included in "definition blocks" * Declarations and definitions contained herein are derived * directly from the ACPI specification. - * $Revision: 46 $ + * $Revision: 52 $ * *****************************************************************************/ @@ -189,12 +189,12 @@ #define AML_SIZE_OF_OP (UINT16) 0x87 #define AML_INDEX_OP (UINT16) 0x88 #define AML_MATCH_OP (UINT16) 0x89 -#define AML_DWORD_FIELD_OP (UINT16) 0x8a -#define AML_WORD_FIELD_OP (UINT16) 0x8b -#define AML_BYTE_FIELD_OP (UINT16) 0x8c -#define AML_BIT_FIELD_OP (UINT16) 0x8d +#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_QWORD_FIELD_OP (UINT16) 0x8f /* ACPI 2.0 */ +#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 @@ -245,7 +245,7 @@ #define AML_DEBUG_OP (UINT16) 0x5b31 #define AML_FATAL_OP (UINT16) 0x5b32 #define AML_REGION_OP (UINT16) 0x5b80 -#define AML_DEF_FIELD_OP (UINT16) 0x5b81 +#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 @@ -268,14 +268,14 @@ * any valid ACPI ASCII values (A-Z, 0-9, '-') */ -#define AML_NAMEPATH_OP (UINT16) 0x002d -#define AML_NAMEDFIELD_OP (UINT16) 0x0030 -#define AML_RESERVEDFIELD_OP (UINT16) 0x0031 -#define AML_ACCESSFIELD_OP (UINT16) 0x0032 -#define AML_BYTELIST_OP (UINT16) 0x0033 -#define AML_STATICSTRING_OP (UINT16) 0x0034 -#define AML_METHODCALL_OP (UINT16) 0x0035 -#define AML_RETURN_VALUE_OP (UINT16) 0x0036 +#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 ARG_NONE 0x0 @@ -313,7 +313,7 @@ /* "Standard" ACPI types are 1-15 (0x0F) */ -#define ARGI_INTEGER ACPI_TYPE_INTEGER /* 1 */ +#define ARGI_INTEGER ACPI_TYPE_INTEGER /* 1 */ #define ARGI_STRING ACPI_TYPE_STRING /* 2 */ #define ARGI_BUFFER ACPI_TYPE_BUFFER /* 3 */ #define ARGI_PACKAGE ACPI_TYPE_PACKAGE /* 4 */ @@ -328,8 +328,8 @@ #define ARGI_ANYOBJECT 0x11 #define ARGI_ANYTYPE 0x12 #define ARGI_COMPUTEDATA 0x13 /* Buffer, String, or Integer */ -#define ARGI_DATAOBJECT 0x14 /* Buffer, string, package or reference to a Node - Used only by SizeOf operator*/ -#define ARGI_COMPLEXOBJ 0x15 /* Buffer or package */ +#define ARGI_DATAOBJECT 0x14 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/ +#define ARGI_COMPLEXOBJ 0x15 /* Buffer, String, or package (Used by INDEX op only) */ #define ARGI_INTEGER_REF 0x16 #define ARGI_OBJECT_REF 0x17 #define ARGI_DEVICE_REF 0x18 @@ -403,13 +403,14 @@ typedef enum { - REGION_MEMORY = 0, + REGION_MEMORY = 0, REGION_IO, REGION_PCI_CONFIG, REGION_EC, REGION_SMBUS, REGION_CMOS, - REGION_PCI_BAR + REGION_PCI_BAR, + REGION_FIXED_HW = 0x7F, } AML_REGION_TYPES; @@ -418,80 +419,82 @@ typedef enum typedef enum { - MATCH_MTR = 0, - MATCH_MEQ = 1, - MATCH_MLE = 2, - MATCH_MLT = 3, - MATCH_MGE = 4, - MATCH_MGT = 5 + 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 +#define MAX_MATCH_OPERATOR 5 /* Field Access Types */ -#define ACCESS_TYPE_MASK 0x0f -#define ACCESS_TYPE_SHIFT 0 +#define ACCESS_TYPE_MASK 0x0f +#define ACCESS_TYPE_SHIFT 0 typedef enum { - ACCESS_ANY_ACC = 0, - ACCESS_BYTE_ACC = 1, - ACCESS_WORD_ACC = 2, - ACCESS_DWORD_ACC = 3, - ACCESS_BLOCK_ACC = 4, - ACCESS_SMBSEND_RECV_ACC = 5, - ACCESS_SMBQUICK_ACC = 6 + ACCESS_ANY_ACC = 0, + ACCESS_BYTE_ACC = 1, + ACCESS_WORD_ACC = 2, + ACCESS_DWORD_ACC = 3, + ACCESS_QWORD_ACC = 4, /* ACPI 2.0 */ + ACCESS_BLOCK_ACC = 4, + ACCESS_SMBSEND_RECV_ACC = 5, + ACCESS_SMBQUICK_ACC = 6 } AML_ACCESS_TYPE; /* Field Lock Rules */ -#define LOCK_RULE_MASK 0x10 -#define LOCK_RULE_SHIFT 4 +#define LOCK_RULE_MASK 0x10 +#define LOCK_RULE_SHIFT 4 typedef enum { - GLOCK_NEVER_LOCK = 0, - GLOCK_ALWAYS_LOCK = 1 + GLOCK_NEVER_LOCK = 0, + GLOCK_ALWAYS_LOCK = 1 } AML_LOCK_RULE; /* Field Update Rules */ -#define UPDATE_RULE_MASK 0x060 -#define UPDATE_RULE_SHIFT 5 +#define UPDATE_RULE_MASK 0x060 +#define UPDATE_RULE_SHIFT 5 typedef enum { - UPDATE_PRESERVE = 0, - UPDATE_WRITE_AS_ONES = 1, - UPDATE_WRITE_AS_ZEROS = 2 + UPDATE_PRESERVE = 0, + UPDATE_WRITE_AS_ONES = 1, + UPDATE_WRITE_AS_ZEROS = 2 } AML_UPDATE_RULE; /* bit fields in MethodFlags byte */ -#define METHOD_FLAGS_ARG_COUNT 0x07 -#define METHOD_FLAGS_SERIALIZED 0x08 +#define METHOD_FLAGS_ARG_COUNT 0x07 +#define METHOD_FLAGS_SERIALIZED 0x08 +#define METHOD_FLAGS_SYNCH_LEVEL 0xF0 /* Array sizes. Used for range checking also */ -#define NUM_REGION_TYPES 7 -#define NUM_ACCESS_TYPES 7 -#define NUM_UPDATE_RULES 3 -#define NUM_MATCH_OPS 7 -#define NUM_OPCODES 256 -#define NUM_FIELD_NAMES 2 +#define NUM_REGION_TYPES 7 +#define NUM_ACCESS_TYPES 7 +#define NUM_UPDATE_RULES 3 +#define NUM_MATCH_OPS 7 +#define NUM_OPCODES 256 +#define NUM_FIELD_NAMES 2 -#define USER_REGION_BEGIN 0x80 +#define USER_REGION_BEGIN 0x80 /* * AML tables @@ -499,7 +502,7 @@ typedef enum #ifdef DEFINE_AML_GLOBALS -/* External declarations of the AML tables */ +/* External declarations for the AML tables */ extern UINT8 AcpiGbl_Aml [NUM_OPCODES]; extern UINT16 AcpiGbl_Pfx [NUM_OPCODES]; diff --git a/sys/contrib/dev/acpica/dbcmds.c b/sys/contrib/dev/acpica/dbcmds.c index b48e7ea..c1bded4 100644 --- a/sys/contrib/dev/acpica/dbcmds.c +++ b/sys/contrib/dev/acpica/dbcmds.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbcmds - debug commands and output routines - * $Revision: 46 $ + * $Revision: 60 $ * ******************************************************************************/ @@ -125,10 +125,11 @@ #include "acinterp.h" #include "acdebug.h" #include "actables.h" +#include "acresrc.h" #ifdef ENABLE_DEBUGGER -#define _COMPONENT DEBUGGER +#define _COMPONENT ACPI_DEBUGGER MODULE_NAME ("dbcmds") @@ -241,6 +242,33 @@ AcpiDbFindReferences ( /******************************************************************************* * + * FUNCTION: AcpiDbDisplayLocks + * + * PARAMETERS: None + * + * RETURN: None + * + * DESCRIPTION: Display information about internal mutexes. + * + ******************************************************************************/ + +void +AcpiDbDisplayLocks (void) +{ + UINT32 i; + + + for (i = 0; i < MAX_MTX; i++) + { + AcpiOsPrintf ("%26s : %s\n", AcpiUtGetMutexName (i), + AcpiGbl_AcpiMutexInfo[i].OwnerId == ACPI_MUTEX_NOT_ACQUIRED + ? "Locked" : "Unlocked"); + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiDbDisplayTableInfo * * PARAMETERS: TableArg - String with name of table to be displayed @@ -309,7 +337,7 @@ AcpiDbUnloadAcpiTable ( } else { - AcpiOsPrintf ("%s, while unloading [%s]\n", AcpiCmFormatException (Status), TableArg); + AcpiOsPrintf ("%s, while unloading [%s]\n", AcpiUtFormatException (Status), TableArg); } return; @@ -595,7 +623,7 @@ AcpiDbSendNotify ( /* Send the notify */ - AcpiEvNotifyDispatch (Node, Value); + AcpiEvQueueNotifyRequest (Node, Value); break; default: @@ -660,7 +688,7 @@ AcpiDbSetMethodData ( /* Create and initialize the new object */ - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!ObjDesc) { AcpiOsPrintf ("Could not create an internal object\n"); @@ -684,7 +712,7 @@ AcpiDbSetMethodData ( return; } - AcpiDsMethodDataSetValue (MTH_TYPE_ARG, Index, ObjDesc, WalkState); + AcpiDsStoreObjectToLocal (AML_ARG_OP, Index, ObjDesc, WalkState); ObjDesc = WalkState->Arguments[Index].Object; AcpiOsPrintf ("Arg%d: ", Index); @@ -701,7 +729,7 @@ AcpiDbSetMethodData ( return; } - AcpiDsMethodDataSetValue (MTH_TYPE_LOCAL, Index, ObjDesc, WalkState); + AcpiDsStoreObjectToLocal (AML_LOCAL_OP, Index, ObjDesc, WalkState); ObjDesc = WalkState->LocalVariables[Index].Object; AcpiOsPrintf ("Local%d: ", Index); @@ -810,13 +838,11 @@ AcpiDbDisplayObjects ( NATIVE_CHAR *ObjTypeArg, NATIVE_CHAR *DisplayCountArg) { - UINT32 DisplayCount; - OBJECT_TYPE_INTERNAL Type; + ACPI_OBJECT_TYPE8 Type; /* Get the object type */ - STRUPR (ObjTypeArg); Type = AcpiDbMatchArgument (ObjTypeArg, AcpiDbObjectTypes); if (Type == ACPI_TYPE_NOT_FOUND) { @@ -824,20 +850,8 @@ AcpiDbDisplayObjects ( return (AE_OK); } - /* Get the display depth */ - - if (DisplayCountArg) - { - DisplayCount = STRTOUL (DisplayCountArg, NULL, 0); - } - - else - { - DisplayCount = ACPI_UINT32_MAX; - } - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("Objects of type [%s] defined in the current ACPI Namespace: \n", AcpiCmGetTypeName (Type)); + AcpiOsPrintf ("Objects of type [%s] defined in the current ACPI Namespace: \n", AcpiUtGetTypeName (Type)); AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); @@ -871,7 +885,6 @@ AcpiDbWalkAndMatchName ( void *Context, void **ReturnValue) { - ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; NATIVE_CHAR *RequestedName = (NATIVE_CHAR *) Context; UINT32 i; @@ -879,9 +892,6 @@ AcpiDbWalkAndMatchName ( NATIVE_CHAR Buffer[96]; - ObjDesc = ((ACPI_NAMESPACE_NODE *)ObjHandle)->Object; - - /* Check for a name match */ for (i = 0; i < 4; i++) @@ -911,7 +921,7 @@ AcpiDbWalkAndMatchName ( else { AcpiOsPrintf ("%32s (%p) - %s\n", Buffer, ObjHandle, - AcpiCmGetTypeName (((ACPI_NAMESPACE_NODE *) ObjHandle)->Type)); + AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) ObjHandle)->Type)); } return (AE_OK); @@ -1004,7 +1014,7 @@ AcpiDbSetScope ( * * RETURN: None * - * DESCRIPTION: + * DESCRIPTION: * ******************************************************************************/ @@ -1012,11 +1022,10 @@ void AcpiDbDisplayResources ( NATIVE_CHAR *ObjectArg) { +#ifndef _IA16 ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_BUFFER ReturnObj; - PCI_ROUTING_TABLE *Prt; - UINT32 i; AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); @@ -1030,11 +1039,15 @@ AcpiDbDisplayResources ( ReturnObj.Pointer = Buffer; ReturnObj.Length = BUFFER_SIZE; + /* _PRT */ + + AcpiOsPrintf ("Evaluating _PRT\n"); + Status = AcpiEvaluateObject (ObjDesc, "_PRT", NULL, &ReturnObj); if (ACPI_FAILURE (Status)) { - AcpiOsPrintf ("Could not obtain _PRT: %s\n", AcpiCmFormatException (Status)); - goto Cleanup; + AcpiOsPrintf ("Could not obtain _PRT: %s\n", AcpiUtFormatException (Status)); + goto GoCRS; } ReturnObj.Pointer = Buffer; @@ -1043,28 +1056,73 @@ AcpiDbDisplayResources ( Status = AcpiGetIrqRoutingTable (ObjDesc, &ReturnObj); if (ACPI_FAILURE (Status)) { - AcpiOsPrintf ("GetIrqRoutingTable failed: %s\n", AcpiCmFormatException (Status)); + AcpiOsPrintf ("GetIrqRoutingTable failed: %s\n", AcpiUtFormatException (Status)); + goto GoCRS; + } + + + AcpiRsDumpIrqList((UINT8 *)Buffer); + + /* _CRS */ +GoCRS: + AcpiOsPrintf ("Evaluating _CRS\n"); + + ReturnObj.Pointer = Buffer; + ReturnObj.Length = BUFFER_SIZE; + + Status = AcpiEvaluateObject (ObjDesc, "_CRS", NULL, &ReturnObj); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Could not obtain _CRS: %s\n", AcpiUtFormatException (Status)); + goto GoPRS; + } + + ReturnObj.Pointer = Buffer; + ReturnObj.Length = BUFFER_SIZE; + + Status = AcpiGetCurrentResources (ObjDesc, &ReturnObj); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n", AcpiUtFormatException (Status)); + goto GoPRS; + } + + AcpiRsDumpResourceList ((ACPI_RESOURCE *) Buffer); + + /* _PRS */ +GoPRS: + AcpiOsPrintf ("Evaluating _PRS\n"); + + ReturnObj.Pointer = Buffer; + ReturnObj.Length = BUFFER_SIZE; + + Status = AcpiEvaluateObject (ObjDesc, "_PRS", NULL, &ReturnObj); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Could not obtain _PRS: %s\n", AcpiUtFormatException (Status)); goto Cleanup; } - Prt = (PCI_ROUTING_TABLE *) Buffer; - i = 0; - while ((char *) Prt < (Buffer + ReturnObj.Length)) + ReturnObj.Pointer = Buffer; + ReturnObj.Length = BUFFER_SIZE; + + Status = AcpiGetPossibleResources (ObjDesc, &ReturnObj); + if (ACPI_FAILURE (Status)) { - AcpiOsPrintf ("Prt[%d] Src=%s: Addr=%X\n", i, Prt->Source, Prt->Address); - i++; - Prt = (PCI_ROUTING_TABLE *) (((char *) Prt) + Prt->Length); + AcpiOsPrintf ("AcpiGetPossibleResources failed: %s\n", AcpiUtFormatException (Status)); + goto Cleanup; } + AcpiRsDumpResourceList ((ACPI_RESOURCE *) Buffer); + + Cleanup: AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); return; +#endif } - - - #endif /* ENABLE_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/dbdisasm.c b/sys/contrib/dev/acpica/dbdisasm.c index 8d3f7db..edeec3a 100644 --- a/sys/contrib/dev/acpica/dbdisasm.c +++ b/sys/contrib/dev/acpica/dbdisasm.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbdisasm - parser op tree display routines - * $Revision: 37 $ + * $Revision: 40 $ * ******************************************************************************/ @@ -124,7 +124,7 @@ #ifdef ENABLE_DEBUGGER -#define _COMPONENT DEBUGGER +#define _COMPONENT ACPI_DEBUGGER MODULE_NAME ("dbdisasm") @@ -334,9 +334,13 @@ AcpiDbDisplayOp ( } if (AcpiDbBlockType (Op) == BLOCK_PAREN) + { AcpiOsPrintf ("(\n"); + } else + { AcpiOsPrintf ("{\n"); + } } /* Close a block if we are nested less than last time */ @@ -352,9 +356,13 @@ AcpiDbDisplayOp ( } if (AcpiDbBlockType (Op) == BLOCK_PAREN) + { AcpiOsPrintf (")\n"); + } else + { AcpiOsPrintf ("}\n"); + } } } @@ -377,7 +385,7 @@ AcpiDbDisplayOp ( /* Resolve a name reference */ - if ((Op->Opcode == AML_NAMEPATH_OP && Op->Value.Name) && + if ((Op->Opcode == AML_INT_NAMEPATH_OP && Op->Value.Name) && (Op->Parent) && (opt_verbose)) { @@ -706,7 +714,7 @@ AcpiDbDisplayOpcode ( break; - case AML_STATICSTRING_OP: + case AML_INT_STATICSTRING_OP: if (Op->Value.String) { @@ -721,31 +729,31 @@ AcpiDbDisplayOpcode ( break; - case AML_NAMEPATH_OP: + case AML_INT_NAMEPATH_OP: AcpiDbDisplayNamestring (Op->Value.Name); break; - case AML_NAMEDFIELD_OP: + case AML_INT_NAMEDFIELD_OP: AcpiOsPrintf ("NamedField (Length 0x%8.8X) ", Op->Value.Integer); break; - case AML_RESERVEDFIELD_OP: + case AML_INT_RESERVEDFIELD_OP: AcpiOsPrintf ("ReservedField (Length 0x%8.8X) ", Op->Value.Integer); break; - case AML_ACCESSFIELD_OP: + case AML_INT_ACCESSFIELD_OP: AcpiOsPrintf ("AccessField (Length 0x%8.8X) ", Op->Value.Integer); break; - case AML_BYTELIST_OP: + case AML_INT_BYTELIST_OP: if (opt_verbose) { @@ -777,7 +785,7 @@ AcpiDbDisplayOpcode ( #ifndef PARSER_ONLY - if ((Op->Opcode == AML_RETURN_VALUE_OP) && + if ((Op->Opcode == AML_INT_RETURN_VALUE_OP) && (WalkState->Results) && (WalkState->Results->Results.NumResults)) { diff --git a/sys/contrib/dev/acpica/dbdisply.c b/sys/contrib/dev/acpica/dbdisply.c index 3be6f93..81f15b7 100644 --- a/sys/contrib/dev/acpica/dbdisply.c +++ b/sys/contrib/dev/acpica/dbdisply.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbdisply - debug display commands - * $Revision: 41 $ + * $Revision: 45 $ * ******************************************************************************/ @@ -129,7 +129,7 @@ #ifdef ENABLE_DEBUGGER -#define _COMPONENT DEBUGGER +#define _COMPONENT ACPI_DEBUGGER MODULE_NAME ("dbdisply") @@ -300,8 +300,8 @@ AcpiDbDecodeAndDisplayObject ( return; } - AcpiCmDumpBuffer (ObjPtr, sizeof (ACPI_OPERAND_OBJECT), Display, ACPI_UINT32_MAX); - AcpiAmlDumpObjectDescriptor (ObjPtr, 1); + AcpiUtDumpBuffer (ObjPtr, sizeof (ACPI_OPERAND_OBJECT), Display, ACPI_UINT32_MAX); + AcpiExDumpObjectDescriptor (ObjPtr, 1); } else if (VALID_DESCRIPTOR_TYPE ((ObjPtr), ACPI_DESC_TYPE_PARSER)) @@ -315,7 +315,7 @@ AcpiDbDecodeAndDisplayObject ( } - AcpiCmDumpBuffer (ObjPtr, sizeof (ACPI_PARSE_OBJECT), Display, ACPI_UINT32_MAX); + AcpiUtDumpBuffer (ObjPtr, sizeof (ACPI_PARSE_OBJECT), Display, ACPI_UINT32_MAX); AcpiDbDumpParserDescriptor ((ACPI_PARSE_OBJECT *) ObjPtr); } @@ -329,7 +329,7 @@ AcpiDbDecodeAndDisplayObject ( /* Just dump some memory */ - AcpiCmDumpBuffer (ObjPtr, Size, Display, ACPI_UINT32_MAX); + AcpiUtDumpBuffer (ObjPtr, Size, Display, ACPI_UINT32_MAX); } return; @@ -365,8 +365,8 @@ DumpNte: return; } - AcpiCmDumpBuffer ((void *) Node, sizeof (ACPI_NAMESPACE_NODE), Display, ACPI_UINT32_MAX); - AcpiAmlDumpNode (Node, 1); + AcpiUtDumpBuffer ((void *) Node, sizeof (ACPI_NAMESPACE_NODE), Display, ACPI_UINT32_MAX); + AcpiExDumpNode (Node, 1); if (Node->Object) { @@ -377,8 +377,8 @@ DumpNte: return; } - AcpiCmDumpBuffer (Node->Object, sizeof (ACPI_OPERAND_OBJECT), Display, ACPI_UINT32_MAX); - AcpiAmlDumpObjectDescriptor (Node->Object, 1); + AcpiUtDumpBuffer (Node->Object, sizeof (ACPI_OPERAND_OBJECT), Display, ACPI_UINT32_MAX); + AcpiExDumpObjectDescriptor (Node->Object, 1); } } @@ -407,7 +407,7 @@ AcpiDbDecodeInternalObject ( return; } - AcpiOsPrintf (" %s", AcpiCmGetTypeName (ObjDesc->Common.Type)); + AcpiOsPrintf (" %s", AcpiUtGetTypeName (ObjDesc->Common.Type)); switch (ObjDesc->Common.Type) { @@ -472,7 +472,7 @@ AcpiDbDisplayInternalObject ( { AcpiOsPrintf (" Name %4.4s Type-%s", &((ACPI_NAMESPACE_NODE *)ObjDesc)->Name, - AcpiCmGetTypeName (((ACPI_NAMESPACE_NODE *) ObjDesc)->Type)); + AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) ObjDesc)->Type)); if (((ACPI_NAMESPACE_NODE *) ObjDesc)->Flags & ANOBJ_METHOD_ARG) { AcpiOsPrintf (" [Method Arg]"); @@ -498,7 +498,7 @@ AcpiDbDisplayInternalObject ( switch (ObjDesc->Common.Type) { case INTERNAL_TYPE_REFERENCE: - switch (ObjDesc->Reference.OpCode) + switch (ObjDesc->Reference.Opcode) { case AML_ZERO_OP: AcpiOsPrintf ("[Const] Number %.8X", 0); @@ -835,7 +835,6 @@ AcpiDbDisplayCallingTree (void) { UINT32 i; ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; @@ -846,14 +845,12 @@ AcpiDbDisplayCallingTree (void) return; } - ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; AcpiOsPrintf ("Current Control Method Call Tree\n"); for (i = 0; WalkState; i++) { - ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; AcpiOsPrintf (" [%4.4s]\n", &Node->Name); diff --git a/sys/contrib/dev/acpica/dbexec.c b/sys/contrib/dev/acpica/dbexec.c index 8469092..3f6ee91 100644 --- a/sys/contrib/dev/acpica/dbexec.c +++ b/sys/contrib/dev/acpica/dbexec.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbexec - debugger control method execution - * $Revision: 21 $ + * $Revision: 25 $ * ******************************************************************************/ @@ -128,7 +128,7 @@ #ifdef ENABLE_DEBUGGER -#define _COMPONENT DEBUGGER +#define _COMPONENT ACPI_DEBUGGER MODULE_NAME ("dbexec") @@ -333,7 +333,8 @@ AcpiDbExecute ( if (ACPI_FAILURE (Status)) { - AcpiOsPrintf ("Execution of %s failed with status %s\n", Info.Pathname, AcpiCmFormatException (Status)); + AcpiOsPrintf ("Execution of %s failed with status %s\n", + Info.Pathname, AcpiUtFormatException (Status)); } else @@ -342,7 +343,8 @@ AcpiDbExecute ( if (ReturnObj.Length) { - AcpiOsPrintf ("Execution of %s returned object %p\n", Info.Pathname, ReturnObj.Pointer); + AcpiOsPrintf ("Execution of %s returned object %p Buflen %X\n", + Info.Pathname, ReturnObj.Pointer, ReturnObj.Length); AcpiDbDumpObject (ReturnObj.Pointer, 1); } } @@ -381,7 +383,8 @@ AcpiDbMethodThread ( { if (ReturnObj.Length) { - AcpiOsPrintf ("Execution of %s returned object %p\n", Info->Pathname, ReturnObj.Pointer); + AcpiOsPrintf ("Execution of %s returned object %p Buflen %X\n", + Info->Pathname, ReturnObj.Pointer, ReturnObj.Length); AcpiDbDumpObject (ReturnObj.Pointer, 1); } } @@ -438,7 +441,7 @@ AcpiDbCreateExecutionThreads ( Status = AcpiOsCreateSemaphore (1, 0, &ThreadGate); if (ACPI_FAILURE (Status)) { - AcpiOsPrintf ("Could not create semaphore, %s\n", AcpiCmFormatException (Status)); + AcpiOsPrintf ("Could not create semaphore, %s\n", AcpiUtFormatException (Status)); return; } diff --git a/sys/contrib/dev/acpica/dbfileio.c b/sys/contrib/dev/acpica/dbfileio.c index e547839..f3f45bf 100644 --- a/sys/contrib/dev/acpica/dbfileio.c +++ b/sys/contrib/dev/acpica/dbfileio.c @@ -2,7 +2,7 @@ * * Module Name: dbfileio - Debugger file I/O commands. These can't usually * be used when running the debugger in Ring 0 (Kernel mode) - * $Revision: 38 $ + * $Revision: 41 $ * ******************************************************************************/ @@ -125,7 +125,7 @@ #ifdef ENABLE_DEBUGGER -#define _COMPONENT DEBUGGER +#define _COMPONENT ACPI_DEBUGGER MODULE_NAME ("dbfileio") @@ -155,7 +155,7 @@ FILE *DebugFile = NULL; * ******************************************************************************/ -OBJECT_TYPE_INTERNAL +ACPI_OBJECT_TYPE8 AcpiDbMatchArgument ( NATIVE_CHAR *UserArgument, ARGUMENT_INFO *Arguments) @@ -172,7 +172,7 @@ AcpiDbMatchArgument ( { if (STRSTR (Arguments[i].Name, UserArgument) == Arguments[i].Name) { - return ((OBJECT_TYPE_INTERNAL) i); + return ((ACPI_OBJECT_TYPE8) i); } } @@ -311,7 +311,7 @@ AcpiDbLoadTable( /* Allocate a buffer for the table */ *TableLength = TableHeader.Length; - *TablePtr = (ACPI_TABLE_HEADER *) AcpiCmAllocate ((size_t) *TableLength); + *TablePtr = (ACPI_TABLE_HEADER *) AcpiUtAllocate ((size_t) *TableLength); if (!*TablePtr) { AcpiOsPrintf ("Could not allocate memory for the table (size=%X)\n", TableHeader.Length); @@ -342,7 +342,7 @@ AcpiDbLoadTable( AcpiOsPrintf ("Error - could not read the table file\n"); - AcpiCmFree (*TablePtr); + AcpiUtFree (*TablePtr); *TablePtr = NULL; *TableLength = 0; @@ -472,9 +472,9 @@ AcpiDbLoadAcpiTable ( else { AcpiOsPrintf ("Could not install table, %s\n", - AcpiCmFormatException (Status)); + AcpiUtFormatException (Status)); } - AcpiCmFree (TablePtr); + AcpiUtFree (TablePtr); return (Status); } diff --git a/sys/contrib/dev/acpica/dbhistry.c b/sys/contrib/dev/acpica/dbhistry.c index 765c3e1..8749d4f 100644 --- a/sys/contrib/dev/acpica/dbhistry.c +++ b/sys/contrib/dev/acpica/dbhistry.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dbhistry - debugger HISTORY command - * $Revision: 17 $ + * $Revision: 18 $ * *****************************************************************************/ @@ -128,7 +128,7 @@ #ifdef ENABLE_DEBUGGER -#define _COMPONENT DEBUGGER +#define _COMPONENT ACPI_DEBUGGER MODULE_NAME ("dbhistry") diff --git a/sys/contrib/dev/acpica/dbinput.c b/sys/contrib/dev/acpica/dbinput.c index 812dbfe..bcc42d0 100644 --- a/sys/contrib/dev/acpica/dbinput.c +++ b/sys/contrib/dev/acpica/dbinput.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbinput - user front-end to the AML debugger - * $Revision: 56 $ + * $Revision: 61 $ * ******************************************************************************/ @@ -125,7 +125,7 @@ #ifdef ENABLE_DEBUGGER -#define _COMPONENT DEBUGGER +#define _COMPONENT ACPI_DEBUGGER MODULE_NAME ("dbinput") @@ -162,7 +162,7 @@ BOOLEAN opt_ini_methods = TRUE; * This list of commands must match the string table below it */ -enum AcpiAmlDebuggerCommands +enum AcpiExDebuggerCommands { CMD_NOT_FOUND = 0, CMD_NULL, @@ -191,6 +191,7 @@ enum AcpiAmlDebuggerCommands CMD_LIST, CMD_LOAD, CMD_LOCALS, + CMD_LOCKS, CMD_METHODS, CMD_NAMESPACE, CMD_NOTIFY, @@ -244,6 +245,7 @@ COMMAND_INFO Commands[] = {"LIST", 0}, {"LOAD", 1}, {"LOCALS", 0}, + {"LOCKS", 0}, {"METHODS", 0}, {"NAMESPACE", 0}, {"NOTIFY", 2}, @@ -318,6 +320,7 @@ AcpiDbDisplayHelp ( 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|Tables] Display namespace and memory statistics\n"); @@ -353,7 +356,7 @@ AcpiDbDisplayHelp ( 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 AcpiAml Opcodes] Display method ASL statements\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"); @@ -597,7 +600,7 @@ AcpiDbCommandDispatch ( break; case CMD_ALLOCATIONS: - AcpiCmDumpCurrentAllocations ((UINT32) -1, NULL); + AcpiUtDumpCurrentAllocations ((UINT32) -1, NULL); break; case CMD_ARGS: @@ -669,7 +672,9 @@ AcpiDbCommandDispatch ( Status = AcpiDbCommandDispatch (CommandLine, WalkState, Op); if (ACPI_SUCCESS (Status)) + { Status = AE_CTRL_TRUE; + } return (Status); break; @@ -682,7 +687,9 @@ AcpiDbCommandDispatch ( Status = AcpiDbCommandDispatch (CommandLine, WalkState, Op); if (ACPI_SUCCESS (Status)) + { Status = AE_CTRL_TRUE; + } return (Status); case CMD_INFORMATION: @@ -732,6 +739,10 @@ AcpiDbCommandDispatch ( } break; + case CMD_LOCKS: + AcpiDbDisplayLocks (); + break; + case CMD_LOCALS: AcpiDbDisplayLocals (); break; @@ -750,7 +761,7 @@ AcpiDbCommandDispatch ( break; case CMD_OBJECT: - AcpiDbDisplayObjects (Args[1], Args[2]); + AcpiDbDisplayObjects (STRUPR (Args[1]), Args[2]); break; case CMD_OPEN: @@ -795,7 +806,7 @@ AcpiDbCommandDispatch ( case CMD_TERMINATE: AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); - AcpiCmSubsystemShutdown (); + AcpiUtSubsystemShutdown (); /* TBD: [Restructure] Need some way to re-initialize without re-creating the semaphores! */ @@ -818,7 +829,8 @@ AcpiDbCommandDispatch ( case CMD_QUIT: if (Op) { - return (AE_AML_ERROR); + AcpiOsPrintf ("Method execution terminated\n"); + return (AE_CTRL_TERMINATE); } if (!OutputToFile) @@ -828,7 +840,7 @@ AcpiDbCommandDispatch ( /* Shutdown */ - /* AcpiCmSubsystemShutdown (); */ + /* AcpiUtSubsystemShutdown (); */ AcpiDbCloseDebugFile (); AcpiGbl_DbTerminateThreads = TRUE; @@ -873,9 +885,9 @@ AcpiDbExecuteThread ( AcpiGbl_MethodExecuting = FALSE; AcpiGbl_StepToNextCall = FALSE; - AcpiCmAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); + AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); Status = AcpiDbCommandDispatch (LineBuf, NULL, NULL); - AcpiCmReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); + AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); } } @@ -962,8 +974,8 @@ AcpiDbUserCommands ( * and wait for the command to complete. */ - AcpiCmReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); - AcpiCmAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); + AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); + AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); } else diff --git a/sys/contrib/dev/acpica/dbstats.c b/sys/contrib/dev/acpica/dbstats.c index f4531ea..8d0c9bb 100644 --- a/sys/contrib/dev/acpica/dbstats.c +++ b/sys/contrib/dev/acpica/dbstats.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbstats - Generation and display of ACPI table statistics - * $Revision: 37 $ + * $Revision: 40 $ * ******************************************************************************/ @@ -123,7 +123,7 @@ #ifdef ENABLE_DEBUGGER -#define _COMPONENT DEBUGGER +#define _COMPONENT ACPI_DEBUGGER MODULE_NAME ("dbstats") /* @@ -409,7 +409,7 @@ AcpiDbDisplayStatistics ( { #ifndef PARSER_ONLY case CMD_ALLOCATIONS: - AcpiCmDumpAllocationInfo (); + AcpiUtDumpAllocationInfo (); break; #endif @@ -430,7 +430,7 @@ AcpiDbDisplayStatistics ( for (i = 0; i < INTERNAL_TYPE_NODE_MAX; i++) { - AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiCmGetTypeName (i), + AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiUtGetTypeName (i), AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]); } AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "Misc/Unknown", @@ -498,7 +498,7 @@ AcpiDbDisplayStatistics ( AcpiOsPrintf ("Mutex usage:\n\n"); for (i = 0; i < NUM_MTX; i++) { - AcpiOsPrintf ("%-20s: % 7ld\n", AcpiCmGetMutexName (i), AcpiGbl_AcpiMutexInfo[i].UseCount); + AcpiOsPrintf ("%-28s: % 7ld\n", AcpiUtGetMutexName (i), AcpiGbl_AcpiMutexInfo[i].UseCount); } break; @@ -512,7 +512,7 @@ AcpiDbDisplayStatistics ( 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 ("FieldUnit %3d\n", sizeof (ACPI_OBJECT_FIELD_UNIT)); + 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)); @@ -521,7 +521,7 @@ AcpiDbDisplayStatistics ( 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 ("Field %3d\n", sizeof (ACPI_OBJECT_FIELD)); + 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)); diff --git a/sys/contrib/dev/acpica/dbutils.c b/sys/contrib/dev/acpica/dbutils.c index 2c0bae7..6d1ae06 100644 --- a/sys/contrib/dev/acpica/dbutils.c +++ b/sys/contrib/dev/acpica/dbutils.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbutils - AML debugger utilities - * $Revision: 35 $ + * $Revision: 37 $ * ******************************************************************************/ @@ -128,7 +128,7 @@ #ifdef ENABLE_DEBUGGER -#define _COMPONENT DEBUGGER +#define _COMPONENT ACPI_DEBUGGER MODULE_NAME ("dbutils") @@ -186,7 +186,7 @@ AcpiDbDumpBuffer ( AcpiOsPrintf ("\nLocation %X:\n", Address); AcpiDbgLevel |= TRACE_TABLES; - AcpiCmDumpBuffer ((UINT8 *) Address, 64, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); + AcpiUtDumpBuffer ((UINT8 *) Address, 64, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); } @@ -249,7 +249,7 @@ AcpiDbDumpObject ( case ACPI_TYPE_BUFFER: AcpiOsPrintf ("[Buffer] Value: "); - AcpiCmDumpBuffer ((UINT8 *) ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); + AcpiUtDumpBuffer ((UINT8 *) ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); break; @@ -450,11 +450,11 @@ AcpiDbLocalNsLookup ( if (ACPI_FAILURE (Status)) { - AcpiOsPrintf ("Could not locate name: %s %s\n", Name, AcpiCmFormatException (Status)); + AcpiOsPrintf ("Could not locate name: %s %s\n", Name, AcpiUtFormatException (Status)); } - AcpiCmFree (InternalPath); + AcpiUtFree (InternalPath); return (Node); } diff --git a/sys/contrib/dev/acpica/dbxface.c b/sys/contrib/dev/acpica/dbxface.c index 4116655..28c49a6 100644 --- a/sys/contrib/dev/acpica/dbxface.c +++ b/sys/contrib/dev/acpica/dbxface.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbxface - AML Debugger external interfaces - * $Revision: 34 $ + * $Revision: 37 $ * ******************************************************************************/ @@ -127,7 +127,7 @@ #ifdef ENABLE_DEBUGGER -#define _COMPONENT DEBUGGER +#define _COMPONENT ACPI_DEBUGGER MODULE_NAME ("dbxface") @@ -180,7 +180,7 @@ AcpiDbSingleStep ( * namely, opcodes that have arguments */ - if (Op->Opcode == AML_NAMEDFIELD_OP) + if (Op->Opcode == AML_INT_NAMEDFIELD_OP) { return (AE_OK); } @@ -199,7 +199,7 @@ AcpiDbSingleStep ( case OPTYPE_NAMED_OBJECT: switch (Op->Opcode) { - case AML_NAMEPATH_OP: + case AML_INT_NAMEPATH_OP: return (AE_OK); break; } @@ -288,7 +288,7 @@ AcpiDbSingleStep ( if (AcpiGbl_StepToNextCall) { - if (Op->Opcode != AML_METHODCALL_OP) + if (Op->Opcode != AML_INT_METHODCALL_OP) { /* Not a method call, just keep executing */ @@ -306,7 +306,7 @@ AcpiDbSingleStep ( * by default. */ - if (Op->Opcode == AML_METHODCALL_OP) + if (Op->Opcode == AML_INT_METHODCALL_OP) { AcpiGbl_CmSingleStep = FALSE; /* No more single step while executing called method */ @@ -320,7 +320,7 @@ AcpiDbSingleStep ( /* TBD: [Investigate] what are the namespace locking issues here */ - /* AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); */ + /* AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); */ /* Go into the command loop and await next user command */ @@ -332,8 +332,8 @@ AcpiDbSingleStep ( { /* Handshake with the front-end that gets user command lines */ - AcpiCmReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - AcpiCmAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); + AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); + AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); } else @@ -363,7 +363,7 @@ AcpiDbSingleStep ( Status = AcpiDbCommandDispatch (LineBuf, WalkState, Op); } - /* AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); */ + /* AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); */ /* User commands complete, continue execution of the interrupted method */ @@ -409,8 +409,8 @@ AcpiDbInitialize (void) { /* These were created with one unit, grab it */ - AcpiCmAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - AcpiCmAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); + AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); + AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); /* Create the debug execution thread to execute commands */ diff --git a/sys/contrib/dev/acpica/dsfield.c b/sys/contrib/dev/acpica/dsfield.c index 11f304d..2239077 100644 --- a/sys/contrib/dev/acpica/dsfield.c +++ b/sys/contrib/dev/acpica/dsfield.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsfield - Dispatcher field routines - * $Revision: 31 $ + * $Revision: 41 $ * *****************************************************************************/ @@ -123,7 +123,7 @@ #include "acnamesp.h" -#define _COMPONENT DISPATCHER +#define _COMPONENT ACPI_DISPATCHER MODULE_NAME ("dsfield") @@ -143,7 +143,8 @@ * FUNCTION: AcpiDsCreateField * * PARAMETERS: Op - Op containing the Field definition and args - * RegionNode - Object for the containing Operation Region + * RegionNode - Object for the containing Operation Region + * ` WalkState - Current method state * * RETURN: Status * @@ -161,7 +162,6 @@ AcpiDsCreateField ( ACPI_PARSE_OBJECT *Arg; ACPI_NAMESPACE_NODE *Node; UINT8 FieldFlags; - UINT8 AccessAttribute = 0; UINT32 FieldBitPosition = 0; @@ -174,10 +174,8 @@ AcpiDsCreateField ( if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.Name, - ACPI_TYPE_REGION, IMODE_EXECUTE, - NS_SEARCH_PARENT, WalkState, - &RegionNode); - + ACPI_TYPE_REGION, IMODE_EXECUTE, + NS_SEARCH_PARENT, WalkState, &RegionNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -196,35 +194,30 @@ AcpiDsCreateField ( { switch (Arg->Opcode) { - case AML_RESERVEDFIELD_OP: + case AML_INT_RESERVEDFIELD_OP: FieldBitPosition += Arg->Value.Size; break; - case AML_ACCESSFIELD_OP: + case AML_INT_ACCESSFIELD_OP: /* * Get a new AccessType and AccessAttribute for all * entries (until end or another AccessAs keyword) */ - - AccessAttribute = (UINT8) Arg->Value.Integer; - FieldFlags = (UINT8) - ((FieldFlags & FIELD_ACCESS_TYPE_MASK) || - ((UINT8) (Arg->Value.Integer >> 8))); + FieldFlags = (UINT8) ((FieldFlags & FIELD_ACCESS_TYPE_MASK) || + ((UINT8) (Arg->Value.Integer >> 8))); break; - case AML_NAMEDFIELD_OP: + case AML_INT_NAMEDFIELD_OP: Status = AcpiNsLookup (WalkState->ScopeInfo, (NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)Arg)->Name, - INTERNAL_TYPE_DEF_FIELD, - IMODE_LOAD_PASS1, + INTERNAL_TYPE_REGION_FIELD, IMODE_LOAD_PASS1, NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NULL, &Node); - if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -235,9 +228,8 @@ AcpiDsCreateField ( * the object stack */ - Status = AcpiAmlPrepDefFieldValue (Node, RegionNode, FieldFlags, - AccessAttribute, FieldBitPosition, Arg->Value.Size); - + Status = AcpiExPrepRegionFieldValue (Node, RegionNode, FieldFlags, + FieldBitPosition, Arg->Value.Size); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -261,7 +253,8 @@ AcpiDsCreateField ( * FUNCTION: AcpiDsCreateBankField * * PARAMETERS: Op - Op containing the Field definition and args - * RegionNode - Object for the containing Operation Region + * RegionNode - Object for the containing Operation Region + * ` WalkState - Current method state * * RETURN: Status * @@ -281,7 +274,6 @@ AcpiDsCreateBankField ( ACPI_NAMESPACE_NODE *Node; UINT32 BankValue; UINT8 FieldFlags; - UINT8 AccessAttribute = 0; UINT32 FieldBitPosition = 0; @@ -294,10 +286,8 @@ AcpiDsCreateBankField ( if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.Name, - ACPI_TYPE_REGION, IMODE_EXECUTE, - NS_SEARCH_PARENT, WalkState, - &RegionNode); - + ACPI_TYPE_REGION, IMODE_EXECUTE, + NS_SEARCH_PARENT, WalkState, &RegionNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -309,11 +299,9 @@ AcpiDsCreateBankField ( Arg = Arg->Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - INTERNAL_TYPE_BANK_FIELD_DEFN, - IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, &RegisterNode); - + INTERNAL_TYPE_BANK_FIELD_DEFN, IMODE_LOAD_PASS1, + NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, + NULL, &RegisterNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -337,35 +325,30 @@ AcpiDsCreateBankField ( { switch (Arg->Opcode) { - case AML_RESERVEDFIELD_OP: + case AML_INT_RESERVEDFIELD_OP: FieldBitPosition += Arg->Value.Size; break; - case AML_ACCESSFIELD_OP: + case AML_INT_ACCESSFIELD_OP: /* * Get a new AccessType and AccessAttribute for * all entries (until end or another AccessAs keyword) */ - - AccessAttribute = (UINT8) Arg->Value.Integer; - FieldFlags = (UINT8) - ((FieldFlags & FIELD_ACCESS_TYPE_MASK) || - ((UINT8) (Arg->Value.Integer >> 8))); + FieldFlags = (UINT8) ((FieldFlags & FIELD_ACCESS_TYPE_MASK) || + ((UINT8) (Arg->Value.Integer >> 8))); break; - case AML_NAMEDFIELD_OP: + case AML_INT_NAMEDFIELD_OP: Status = AcpiNsLookup (WalkState->ScopeInfo, (NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)Arg)->Name, - INTERNAL_TYPE_DEF_FIELD, - IMODE_LOAD_PASS1, + INTERNAL_TYPE_REGION_FIELD, IMODE_LOAD_PASS1, NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NULL, &Node); - if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -376,10 +359,9 @@ AcpiDsCreateBankField ( * the object stack */ - Status = AcpiAmlPrepBankFieldValue (Node, RegionNode, RegisterNode, - BankValue, FieldFlags, AccessAttribute, - FieldBitPosition, Arg->Value.Size); - + Status = AcpiExPrepBankFieldValue (Node, RegionNode, RegisterNode, + BankValue, FieldFlags, FieldBitPosition, + Arg->Value.Size); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -404,7 +386,8 @@ AcpiDsCreateBankField ( * FUNCTION: AcpiDsCreateIndexField * * PARAMETERS: Op - Op containing the Field definition and args - * RegionNode - Object for the containing Operation Region + * RegionNode - Object for the containing Operation Region + * ` WalkState - Current method state * * RETURN: Status * @@ -415,7 +398,7 @@ AcpiDsCreateBankField ( ACPI_STATUS AcpiDsCreateIndexField ( ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE RegionNode, + ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; @@ -424,7 +407,6 @@ AcpiDsCreateIndexField ( ACPI_NAMESPACE_NODE *IndexRegisterNode; ACPI_NAMESPACE_NODE *DataRegisterNode; UINT8 FieldFlags; - UINT8 AccessAttribute = 0; UINT32 FieldBitPosition = 0; @@ -436,10 +418,9 @@ AcpiDsCreateIndexField ( /* First arg is the name of the Index register */ Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - ACPI_TYPE_ANY, IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, &IndexRegisterNode); - + ACPI_TYPE_ANY, IMODE_LOAD_PASS1, + NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, + NULL, &IndexRegisterNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -450,11 +431,9 @@ AcpiDsCreateIndexField ( Arg = Arg->Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - INTERNAL_TYPE_INDEX_FIELD_DEFN, - IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, &DataRegisterNode); - + INTERNAL_TYPE_INDEX_FIELD_DEFN, IMODE_LOAD_PASS1, + NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, + NULL, &DataRegisterNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -474,35 +453,30 @@ AcpiDsCreateIndexField ( { switch (Arg->Opcode) { - case AML_RESERVEDFIELD_OP: + case AML_INT_RESERVEDFIELD_OP: FieldBitPosition += Arg->Value.Size; break; - case AML_ACCESSFIELD_OP: + case AML_INT_ACCESSFIELD_OP: /* * Get a new AccessType and AccessAttribute for all * entries (until end or another AccessAs keyword) */ - - AccessAttribute = (UINT8) Arg->Value.Integer; - FieldFlags = (UINT8) - ((FieldFlags & FIELD_ACCESS_TYPE_MASK) || - ((UINT8) (Arg->Value.Integer >> 8))); + FieldFlags = (UINT8) ((FieldFlags & FIELD_ACCESS_TYPE_MASK) || + ((UINT8) (Arg->Value.Integer >> 8))); break; - case AML_NAMEDFIELD_OP: + case AML_INT_NAMEDFIELD_OP: Status = AcpiNsLookup (WalkState->ScopeInfo, - (NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)Arg)->Name, - INTERNAL_TYPE_INDEX_FIELD, - IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, &Node); - + (NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)Arg)->Name, + INTERNAL_TYPE_INDEX_FIELD, IMODE_LOAD_PASS1, + NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, + NULL, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -513,10 +487,9 @@ AcpiDsCreateIndexField ( * the object stack */ - Status = AcpiAmlPrepIndexFieldValue (Node, IndexRegisterNode, DataRegisterNode, - FieldFlags, AccessAttribute, + Status = AcpiExPrepIndexFieldValue (Node, IndexRegisterNode, + DataRegisterNode, FieldFlags, FieldBitPosition, Arg->Value.Size); - if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -530,8 +503,7 @@ AcpiDsCreateIndexField ( default: - DEBUG_PRINT (ACPI_ERROR, - ("DsEnterIndexField: Invalid opcode in field list: %X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Invalid opcode in field list: %X\n", Arg->Opcode)); Status = AE_AML_ERROR; break; diff --git a/sys/contrib/dev/acpica/dsmethod.c b/sys/contrib/dev/acpica/dsmethod.c index 02e1322..585b856 100644 --- a/sys/contrib/dev/acpica/dsmethod.c +++ b/sys/contrib/dev/acpica/dsmethod.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsmethod - Parser/Interpreter interface - control method parsing - * $Revision: 56 $ + * $Revision: 63 $ * *****************************************************************************/ @@ -126,7 +126,7 @@ #include "acdebug.h" -#define _COMPONENT DISPATCHER +#define _COMPONENT ACPI_DISPATCHER MODULE_NAME ("dsmethod") @@ -169,8 +169,7 @@ AcpiDsParseMethod ( return_ACPI_STATUS (AE_NULL_ENTRY); } - DEBUG_PRINT (ACPI_INFO, - ("DsParseMethod: **** Parsing [%4.4s] **** NamedObj=%p\n", + DEBUG_PRINTP (ACPI_INFO, ("**** Parsing [%4.4s] **** NamedObj=%p\n", &((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, ObjHandle)); @@ -188,7 +187,8 @@ AcpiDsParseMethod ( if ((ObjDesc->Method.Concurrency != INFINITE_CONCURRENCY) && (!ObjDesc->Method.Semaphore)) { - Status = AcpiOsCreateSemaphore (1,ObjDesc->Method.Concurrency, + Status = AcpiOsCreateSemaphore (ObjDesc->Method.Concurrency, + ObjDesc->Method.Concurrency, &ObjDesc->Method.Semaphore); if (ACPI_FAILURE (Status)) { @@ -200,7 +200,6 @@ AcpiDsParseMethod ( * Allocate a new parser op to be the root of the parsed * method tree */ - Op = AcpiPsAllocOp (AML_METHOD_OP); if (!Op) { @@ -216,15 +215,13 @@ AcpiDsParseMethod ( /* * Parse the method, first pass * - * The first pass load is - * where newly declared named objects are + * The first pass load is where newly declared named objects are * added into the namespace. Actual evaluation of * the named objects (what would be called a "second * pass") happens during the actual execution of the * method so that operands to the named objects can * take on dynamic run-time values. */ - Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode, ObjDesc->Method.PcodeLength, ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE, @@ -238,11 +235,10 @@ AcpiDsParseMethod ( /* Get a new OwnerId for objects created by this method */ - OwnerId = AcpiCmAllocateOwnerId (OWNER_TYPE_METHOD); + OwnerId = AcpiUtAllocateOwnerId (OWNER_TYPE_METHOD); ObjDesc->Method.OwningId = OwnerId; - DEBUG_PRINT (ACPI_INFO, - ("DsParseMethod: **** [%4.4s] Parsed **** NamedObj=%p Op=%p\n", + DEBUG_PRINTP (ACPI_INFO, ("**** [%4.4s] Parsed **** NamedObj=%p Op=%p\n", &((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, ObjHandle, Op)); /* Install the parsed tree in the method object */ @@ -250,7 +246,6 @@ AcpiDsParseMethod ( AcpiPsDeleteParseTree (Op); - return_ACPI_STATUS (Status); } @@ -259,8 +254,9 @@ AcpiDsParseMethod ( * * FUNCTION: AcpiDsBeginMethodExecution * - * PARAMETERS: MethodNode - Node of the method + * PARAMETERS: MethodNode - Node of the method * ObjDesc - The method object + * CallingMethodNode - Caller of this method (if non-null) * * RETURN: Status * @@ -275,7 +271,8 @@ AcpiDsParseMethod ( ACPI_STATUS AcpiDsBeginMethodExecution ( ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT *ObjDesc) + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_NAMESPACE_NODE *CallingMethodNode) { ACPI_STATUS Status = AE_OK; @@ -288,36 +285,44 @@ AcpiDsBeginMethodExecution ( return_ACPI_STATUS (AE_NULL_ENTRY); } - ObjDesc = AcpiNsGetAttachedObject (MethodNode); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NULL_OBJECT); - } - /* * If there is a concurrency limit on this method, we need to - * obtain a unit from the method semaphore. This releases the - * interpreter if we block + * obtain a unit from the method semaphore. */ - if (ObjDesc->Method.Semaphore) { - Status = AcpiAmlSystemWaitSemaphore (ObjDesc->Method.Semaphore, + /* + * Allow recursive method calls, up to the reentrancy/concurrency + * limit imposed by the SERIALIZED rule and the SyncLevel method + * parameter. + * + * The point of this code is to avoid permanently blocking a + * thread that is making recursive method calls. + */ + if (MethodNode == CallingMethodNode) + { + if (ObjDesc->Method.ThreadCount >= ObjDesc->Method.Concurrency) + { + return_ACPI_STATUS (AE_AML_METHOD_LIMIT); + } + } + + /* + * Get a unit from the method semaphore. This releases the + * interpreter if we block + */ + Status = AcpiExSystemWaitSemaphore (ObjDesc->Method.Semaphore, WAIT_FOREVER); } /* - * Increment the method parse tree thread count since there - * is one additional thread executing in it. If configured - * for deletion-on-exit, the parse tree will be deleted when - * the last thread completes execution of the method + * 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); } @@ -351,14 +356,12 @@ AcpiDsCallControlMethod ( FUNCTION_TRACE_PTR ("DsCallControlMethod", ThisWalkState); - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCall, execute method %p, currentstate=%p\n", + DEBUG_PRINTP (TRACE_DISPATCH, ("Execute 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) { @@ -374,13 +377,13 @@ AcpiDsCallControlMethod ( /* Init for new method, wait on concurrency semaphore */ - Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc); + Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc, + ThisWalkState->MethodNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } - /* Create and initialize a new parser state */ ParserState = AcpiPsCreateState (ObjDesc->Method.Pcode, @@ -433,7 +436,6 @@ AcpiDsCallControlMethod ( * stack. Operands on the previous walk state stack always * start at index 0. */ - Status = AcpiDsMethodDataInitArgs (&ThisWalkState->Operands[0], ThisWalkState->NumOperands, NextWalkState); @@ -451,7 +453,7 @@ AcpiDsCallControlMethod ( return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode, + Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode, ObjDesc->Method.PcodeLength, ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE, MethodNode, NULL, NULL, @@ -463,10 +465,9 @@ AcpiDsCallControlMethod ( * Delete the operands on the previous walkstate operand stack * (they were copied to new objects) */ - for (i = 0; i < ObjDesc->Method.ParamCount; i++) { - AcpiCmRemoveReference (ThisWalkState->Operands [i]); + AcpiUtRemoveReference (ThisWalkState->Operands [i]); ThisWalkState->Operands [i] = NULL; } @@ -475,8 +476,8 @@ AcpiDsCallControlMethod ( ThisWalkState->NumOperands = 0; - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCall, starting nested execution, newstate=%p\n", NextWalkState)); + DEBUG_PRINTP (TRACE_DISPATCH, ("Starting nested execution, newstate=%p\n", + NextWalkState)); return_ACPI_STATUS (AE_OK); @@ -523,11 +524,10 @@ AcpiDsRestartControlMethod ( * Get the return value (if any) from the previous method. * NULL if no return value */ - Status = AcpiDsResultPush (ReturnDesc, WalkState); if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ReturnDesc); + AcpiUtRemoveReference (ReturnDesc); return_ACPI_STATUS (Status); } } @@ -538,14 +538,14 @@ AcpiDsRestartControlMethod ( * Delete the return value if it will not be used by the * calling method */ - AcpiCmRemoveReference (ReturnDesc); + AcpiUtRemoveReference (ReturnDesc); } } - DEBUG_PRINT (TRACE_DISPATCH, - ("DsRestart: Method=%p Return=%p ReturnUsed?=%X ResStack=%p State=%p\n", - WalkState->MethodCallOp, ReturnDesc, WalkState->ReturnUsed, + DEBUG_PRINTP (TRACE_DISPATCH, + ("Method=%p Return=%p ReturnUsed?=%X ResStack=%p State=%p\n", + WalkState->MethodCallOp, ReturnDesc, WalkState->ReturnUsed, WalkState->Results, WalkState)); @@ -571,7 +571,6 @@ ACPI_STATUS AcpiDsTerminateControlMethod ( ACPI_WALK_STATE *WalkState) { - ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *MethodNode; @@ -596,16 +595,15 @@ AcpiDsTerminateControlMethod ( * If this is the last thread executing the method, * we have additional cleanup to perform */ - - AcpiCmAcquireMutex (ACPI_MTX_PARSER); + AcpiUtAcquireMutex (ACPI_MTX_PARSER); /* Signal completion of the execution of this method if necessary */ if (WalkState->MethodDesc->Method.Semaphore) { - Status = AcpiOsSignalSemaphore ( - WalkState->MethodDesc->Method.Semaphore, 1); + AcpiOsSignalSemaphore ( + WalkState->MethodDesc->Method.Semaphore, 1); } /* Decrement the thread count on the method parse tree */ @@ -620,11 +618,12 @@ AcpiDsTerminateControlMethod ( * The method Node is stored in the walk state */ MethodNode = WalkState->MethodNode; + /* * Delete any namespace entries created immediately underneath * the method */ - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (MethodNode->Child) { AcpiNsDeleteNamespaceSubtree (MethodNode); @@ -635,10 +634,10 @@ AcpiDsTerminateControlMethod ( * the namespace */ AcpiNsDeleteNamespaceByOwner (WalkState->MethodDesc->Method.OwningId); - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } - AcpiCmReleaseMutex (ACPI_MTX_PARSER); + AcpiUtReleaseMutex (ACPI_MTX_PARSER); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/dsmthdat.c b/sys/contrib/dev/acpica/dsmthdat.c index 0734ce6..100c3a1 100644 --- a/sys/contrib/dev/acpica/dsmthdat.c +++ b/sys/contrib/dev/acpica/dsmthdat.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dsmthdat - control method arguments and local variables - * $Revision: 39 $ + * $Revision: 46 $ * ******************************************************************************/ @@ -124,7 +124,7 @@ #include "acnamesp.h" -#define _COMPONENT DISPATCHER +#define _COMPONENT ACPI_DISPATCHER MODULE_NAME ("dsmthdat") @@ -154,7 +154,7 @@ AcpiDsMethodDataInit ( /* * WalkState fields are initialized to zero by the - * AcpiCmCallocate(). + * AcpiUtCallocate(). * * An Node is assigned to each argument and local so * that RefOf() can return a pointer to the Node. @@ -215,16 +215,14 @@ AcpiDsMethodDataDeleteAll ( /* Delete the locals */ - DEBUG_PRINT (ACPI_INFO, - ("MethodDeleteAll: Deleting local variables in %p\n", WalkState)); + DEBUG_PRINTP (ACPI_INFO, ("Deleting local variables in %p\n", WalkState)); for (Index = 0; Index < MTH_NUM_LOCALS; Index++) { Object = WalkState->LocalVariables[Index].Object; if (Object) { - DEBUG_PRINT (TRACE_EXEC, - ("MethodDeleteAll: Deleting Local%d=%p\n", Index, Object)); + DEBUG_PRINTP (TRACE_EXEC, ("Deleting Local%d=%p\n", Index, Object)); /* Remove first */ @@ -232,23 +230,21 @@ AcpiDsMethodDataDeleteAll ( /* Was given a ref when stored */ - AcpiCmRemoveReference (Object); + AcpiUtRemoveReference (Object); } } /* Delete the arguments */ - DEBUG_PRINT (ACPI_INFO, - ("MethodDeleteAll: Deleting arguments in %p\n", WalkState)); + DEBUG_PRINTP (ACPI_INFO, ("Deleting arguments in %p\n", WalkState)); for (Index = 0; Index < MTH_NUM_ARGS; Index++) { Object = WalkState->Arguments[Index].Object; if (Object) { - DEBUG_PRINT (TRACE_EXEC, - ("MethodDeleteAll: Deleting Arg%d=%p\n", Index, Object)); + DEBUG_PRINTP (TRACE_EXEC, ("Deleting Arg%d=%p\n", Index, Object)); /* Remove first */ @@ -256,7 +252,7 @@ AcpiDsMethodDataDeleteAll ( /* Was given a ref when stored */ - AcpiCmRemoveReference (Object); + AcpiUtRemoveReference (Object); } } @@ -294,8 +290,7 @@ AcpiDsMethodDataInitArgs ( if (!Params) { - DEBUG_PRINT (TRACE_EXEC, - ("DsMethodDataInitArgs: No param list passed to method\n")); + DEBUG_PRINTP (TRACE_EXEC, ("No param list passed to method\n")); return_ACPI_STATUS (AE_OK); } @@ -312,8 +307,8 @@ AcpiDsMethodDataInitArgs ( * Set the current method argument to the * Params[Pindex++] argument object descriptor */ - Status = AcpiDsMethodDataSetValue (MTH_TYPE_ARG, Mindex, - Params[Pindex], WalkState); + Status = AcpiDsStoreObjectToLocal (AML_ARG_OP, Mindex, + Params[Pindex], WalkState); if (ACPI_FAILURE (Status)) { break; @@ -328,8 +323,7 @@ AcpiDsMethodDataInitArgs ( } } - DEBUG_PRINT (TRACE_EXEC, - ("DsMethodDataInitArgs: %d args passed to method\n", Pindex)); + DEBUG_PRINTP (TRACE_EXEC, ("%d args passed to method\n", Pindex)); return_ACPI_STATUS (AE_OK); } @@ -338,7 +332,7 @@ AcpiDsMethodDataInitArgs ( * * FUNCTION: AcpiDsMethodDataGetEntry * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG + * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP * Index - Which localVar or argument to get * Entry - Pointer to where a pointer to the stack * entry is returned. @@ -346,13 +340,13 @@ AcpiDsMethodDataInitArgs ( * * RETURN: Status * - * DESCRIPTION: Get the address of the stack entry given by Type:Index + * DESCRIPTION: Get the address of the object entry given by Opcode:Index * ******************************************************************************/ ACPI_STATUS AcpiDsMethodDataGetEntry ( - UINT32 Type, + UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT ***Entry) @@ -363,46 +357,42 @@ AcpiDsMethodDataGetEntry ( /* * Get the requested object. - * The stack "Type" is either a LocalVariable or an Argument + * The stack "Opcode" is either a LocalVariable or an Argument */ - switch (Type) + switch (Opcode) { - case MTH_TYPE_LOCAL: + case AML_LOCAL_OP: if (Index > MTH_MAX_LOCAL) { - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: LocalVar index %d is invalid (max %d)\n", + DEBUG_PRINTP (ACPI_ERROR, ("LocalVar index %d is invalid (max %d)\n", Index, MTH_MAX_LOCAL)); return_ACPI_STATUS (AE_BAD_PARAMETER); } - *Entry = - (ACPI_OPERAND_OBJECT **) &WalkState->LocalVariables[Index].Object; + *Entry = (ACPI_OPERAND_OBJECT **) + &WalkState->LocalVariables[Index].Object; break; - case MTH_TYPE_ARG: + case AML_ARG_OP: if (Index > MTH_MAX_ARG) { - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: Argument index %d is invalid (max %d)\n", + DEBUG_PRINTP (ACPI_ERROR, ("Arg index %d is invalid (max %d)\n", Index, MTH_MAX_ARG)); return_ACPI_STATUS (AE_BAD_PARAMETER); } - *Entry = - (ACPI_OPERAND_OBJECT **) &WalkState->Arguments[Index].Object; + *Entry = (ACPI_OPERAND_OBJECT **) + &WalkState->Arguments[Index].Object; break; default: - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: Stack type %d is invalid\n", - Type)); + DEBUG_PRINTP (ACPI_ERROR, ("Opcode %d is invalid\n", Opcode)); return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -415,20 +405,20 @@ AcpiDsMethodDataGetEntry ( * * FUNCTION: AcpiDsMethodDataSetEntry * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG + * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP * Index - Which localVar or argument 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 Type:Index. + * DESCRIPTION: Insert an object onto the method stack at entry Opcode:Index. * ******************************************************************************/ ACPI_STATUS AcpiDsMethodDataSetEntry ( - UINT32 Type, + UINT16 Opcode, UINT32 Index, ACPI_OPERAND_OBJECT *Object, ACPI_WALK_STATE *WalkState) @@ -441,7 +431,7 @@ AcpiDsMethodDataSetEntry ( /* Get a pointer to the stack entry to set */ - Status = AcpiDsMethodDataGetEntry (Type, Index, WalkState, &Entry); + Status = AcpiDsMethodDataGetEntry (Opcode, Index, WalkState, &Entry); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -449,7 +439,7 @@ AcpiDsMethodDataSetEntry ( /* Increment ref count so object can't be deleted while installed */ - AcpiCmAddReference (Object); + AcpiUtAddReference (Object); /* Install the object into the stack entry */ @@ -463,7 +453,7 @@ AcpiDsMethodDataSetEntry ( * * FUNCTION: AcpiDsMethodDataGetType * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG + * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP * Index - Which localVar or argument whose type * to get * WalkState - Current walk state object @@ -473,9 +463,9 @@ AcpiDsMethodDataSetEntry ( * ******************************************************************************/ -OBJECT_TYPE_INTERNAL +ACPI_OBJECT_TYPE8 AcpiDsMethodDataGetType ( - UINT32 Type, + UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState) { @@ -489,7 +479,7 @@ AcpiDsMethodDataGetType ( /* Get a pointer to the requested stack entry */ - Status = AcpiDsMethodDataGetEntry (Type, Index, WalkState, &Entry); + Status = AcpiDsMethodDataGetEntry (Opcode, Index, WalkState, &Entry); if (ACPI_FAILURE (Status)) { return_VALUE ((ACPI_TYPE_NOT_FOUND)); @@ -513,9 +503,9 @@ AcpiDsMethodDataGetType ( /******************************************************************************* * - * FUNCTION: AcpiDsMethodDataGetNte + * FUNCTION: AcpiDsMethodDataGetNode * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG + * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP * Index - Which localVar or argument whose type * to get * WalkState - Current walk state object @@ -525,26 +515,25 @@ AcpiDsMethodDataGetType ( ******************************************************************************/ ACPI_NAMESPACE_NODE * -AcpiDsMethodDataGetNte ( - UINT32 Type, +AcpiDsMethodDataGetNode ( + UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState) { ACPI_NAMESPACE_NODE *Node = NULL; - FUNCTION_TRACE ("DsMethodDataGetNte"); + FUNCTION_TRACE ("DsMethodDataGetNode"); - switch (Type) + switch (Opcode) { - case MTH_TYPE_LOCAL: + case AML_LOCAL_OP: if (Index > MTH_MAX_LOCAL) { - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: LocalVar index %d is invalid (max %d)\n", + DEBUG_PRINTP (ACPI_ERROR, ("Local index %d is invalid (max %d)\n", Index, MTH_MAX_LOCAL)); return_PTR (Node); } @@ -553,12 +542,11 @@ AcpiDsMethodDataGetNte ( break; - case MTH_TYPE_ARG: + case AML_ARG_OP: if (Index > MTH_MAX_ARG) { - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: Argument index %d is invalid (max %d)\n", + DEBUG_PRINTP (ACPI_ERROR, ("Arg index %d is invalid (max %d)\n", Index, MTH_MAX_ARG)); return_PTR (Node); } @@ -568,9 +556,7 @@ AcpiDsMethodDataGetNte ( default: - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: Stack type %d is invalid\n", - Type)); + DEBUG_PRINTP (ACPI_ERROR, ("Opcode %d is invalid\n", Opcode)); break; } @@ -583,7 +569,7 @@ AcpiDsMethodDataGetNte ( * * FUNCTION: AcpiDsMethodDataGetValue * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG + * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP * Index - Which localVar or argument to get * WalkState - Current walk state object * *DestDesc - Ptr to Descriptor into which selected Arg @@ -593,13 +579,13 @@ AcpiDsMethodDataGetNte ( * * DESCRIPTION: Retrieve value of selected Arg or Local from the method frame * at the current top of the method stack. - * Used only in AcpiAmlResolveToValue(). + * Used only in AcpiExResolveToValue(). * ******************************************************************************/ ACPI_STATUS AcpiDsMethodDataGetValue ( - UINT32 Type, + UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **DestDesc) @@ -616,15 +602,14 @@ AcpiDsMethodDataGetValue ( if (!DestDesc) { - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetValue: NULL object descriptor pointer\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Null object descriptor pointer\n")); return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Get a pointer to the requested method stack entry */ - Status = AcpiDsMethodDataGetEntry (Type, Index, WalkState, &Entry); + Status = AcpiDsMethodDataGetEntry (Opcode, Index, WalkState, &Entry); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -647,21 +632,19 @@ AcpiDsMethodDataGetValue ( * before it was initialized. Either case is an error. */ - switch (Type) + switch (Opcode) { - case MTH_TYPE_ARG: + case AML_ARG_OP: - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetValue: Uninitialized Arg[%d] at entry %p\n", + DEBUG_PRINTP (ACPI_ERROR, ("Uninitialized Arg[%d] at entry %p\n", Index, Entry)); return_ACPI_STATUS (AE_AML_UNINITIALIZED_ARG); break; - case MTH_TYPE_LOCAL: + case AML_LOCAL_OP: - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetValue: Uninitialized Local[%d] at entry %p\n", + DEBUG_PRINTP (ACPI_ERROR, ("Uninitialized Local[%d] at entry %p\n", Index, Entry)); return_ACPI_STATUS (AE_AML_UNINITIALIZED_LOCAL); @@ -676,7 +659,7 @@ AcpiDsMethodDataGetValue ( */ *DestDesc = Object; - AcpiCmAddReference (Object); + AcpiUtAddReference (Object); return_ACPI_STATUS (AE_OK); } @@ -686,20 +669,20 @@ AcpiDsMethodDataGetValue ( * * FUNCTION: AcpiDsMethodDataDeleteValue * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG + * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP * Index - Which localVar or argument to delete * WalkState - Current walk state object * * RETURN: Status * - * DESCRIPTION: Delete the entry at Type:Index on the method stack. Inserts + * DESCRIPTION: Delete the entry at Opcode:Index on the method stack. Inserts * a null into the stack slot after the object is deleted. * ******************************************************************************/ ACPI_STATUS AcpiDsMethodDataDeleteValue ( - UINT32 Type, + UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState) { @@ -713,7 +696,7 @@ AcpiDsMethodDataDeleteValue ( /* Get a pointer to the requested entry */ - Status = AcpiDsMethodDataGetEntry (Type, Index, WalkState, &Entry); + Status = AcpiDsMethodDataGetEntry (Opcode, Index, WalkState, &Entry); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -739,7 +722,7 @@ AcpiDsMethodDataDeleteValue ( * Decrement the reference count by one to balance the * increment when the object was stored in the slot. */ - AcpiCmRemoveReference (Object); + AcpiUtRemoveReference (Object); } @@ -749,9 +732,9 @@ AcpiDsMethodDataDeleteValue ( /******************************************************************************* * - * FUNCTION: AcpiDsMethodDataSetValue + * FUNCTION: AcpiDsStoreObjectToLocal * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG + * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP * Index - Which localVar or argument to set * SrcDesc - Value to be stored * WalkState - Current walk state @@ -765,8 +748,8 @@ AcpiDsMethodDataDeleteValue ( ******************************************************************************/ ACPI_STATUS -AcpiDsMethodDataSetValue ( - UINT32 Type, +AcpiDsStoreObjectToLocal ( + UINT16 Opcode, UINT32 Index, ACPI_OPERAND_OBJECT *SrcDesc, ACPI_WALK_STATE *WalkState) @@ -776,9 +759,8 @@ AcpiDsMethodDataSetValue ( FUNCTION_TRACE ("DsMethodDataSetValue"); - DEBUG_PRINT (TRACE_EXEC, - ("DsMethodDataSetValue: Type=%d Idx=%d Obj=%p\n", - Type, Index, SrcDesc)); + DEBUG_PRINTP (TRACE_EXEC, ("Opcode=%d Idx=%d Obj=%p\n", + Opcode, Index, SrcDesc)); /* Parameter validation */ @@ -791,7 +773,7 @@ AcpiDsMethodDataSetValue ( /* Get a pointer to the requested method stack entry */ - Status = AcpiDsMethodDataGetEntry (Type, Index, WalkState, &Entry); + Status = AcpiDsMethodDataGetEntry (Opcode, Index, WalkState, &Entry); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -799,9 +781,7 @@ AcpiDsMethodDataSetValue ( if (*Entry == SrcDesc) { - DEBUG_PRINT (TRACE_EXEC, - ("DsMethodDataSetValue: Obj=%p already installed!\n", - SrcDesc)); + DEBUG_PRINTP (TRACE_EXEC, ("Obj=%p already installed!\n", SrcDesc)); goto Cleanup; } @@ -832,11 +812,11 @@ AcpiDsMethodDataSetValue ( * Weird, but true. */ - if ((Type == MTH_TYPE_ARG) && + if ((Opcode == AML_ARG_OP) && (VALID_DESCRIPTOR_TYPE (*Entry, ACPI_DESC_TYPE_NAMED))) { - DEBUG_PRINT (TRACE_EXEC, - ("DsMethodDataSetValue: Arg (%p) is an ObjRef(Node), storing in %p\n", + DEBUG_PRINTP (TRACE_EXEC, + ("Arg (%p) is an ObjRef(Node), storing in %p\n", SrcDesc, *Entry)); /* Detach an existing object from the Node */ @@ -853,21 +833,23 @@ AcpiDsMethodDataSetValue ( } +#ifdef ACPI_ENABLE_IMPLICIT_CONVERSION /* * Perform "Implicit conversion" of the new object to the type of the * existing object */ - Status = AcpiAmlConvertToTargetType ((*Entry)->Common.Type, &SrcDesc, WalkState); + Status = AcpiExConvertToTargetType ((*Entry)->Common.Type, &SrcDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } +#endif /* * Delete the existing object * before storing the new one */ - AcpiDsMethodDataDeleteValue (Type, Index, WalkState); + AcpiDsMethodDataDeleteValue (Opcode, Index, WalkState); } @@ -877,7 +859,7 @@ AcpiDsMethodDataSetValue ( * Install the new object in the stack entry * (increments the object reference count by one) */ - Status = AcpiDsMethodDataSetEntry (Type, Index, SrcDesc, WalkState); + Status = AcpiDsMethodDataSetEntry (Opcode, Index, SrcDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; diff --git a/sys/contrib/dev/acpica/dsobject.c b/sys/contrib/dev/acpica/dsobject.c index 13bf56a..78d3e23 100644 --- a/sys/contrib/dev/acpica/dsobject.c +++ b/sys/contrib/dev/acpica/dsobject.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsobject - Dispatcher object management routines - * $Revision: 57 $ + * $Revision: 65 $ * *****************************************************************************/ @@ -123,7 +123,7 @@ #include "acinterp.h" #include "acnamesp.h" -#define _COMPONENT DISPATCHER +#define _COMPONENT ACPI_DISPATCHER MODULE_NAME ("dsobject") @@ -154,12 +154,15 @@ AcpiDsInitOneObject ( void *Context, void **ReturnValue) { - OBJECT_TYPE_INTERNAL Type; + ACPI_OBJECT_TYPE8 Type; ACPI_STATUS Status; ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context; UINT8 TableRevision; + PROC_NAME ("DsInitOneObject"); + + Info->ObjectCount++; TableRevision = Info->TableDesc->Pointer->Revision; @@ -220,10 +223,9 @@ AcpiDsInitOneObject ( if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("DsInitOneObject: Method %p [%4.4s] parse failed! %s\n", + DEBUG_PRINTP (ACPI_ERROR, ("Method %p [%4.4s] parse failed! %s\n", ObjHandle, &((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, - AcpiCmFormatException (Status))); + AcpiUtFormatException (Status))); break; } @@ -271,8 +273,8 @@ AcpiDsInitializeObjects ( FUNCTION_TRACE ("DsInitializeObjects"); - DEBUG_PRINT (TRACE_DISPATCH, - ("DsInitializeObjects: **** Starting initialization of namespace objects ****\n")); + DEBUG_PRINTP (TRACE_DISPATCH, + ("**** Starting initialization of namespace objects ****\n")); DEBUG_PRINT_RAW (ACPI_OK, ("Parsing Methods:")); @@ -284,22 +286,20 @@ AcpiDsInitializeObjects ( /* Walk entire namespace from the supplied root */ - Status = AcpiWalkNamespace (ACPI_TYPE_ANY, StartNode, - ACPI_UINT32_MAX, AcpiDsInitOneObject, - &Info, NULL); + Status = AcpiWalkNamespace (ACPI_TYPE_ANY, StartNode, ACPI_UINT32_MAX, + AcpiDsInitOneObject, &Info, NULL); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("DsInitializeObjects: WalkNamespace failed! %x\n", Status)); + DEBUG_PRINTP (ACPI_ERROR, ("WalkNamespace failed! %x\n", Status)); } DEBUG_PRINT_RAW (ACPI_OK, ("\n%d Control Methods found and parsed (%d nodes total)\n", Info.MethodCount, Info.ObjectCount)); - DEBUG_PRINT (TRACE_DISPATCH, - ("DsInitializeObjects: %d Control Methods found\n", Info.MethodCount)); - DEBUG_PRINT (TRACE_DISPATCH, - ("DsInitializeObjects: %d Op Regions found\n", Info.OpRegionCount)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("%d Control Methods found\n", Info.MethodCount)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("%d Op Regions found\n", Info.OpRegionCount)); return_ACPI_STATUS (AE_OK); } @@ -335,6 +335,9 @@ AcpiDsInitObjectFromOp ( ACPI_OPCODE_INFO *OpInfo; + PROC_NAME ("DsInitObjectFromOp"); + + OpInfo = AcpiPsGetOpcodeInfo (Opcode); if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) { @@ -358,10 +361,10 @@ AcpiDsInitObjectFromOp ( /* Resolve the object (could be an arg or local) */ - Status = AcpiAmlResolveToValue (&ArgDesc, WalkState); + Status = AcpiExResolveToValue (&ArgDesc, WalkState); if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ArgDesc); + AcpiUtRemoveReference (ArgDesc); return (Status); } @@ -369,17 +372,17 @@ AcpiDsInitObjectFromOp ( if (ArgDesc->Common.Type != ACPI_TYPE_INTEGER) { - DEBUG_PRINT (ACPI_ERROR, - ("InitObject: Expecting number, got obj: %p type %X\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Expecting number, got obj: %p type %X\n", ArgDesc, ArgDesc->Common.Type)); - AcpiCmRemoveReference (ArgDesc); + AcpiUtRemoveReference (ArgDesc); return (AE_TYPE); } /* Get the value, delete the internal object */ (*ObjDesc)->Buffer.Length = (UINT32) ArgDesc->Integer.Value; - AcpiCmRemoveReference (ArgDesc); + AcpiUtRemoveReference (ArgDesc); /* Allocate the buffer */ @@ -393,7 +396,7 @@ AcpiDsInitObjectFromOp ( else { (*ObjDesc)->Buffer.Pointer = - AcpiCmCallocate ((*ObjDesc)->Buffer.Length); + AcpiUtCallocate ((*ObjDesc)->Buffer.Length); if (!(*ObjDesc)->Buffer.Pointer) { @@ -412,10 +415,9 @@ AcpiDsInitObjectFromOp ( ByteList = (ACPI_PARSE2_OBJECT *) Arg->Next; if (ByteList) { - if (ByteList->Opcode != AML_BYTELIST_OP) + if (ByteList->Opcode != AML_INT_BYTELIST_OP) { - DEBUG_PRINT (ACPI_ERROR, - ("InitObject: Expecting bytelist, got: %x\n", + DEBUG_PRINTP (ACPI_ERROR, ("Expecting bytelist, got: %x\n", ByteList)); return (AE_TYPE); } @@ -437,7 +439,7 @@ AcpiDsInitObjectFromOp ( * so that it is deleted. Error checking is done * within the remove reference function. */ - AcpiCmRemoveReference(*ObjDesc); + AcpiUtRemoveReference(*ObjDesc); Status = AcpiDsBuildInternalObject (WalkState, Op, ObjDesc); break; @@ -465,7 +467,7 @@ AcpiDsInitObjectFromOp ( /* Split the opcode into a base opcode + offset */ - (*ObjDesc)->Reference.OpCode = AML_LOCAL_OP; + (*ObjDesc)->Reference.Opcode = AML_LOCAL_OP; (*ObjDesc)->Reference.Offset = Opcode - AML_LOCAL_OP; break; @@ -473,20 +475,20 @@ AcpiDsInitObjectFromOp ( /* Split the opcode into a base opcode + offset */ - (*ObjDesc)->Reference.OpCode = AML_ARG_OP; + (*ObjDesc)->Reference.Opcode = AML_ARG_OP; (*ObjDesc)->Reference.Offset = Opcode - AML_ARG_OP; break; default: /* Constants, Literals, etc.. */ - if (Op->Opcode == AML_NAMEPATH_OP) + if (Op->Opcode == AML_INT_NAMEPATH_OP) { /* Node was saved in Op */ (*ObjDesc)->Reference.Node = Op->Node; } - (*ObjDesc)->Reference.OpCode = Opcode; + (*ObjDesc)->Reference.Opcode = Opcode; break; } @@ -495,8 +497,7 @@ AcpiDsInitObjectFromOp ( default: - DEBUG_PRINT (ACPI_ERROR, - ("InitObject: Unimplemented data type: %x\n", + DEBUG_PRINTP (ACPI_ERROR, ("Unimplemented data type: %x\n", (*ObjDesc)->Common.Type)); break; @@ -527,7 +528,7 @@ AcpiDsBuildInternalSimpleObj ( ACPI_OPERAND_OBJECT **ObjDescPtr) { ACPI_OPERAND_OBJECT *ObjDesc; - OBJECT_TYPE_INTERNAL Type; + ACPI_OBJECT_TYPE8 Type; ACPI_STATUS Status; UINT32 Length; char *Name; @@ -536,7 +537,7 @@ AcpiDsBuildInternalSimpleObj ( FUNCTION_TRACE ("DsBuildInternalSimpleObj"); - if (Op->Opcode == AML_NAMEPATH_OP) + if (Op->Opcode == AML_INT_NAMEPATH_OP) { /* * This is an object reference. If The name was @@ -564,7 +565,7 @@ AcpiDsBuildInternalSimpleObj ( { REPORT_WARNING (("Reference %s at AML %X not found\n", Name, Op->AmlOffset)); - AcpiCmFree (Name); + AcpiUtFree (Name); } else { @@ -597,18 +598,16 @@ AcpiDsBuildInternalSimpleObj ( /* Create and init the internal ACPI object */ - ObjDesc = AcpiCmCreateInternalObject (Type); + ObjDesc = AcpiUtCreateInternalObject (Type); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiDsInitObjectFromOp (WalkState, Op, - Op->Opcode, &ObjDesc); - + Status = AcpiDsInitObjectFromOp (WalkState, Op, Op->Opcode, &ObjDesc); if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } @@ -646,7 +645,7 @@ AcpiDsBuildInternalPackageObj ( FUNCTION_TRACE ("DsBuildInternalPackageObj"); - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_PACKAGE); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -664,16 +663,11 @@ AcpiDsBuildInternalPackageObj ( */ ObjDesc->Package.Elements = - AcpiCmCallocate ((ObjDesc->Package.Count + 1) * - sizeof (void *)); + AcpiUtCallocate ((ObjDesc->Package.Count + 1) * sizeof (void *)); if (!ObjDesc->Package.Elements) { - /* Package vector allocation failure */ - - REPORT_ERROR (("DsBuildInternalPackageObj: Package vector allocation failure\n")); - - AcpiCmDeleteObjectDesc (ObjDesc); + AcpiUtDeleteObjectDesc (ObjDesc); return_ACPI_STATUS (AE_NO_MEMORY); } @@ -732,14 +726,12 @@ AcpiDsBuildInternalObject ( if (Op->Opcode == AML_PACKAGE_OP) { - Status = AcpiDsBuildInternalPackageObj (WalkState, Op, - ObjDescPtr); + Status = AcpiDsBuildInternalPackageObj (WalkState, Op, ObjDescPtr); } else { - Status = AcpiDsBuildInternalSimpleObj (WalkState, Op, - ObjDescPtr); + Status = AcpiDsBuildInternalSimpleObj (WalkState, Op, ObjDescPtr); } return (Status); @@ -782,8 +774,7 @@ AcpiDsCreateNode ( /* Build an internal object for the argument(s) */ - Status = AcpiDsBuildInternalObject (WalkState, - Op->Value.Arg, &ObjDesc); + Status = AcpiDsBuildInternalObject (WalkState, Op->Value.Arg, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -796,8 +787,7 @@ AcpiDsCreateNode ( /* Init obj */ - Status = AcpiNsAttachObject ((ACPI_HANDLE) Node, ObjDesc, - (UINT8) Node->Type); + Status = AcpiNsAttachObject (Node, ObjDesc, (UINT8) Node->Type); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -808,7 +798,7 @@ AcpiDsCreateNode ( Cleanup: - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/dsopcode.c b/sys/contrib/dev/acpica/dsopcode.c index 5153537..c76a942 100644 --- a/sys/contrib/dev/acpica/dsopcode.c +++ b/sys/contrib/dev/acpica/dsopcode.c @@ -2,7 +2,7 @@ * * Module Name: dsopcode - Dispatcher Op Region support and handling of * "control" opcodes - * $Revision: 32 $ + * $Revision: 44 $ * *****************************************************************************/ @@ -126,25 +126,25 @@ #include "acevents.h" #include "actables.h" -#define _COMPONENT DISPATCHER +#define _COMPONENT ACPI_DISPATCHER MODULE_NAME ("dsopcode") /***************************************************************************** * - * FUNCTION: AcpiDsGetFieldUnitArguments + * FUNCTION: AcpiDsGetBufferFieldArguments * - * PARAMETERS: ObjDesc - A valid FieldUnit object + * PARAMETERS: ObjDesc - A valid BufferField object * * RETURN: Status. * - * DESCRIPTION: Get FieldUnit Buffer and Index. This implements the late + * DESCRIPTION: Get BufferField Buffer and Index. This implements the late * evaluation of these field attributes. * ****************************************************************************/ ACPI_STATUS -AcpiDsGetFieldUnitArguments ( +AcpiDsGetBufferFieldArguments ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_OPERAND_OBJECT *ExtraDesc; @@ -155,7 +155,7 @@ AcpiDsGetFieldUnitArguments ( ACPI_TABLE_DESC *TableDesc; - FUNCTION_TRACE_PTR ("DsGetFieldUnitArguments", ObjDesc); + FUNCTION_TRACE_PTR ("DsGetBufferFieldArguments", ObjDesc); if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) @@ -164,14 +164,13 @@ AcpiDsGetFieldUnitArguments ( } - /* Get the AML pointer (method object) and FieldUnit node */ + /* Get the AML pointer (method object) and BufferField node */ - ExtraDesc = ObjDesc->FieldUnit.Extra; - Node = ObjDesc->FieldUnit.Node; + ExtraDesc = ObjDesc->BufferField.Extra; + Node = ObjDesc->BufferField.Node; - DEBUG_EXEC(AcpiCmDisplayInitPathname (Node, " [Field]")); - DEBUG_PRINT (TRACE_EXEC, - ("DsGetFieldUnitArguments: [%4.4s] FieldUnit JIT Init\n", + DEBUG_EXEC(AcpiUtDisplayInitPathname (Node, " [Field]")); + DEBUG_PRINTP (TRACE_EXEC, ("[%4.4s] BufferField JIT Init\n", &Node->Name)); @@ -198,7 +197,7 @@ AcpiDsGetFieldUnitArguments ( return_ACPI_STATUS (Status); } - /* Pass1: Parse the entire FieldUnit declaration */ + /* Pass1: Parse the entire BufferField declaration */ Status = AcpiPsParseAml (Op, ExtraDesc->Extra.Pcode, ExtraDesc->Extra.PcodeLength, 0, @@ -244,8 +243,8 @@ AcpiDsGetFieldUnitArguments ( * The pseudo-method object is no longer needed since the region is * now initialized */ - AcpiCmRemoveReference (ObjDesc->FieldUnit.Extra); - ObjDesc->FieldUnit.Extra = NULL; + AcpiUtRemoveReference (ObjDesc->BufferField.Extra); + ObjDesc->BufferField.Extra = NULL; return_ACPI_STATUS (Status); } @@ -290,11 +289,11 @@ AcpiDsGetRegionArguments ( ExtraDesc = ObjDesc->Region.Extra; Node = ObjDesc->Region.Node; - DEBUG_EXEC(AcpiCmDisplayInitPathname (Node, " [Operation Region]")); - - DEBUG_PRINT (TRACE_EXEC, - ("DsGetRegionArguments: [%4.4s] OpRegion Init at AML %p[%x]\n", - &Node->Name, ExtraDesc->Extra.Pcode, *(UINT32*) ExtraDesc->Extra.Pcode)); + DEBUG_EXEC(AcpiUtDisplayInitPathname (Node, " [Operation Region]")); + + DEBUG_PRINTP (TRACE_EXEC, ("[%4.4s] OpRegion Init at AML %p[%x]\n", + &Node->Name, ExtraDesc->Extra.Pcode, + *(UINT32*) ExtraDesc->Extra.Pcode)); /* * Allocate a new parser op to be the root of the parsed @@ -398,29 +397,45 @@ AcpiDsInitializeRegion ( /***************************************************************************** * - * FUNCTION: AcpiDsEvalFieldUnitOperands + * FUNCTION: AcpiDsEvalBufferFieldOperands * - * PARAMETERS: Op - A valid FieldUnit Op object + * PARAMETERS: Op - A valid BufferField Op object * * RETURN: Status * - * DESCRIPTION: Get FieldUnit Buffer and Index - * Called from AcpiDsExecEndOp during FieldUnit parse tree walk + * DESCRIPTION: Get BufferField Buffer and Index + * Called from AcpiDsExecEndOp during BufferField parse tree walk + * + * ACPI SPECIFICATION REFERENCES: + * Each of the Buffer Field opcodes is defined as specified in in-line + * comments below. For each one, use the following definitions. + * + * DefBitField := BitFieldOp SrcBuf BitIdx Destination + * DefByteField := ByteFieldOp SrcBuf ByteIdx Destination + * DefCreateField := CreateFieldOp SrcBuf BitIdx NumBits NameString + * DefDWordField := DWordFieldOp SrcBuf ByteIdx Destination + * DefWordField := WordFieldOp SrcBuf ByteIdx Destination + * BitIndex := TermArg=>Integer + * ByteIndex := TermArg=>Integer + * Destination := NameString + * NumBits := TermArg=>Integer + * SourceBuf := TermArg=>Buffer * ****************************************************************************/ ACPI_STATUS -AcpiDsEvalFieldUnitOperands ( +AcpiDsEvalBufferFieldOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *FieldDesc; + ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *NextOp; UINT32 Offset; UINT32 BitOffset; - UINT16 BitCount; + UINT32 BitCount; + UINT8 FieldFlags; ACPI_OPERAND_OBJECT *ResDesc = NULL; @@ -430,16 +445,18 @@ AcpiDsEvalFieldUnitOperands ( UINT32 NumOperands = 3; - FUNCTION_TRACE_PTR ("DsEvalFieldUnitOperands", Op); + FUNCTION_TRACE_PTR ("DsEvalBufferFieldOperands", Op); /* - * This is where we evaluate the address and length fields of the OpFieldUnit declaration + * This is where we evaluate the address and length fields of the + * CreateXxxField declaration */ Node = Op->Node; /* NextOp points to the op that holds the Buffer */ + NextOp = Op->Value.Arg; /* AcpiEvaluate/create the address and length operands */ @@ -450,8 +467,8 @@ AcpiDsEvalFieldUnitOperands ( return_ACPI_STATUS (Status); } - FieldDesc = AcpiNsGetAttachedObject (Node); - if (!FieldDesc) + ObjDesc = AcpiNsGetAttachedObject (Node); + if (!ObjDesc) { return_ACPI_STATUS (AE_NOT_EXIST); } @@ -459,9 +476,9 @@ AcpiDsEvalFieldUnitOperands ( /* Resolve the operands */ - Status = AcpiAmlResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Op->Opcode), - NumOperands, "after AcpiAmlResolveOperands"); + NumOperands, "after AcpiExResolveOperands"); /* Get the operands */ @@ -480,8 +497,7 @@ AcpiDsEvalFieldUnitOperands ( { /* Invalid parameters on object stack */ - DEBUG_PRINT (ACPI_ERROR, - ("ExecCreateField/%s: bad operand(s) (%X)\n", + DEBUG_PRINTP (ACPI_ERROR, ("(%s) bad operand(s) (%X)\n", AcpiPsGetOpcodeName (Op->Opcode), Status)); goto Cleanup; @@ -493,13 +509,12 @@ AcpiDsEvalFieldUnitOperands ( /* * If ResDesc is a Name, it will be a direct name pointer after - * AcpiAmlResolveOperands() + * AcpiExResolveOperands() */ if (!VALID_DESCRIPTOR_TYPE (ResDesc, ACPI_DESC_TYPE_NAMED)) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecCreateField (%s): destination must be a Node\n", + DEBUG_PRINTP (ACPI_ERROR, ("(%s) destination must be a Node\n", AcpiPsGetOpcodeName (Op->Opcode))); Status = AE_AML_OPERAND_TYPE; @@ -514,65 +529,82 @@ AcpiDsEvalFieldUnitOperands ( switch (Op->Opcode) { + /* DefCreateField */ + + case AML_CREATE_FIELD_OP: + + /* Offset is in bits, count is in bits */ + + BitOffset = Offset; + BitCount = (UINT32) CntDesc->Integer.Value; + FieldFlags = ACCESS_BYTE_ACC; + break; + + /* DefCreateBitField */ - case AML_BIT_FIELD_OP: + case AML_CREATE_BIT_FIELD_OP: - /* Offset is in bits, Field is a bit */ + /* Offset is in bits, Field is one bit */ - BitOffset = Offset; - BitCount = 1; + BitOffset = Offset; + BitCount = 1; + FieldFlags = ACCESS_BYTE_ACC; break; /* DefCreateByteField */ - case AML_BYTE_FIELD_OP: + case AML_CREATE_BYTE_FIELD_OP: - /* Offset is in bytes, field is a byte */ + /* Offset is in bytes, field is one byte */ - BitOffset = 8 * Offset; - BitCount = 8; + BitOffset = 8 * Offset; + BitCount = 8; + FieldFlags = ACCESS_BYTE_ACC; break; /* DefCreateWordField */ - case AML_WORD_FIELD_OP: + case AML_CREATE_WORD_FIELD_OP: - /* Offset is in bytes, field is a word */ + /* Offset is in bytes, field is one word */ - BitOffset = 8 * Offset; - BitCount = 16; + BitOffset = 8 * Offset; + BitCount = 16; + FieldFlags = ACCESS_WORD_ACC; break; /* DefCreateDWordField */ - case AML_DWORD_FIELD_OP: + case AML_CREATE_DWORD_FIELD_OP: - /* Offset is in bytes, field is a dword */ + /* Offset is in bytes, field is one dword */ - BitOffset = 8 * Offset; - BitCount = 32; + BitOffset = 8 * Offset; + BitCount = 32; + FieldFlags = ACCESS_DWORD_ACC; break; - /* DefCreateField */ + /* DefCreateQWordField */ - case AML_CREATE_FIELD_OP: + case AML_CREATE_QWORD_FIELD_OP: - /* Offset is in bits, count is in bits */ + /* Offset is in bytes, field is one qword */ - BitOffset = Offset; - BitCount = (UINT16) CntDesc->Integer.Value; + BitOffset = 8 * Offset; + BitCount = 64; + FieldFlags = ACCESS_QWORD_ACC; break; default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecCreateField: Internal error - unknown field creation opcode %02x\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Internal error - unknown field creation opcode %02x\n", Op->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; @@ -590,32 +622,34 @@ AcpiDsEvalFieldUnitOperands ( case ACPI_TYPE_BUFFER: - if (BitOffset + (UINT32) BitCount > + if ((BitOffset + BitCount) > (8 * (UINT32) SrcDesc->Buffer.Length)) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecCreateField: Field exceeds Buffer %d > %d\n", - BitOffset + (UINT32) BitCount, - 8 * (UINT32) SrcDesc->Buffer.Length)); + DEBUG_PRINTP (ACPI_ERROR, + ("Field size %d exceeds Buffer size %d (bits)\n", + BitOffset + BitCount, 8 * (UINT32) SrcDesc->Buffer.Length)); Status = AE_AML_BUFFER_LIMIT; goto Cleanup; } - /* Construct the remainder of the field object */ + /* + * 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, + BitOffset, BitCount); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } - FieldDesc->FieldUnit.Access = (UINT8) ACCESS_ANY_ACC; - FieldDesc->FieldUnit.LockRule = (UINT8) GLOCK_NEVER_LOCK; - FieldDesc->FieldUnit.UpdateRule = (UINT8) UPDATE_PRESERVE; - FieldDesc->FieldUnit.Length = BitCount; - FieldDesc->FieldUnit.BitOffset = (UINT8) (BitOffset % 8); - FieldDesc->FieldUnit.Offset = DIV_8 (BitOffset); - FieldDesc->FieldUnit.Container = SrcDesc; + ObjDesc->BufferField.BufferObj = SrcDesc; - /* Reference count for SrcDesc inherits FieldDesc count */ + /* Reference count for SrcDesc inherits ObjDesc count */ SrcDesc->Common.ReferenceCount = (UINT16) (SrcDesc->Common.ReferenceCount + - FieldDesc->Common.ReferenceCount); + ObjDesc->Common.ReferenceCount); break; @@ -624,19 +658,18 @@ AcpiDsEvalFieldUnitOperands ( default: - if ((SrcDesc->Common.Type > (UINT8) INTERNAL_TYPE_REFERENCE) || - !AcpiCmValidObjectType (SrcDesc->Common.Type)) + if ((SrcDesc->Common.Type > (UINT8) INTERNAL_TYPE_REFERENCE) || !AcpiUtValidObjectType (SrcDesc->Common.Type)) /* TBD: This line MUST be a single line until AcpiSrc can handle it (block deletion) */ { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecCreateField: Tried to create field in invalid object type %X\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Tried to create field in invalid object type %X\n", SrcDesc->Common.Type)); } else { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecCreateField: Tried to create field in improper object type - %s\n", - AcpiCmGetTypeName (SrcDesc->Common.Type))); + DEBUG_PRINTP (ACPI_ERROR, + ("Tried to create field in improper object type - %s\n", + AcpiUtGetTypeName (SrcDesc->Common.Type))); } Status = AE_AML_OPERAND_TYPE; @@ -648,7 +681,7 @@ AcpiDsEvalFieldUnitOperands ( { /* Delete object descriptor unique to CreateField */ - AcpiCmRemoveReference (CntDesc); + AcpiUtRemoveReference (CntDesc); CntDesc = NULL; } @@ -657,26 +690,26 @@ Cleanup: /* Always delete the operands */ - AcpiCmRemoveReference (OffDesc); - AcpiCmRemoveReference (SrcDesc); + AcpiUtRemoveReference (OffDesc); + AcpiUtRemoveReference (SrcDesc); if (AML_CREATE_FIELD_OP == Op->Opcode) { - AcpiCmRemoveReference (CntDesc); + AcpiUtRemoveReference (CntDesc); } /* On failure, delete the result descriptor */ if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ResDesc); /* Result descriptor */ + AcpiUtRemoveReference (ResDesc); /* Result descriptor */ } else { - /* Now the address and length are valid for this opFieldUnit */ + /* Now the address and length are valid for this BufferField */ - FieldDesc->FieldUnit.Flags |= AOPOBJ_DATA_VALID; + ObjDesc->BufferField.Flags |= AOPOBJ_DATA_VALID; } return_ACPI_STATUS (Status); @@ -733,7 +766,7 @@ AcpiDsEvalRegionOperands ( /* Resolve the length and address operands to numbers */ - Status = AcpiAmlResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -741,7 +774,7 @@ AcpiDsEvalRegionOperands ( DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Op->Opcode), - 1, "after AcpiAmlResolveOperands"); + 1, "after AcpiExResolveOperands"); ObjDesc = AcpiNsGetAttachedObject (Node); @@ -757,7 +790,7 @@ AcpiDsEvalRegionOperands ( OperandDesc = WalkState->Operands[WalkState->NumOperands - 1]; ObjDesc->Region.Length = (UINT32) OperandDesc->Integer.Value; - AcpiCmRemoveReference (OperandDesc); + AcpiUtRemoveReference (OperandDesc); /* * Get the address and save it @@ -766,11 +799,10 @@ AcpiDsEvalRegionOperands ( OperandDesc = WalkState->Operands[WalkState->NumOperands - 2]; ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) OperandDesc->Integer.Value; - AcpiCmRemoveReference (OperandDesc); + AcpiUtRemoveReference (OperandDesc); - DEBUG_PRINT (TRACE_EXEC, - ("DsEvalRegionOperands: RgnObj %p Addr %X Len %X\n", + DEBUG_PRINTP (TRACE_EXEC, ("RgnObj %p Addr %X Len %X\n", ObjDesc, ObjDesc->Region.Address, ObjDesc->Region.Length)); /* Now the address and length are valid for this opregion */ @@ -804,8 +836,10 @@ AcpiDsExecBeginControlOp ( ACPI_GENERIC_STATE *ControlState; - DEBUG_PRINT (TRACE_DISPATCH, - ("BeginControlOp: Op=%p Opcode=%2.2X State=%p\n", Op, + PROC_NAME ("DsExecBeginControlOp"); + + + DEBUG_PRINTP (TRACE_DISPATCH, ("Op=%p Opcode=%2.2X State=%p\n", Op, Op->Opcode, WalkState)); switch (Op->Opcode) @@ -819,14 +853,14 @@ AcpiDsExecBeginControlOp ( * to handle nesting. */ - ControlState = AcpiCmCreateControlState (); + ControlState = AcpiUtCreateControlState (); if (!ControlState) { Status = AE_NO_MEMORY; break; } - AcpiCmPushGenericState (&WalkState->ControlState, ControlState); + AcpiUtPushGenericState (&WalkState->ControlState, ControlState); /* * Save a pointer to the predicate for multiple executions @@ -889,31 +923,30 @@ AcpiDsExecEndControlOp ( ACPI_GENERIC_STATE *ControlState; + PROC_NAME ("DsExecEndControlOp"); + + switch (Op->Opcode) { case AML_IF_OP: - DEBUG_PRINT (TRACE_DISPATCH, - ("EndControlOp: [IF_OP] Op=%p\n", Op)); + DEBUG_PRINTP (TRACE_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; + WalkState->LastPredicate = + (BOOLEAN) WalkState->ControlState->Common.Value; /* * Pop the control state that was created at the start * of the IF and free it */ - ControlState = - AcpiCmPopGenericState (&WalkState->ControlState); - - AcpiCmDeleteGenericState (ControlState); - + ControlState = AcpiUtPopGenericState (&WalkState->ControlState); + AcpiUtDeleteGenericState (ControlState); break; @@ -924,8 +957,7 @@ AcpiDsExecEndControlOp ( case AML_WHILE_OP: - DEBUG_PRINT (TRACE_DISPATCH, - ("EndControlOp: [WHILE_OP] Op=%p\n", Op)); + DEBUG_PRINTP (TRACE_DISPATCH, ("[WHILE_OP] Op=%p\n", Op)); if (WalkState->ControlState->Common.Value) { @@ -934,25 +966,21 @@ AcpiDsExecEndControlOp ( Status = AE_CTRL_PENDING; } - - DEBUG_PRINT (TRACE_DISPATCH, - ("EndControlOp: [WHILE_OP] termination! Op=%p\n", Op)); + DEBUG_PRINTP (TRACE_DISPATCH, ("[WHILE_OP] termination! Op=%p\n", Op)); /* Pop this control state and free it */ - ControlState = - AcpiCmPopGenericState (&WalkState->ControlState); + ControlState = AcpiUtPopGenericState (&WalkState->ControlState); WalkState->AmlLastWhile = ControlState->Control.AmlPredicateStart; - AcpiCmDeleteGenericState (ControlState); - + AcpiUtDeleteGenericState (ControlState); break; case AML_RETURN_OP: - DEBUG_PRINT (TRACE_DISPATCH, - ("EndControlOp: [RETURN_OP] Op=%p Arg=%p\n",Op, Op->Value.Arg)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("[RETURN_OP] Op=%p Arg=%p\n",Op, Op->Value.Arg)); /* @@ -975,8 +1003,7 @@ AcpiDsExecEndControlOp ( * an arg or local), resolve it now because it may * cease to exist at the end of the method. */ - - Status = AcpiAmlResolveToValue (&WalkState->Operands [0], WalkState); + Status = AcpiExResolveToValue (&WalkState->Operands [0], WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -1000,12 +1027,19 @@ AcpiDsExecEndControlOp ( * 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. */ - Status = AcpiAmlResolveToValue (&WalkState->Results->Results.ObjDesc [0], WalkState); - if (ACPI_FAILURE (Status)) + if (VALID_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc [0], ACPI_DESC_TYPE_INTERNAL) && + ((WalkState->Results->Results.ObjDesc [0])->Common.Type == INTERNAL_TYPE_REFERENCE) && + ((WalkState->Results->Results.ObjDesc [0])->Reference.Opcode != AML_INDEX_OP)) { - return (Status); + Status = AcpiExResolveToValue (&WalkState->Results->Results.ObjDesc [0], WalkState); + if (ACPI_FAILURE (Status)) + { + return (Status); + } } WalkState->ReturnDesc = WalkState->Results->Results.ObjDesc [0]; @@ -1017,7 +1051,7 @@ AcpiDsExecEndControlOp ( if (WalkState->NumOperands) { - AcpiCmRemoveReference (WalkState->Operands [0]); + AcpiUtRemoveReference (WalkState->Operands [0]); } WalkState->Operands [0] = NULL; @@ -1026,8 +1060,8 @@ AcpiDsExecEndControlOp ( } - DEBUG_PRINT (TRACE_DISPATCH, - ("EndControlOp: Completed RETURN_OP State=%p, RetVal=%p\n", + DEBUG_PRINTP (TRACE_DISPATCH, + ("Completed RETURN_OP State=%p, RetVal=%p\n", WalkState, WalkState->ReturnDesc)); /* End the control method execution right now */ @@ -1054,8 +1088,8 @@ AcpiDsExecEndControlOp ( case AML_BREAK_OP: - DEBUG_PRINT (ACPI_INFO, - ("EndControlOp: Break to end of current package, Op=%p\n", Op)); + DEBUG_PRINTP (ACPI_INFO, + ("Break to end of current package, Op=%p\n", Op)); /* * As per the ACPI specification: @@ -1075,8 +1109,7 @@ AcpiDsExecEndControlOp ( default: - DEBUG_PRINT (ACPI_ERROR, - ("EndControlOp: Unknown control opcode=%X Op=%p\n", + DEBUG_PRINTP (ACPI_ERROR, ("Unknown control opcode=%X Op=%p\n", Op->Opcode, Op)); Status = AE_AML_BAD_OPCODE; diff --git a/sys/contrib/dev/acpica/dsutils.c b/sys/contrib/dev/acpica/dsutils.c index 9e4d0da..8d89f67 100644 --- a/sys/contrib/dev/acpica/dsutils.c +++ b/sys/contrib/dev/acpica/dsutils.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dsutils - Dispatcher utilities - * $Revision: 52 $ + * $Revision: 58 $ * ******************************************************************************/ @@ -124,7 +124,7 @@ #include "acnamesp.h" #include "acdebug.h" -#define _COMPONENT PARSER +#define _COMPONENT ACPI_DISPATCHER MODULE_NAME ("dsutils") @@ -157,7 +157,7 @@ AcpiDsIsResultUsed ( if (!Op) { - DEBUG_PRINT (ACPI_ERROR, ("DsIsResultUsed: Null Op\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Null Op\n")); return_VALUE (TRUE); } @@ -181,10 +181,7 @@ AcpiDsIsResultUsed ( ParentInfo = AcpiPsGetOpcodeInfo (Op->Parent->Opcode); if (ACPI_GET_OP_TYPE (ParentInfo) != ACPI_OP_TYPE_OPCODE) { - DEBUG_PRINT (ACPI_ERROR, - ("DsIsResultUsed: Unknown parent opcode. Op=%X\n", - Op)); - + DEBUG_PRINTP (ACPI_ERROR, ("Unknown parent opcode. Op=%X\n", Op)); return_VALUE (FALSE); } @@ -209,9 +206,8 @@ AcpiDsIsResultUsed ( /* Never delete the return value associated with a return opcode */ - DEBUG_PRINT (TRACE_DISPATCH, - ("DsIsResultUsed: Result used, [RETURN] opcode=%X Op=%X\n", - Op->Opcode, Op)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("Result used, [RETURN] opcode=%X Op=%X\n", Op->Opcode, Op)); return_VALUE (TRUE); break; @@ -226,8 +222,8 @@ AcpiDsIsResultUsed ( if ((WalkState->ControlState->Common.State == CONTROL_PREDICATE_EXECUTING) && (WalkState->ControlState->Control.PredicateOp == Op)) { - DEBUG_PRINT (TRACE_DISPATCH, - ("DsIsResultUsed: Result used as a predicate, [IF/WHILE] opcode=%X Op=%X\n", + DEBUG_PRINTP (TRACE_DISPATCH, + ("Result used as a predicate, [IF/WHILE] opcode=%X Op=%X\n", Op->Opcode, Op)); return_VALUE (TRUE); } @@ -245,23 +241,22 @@ AcpiDsIsResultUsed ( * These opcodes allow TermArg(s) as operands and therefore * method calls. The result is used. */ - if ((Op->Parent->Opcode == AML_REGION_OP) || - (Op->Parent->Opcode == AML_CREATE_FIELD_OP) || - (Op->Parent->Opcode == AML_BIT_FIELD_OP) || - (Op->Parent->Opcode == AML_BYTE_FIELD_OP) || - (Op->Parent->Opcode == AML_WORD_FIELD_OP) || - (Op->Parent->Opcode == AML_DWORD_FIELD_OP) || - (Op->Parent->Opcode == AML_QWORD_FIELD_OP)) + if ((Op->Parent->Opcode == AML_REGION_OP) || + (Op->Parent->Opcode == AML_CREATE_FIELD_OP) || + (Op->Parent->Opcode == AML_CREATE_BIT_FIELD_OP) || + (Op->Parent->Opcode == AML_CREATE_BYTE_FIELD_OP) || + (Op->Parent->Opcode == AML_CREATE_WORD_FIELD_OP) || + (Op->Parent->Opcode == AML_CREATE_DWORD_FIELD_OP) || + (Op->Parent->Opcode == AML_CREATE_QWORD_FIELD_OP)) { - DEBUG_PRINT (TRACE_DISPATCH, - ("DsIsResultUsed: Result used, [Region or CreateField] opcode=%X Op=%X\n", + DEBUG_PRINTP (TRACE_DISPATCH, + ("Result used, [Region or CreateField] opcode=%X Op=%X\n", Op->Opcode, Op)); return_VALUE (TRUE); } - DEBUG_PRINT (TRACE_DISPATCH, - ("DsIsResultUsed: Result not used, Parent opcode=%X Op=%X\n", - Op->Opcode, Op)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("Result not used, Parent opcode=%X Op=%X\n", Op->Opcode, Op)); return_VALUE (FALSE); break; @@ -310,9 +305,7 @@ AcpiDsDeleteResultIfNotUsed ( if (!Op) { - DEBUG_PRINT (ACPI_ERROR, - ("DsDeleteResultIfNotUsed: Null Op=%X\n", - Op)); + DEBUG_PRINTP (ACPI_ERROR, ("Null Op\n")); return_VOID; } @@ -332,7 +325,7 @@ AcpiDsDeleteResultIfNotUsed ( Status = AcpiDsResultPop (&ObjDesc, WalkState); if (ACPI_SUCCESS (Status)) { - AcpiCmRemoveReference (ResultObj); + AcpiUtRemoveReference (ResultObj); } } @@ -365,7 +358,7 @@ AcpiDsCreateOperand ( ACPI_STATUS Status = AE_OK; NATIVE_CHAR *NameString; UINT32 NameLength; - OBJECT_TYPE_INTERNAL DataType; + ACPI_OBJECT_TYPE8 DataType; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_PARSE_OBJECT *ParentOp; UINT16 Opcode; @@ -378,18 +371,15 @@ AcpiDsCreateOperand ( /* A valid name must be looked up in the namespace */ - if ((Arg->Opcode == AML_NAMEPATH_OP) && + if ((Arg->Opcode == AML_INT_NAMEPATH_OP) && (Arg->Value.String)) { - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCreateOperand: Getting a name: Arg=%p\n", Arg)); + DEBUG_PRINTP (TRACE_DISPATCH, ("Getting a name: Arg=%p\n", Arg)); /* Get the entire name string from the AML stream */ - Status = AcpiAmlGetNameString (ACPI_TYPE_ANY, - Arg->Value.Buffer, - &NameString, - &NameLength); + Status = AcpiExGetNameString (ACPI_TYPE_ANY, Arg->Value.Buffer, + &NameString, &NameLength); if (ACPI_FAILURE (Status)) { @@ -410,9 +400,9 @@ AcpiDsCreateOperand ( ParentOp = Arg->Parent; if ((AcpiPsIsNodeOp (ParentOp->Opcode)) && - (ParentOp->Opcode != AML_METHODCALL_OP) && + (ParentOp->Opcode != AML_INT_METHODCALL_OP) && (ParentOp->Opcode != AML_REGION_OP) && - (ParentOp->Opcode != AML_NAMEPATH_OP)) + (ParentOp->Opcode != AML_INT_NAMEPATH_OP)) { /* Enter name into namespace if not found */ @@ -434,7 +424,7 @@ AcpiDsCreateOperand ( /* Free the namestring created above */ - AcpiCmFree (NameString); + AcpiUtFree (NameString); /* * The only case where we pass through (ignore) a NOT_FOUND @@ -487,7 +477,7 @@ AcpiDsCreateOperand ( { /* Check for null name case */ - if (Arg->Opcode == AML_NAMEPATH_OP) + if (Arg->Opcode == AML_INT_NAMEPATH_OP) { /* * If the name is null, this means that this is an @@ -497,8 +487,7 @@ AcpiDsCreateOperand ( */ Opcode = AML_ZERO_OP; /* Has no arguments! */ - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCreateOperand: Null namepath: Arg=%p\n", Arg)); + DEBUG_PRINTP (TRACE_DISPATCH, ("Null namepath: Arg=%p\n", Arg)); /* * TBD: [Investigate] anything else needed for the @@ -522,8 +511,8 @@ AcpiDsCreateOperand ( if (Flags & OP_HAS_RETURN_VALUE) { - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCreateOperand: Argument previously created, already stacked \n")); + DEBUG_PRINTP (TRACE_DISPATCH, + ("Argument previously created, already stacked \n")); DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (WalkState->Operands [WalkState->NumOperands - 1], WalkState)); @@ -531,7 +520,6 @@ AcpiDsCreateOperand ( * Use value that was already previously returned * by the evaluation of this argument */ - Status = AcpiDsResultPopFromBottom (&ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { @@ -539,8 +527,8 @@ AcpiDsCreateOperand ( * Only error is underflow, and this indicates * a missing or null operand! */ - DEBUG_PRINT (ACPI_ERROR, - ("DsCreateOperand: Missing or null operand, %s\n", AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, ("Missing or null operand, %s\n", + AcpiUtFormatException (Status))); return_ACPI_STATUS (Status); } @@ -550,7 +538,7 @@ AcpiDsCreateOperand ( { /* Create an ACPI_INTERNAL_OBJECT for the argument */ - ObjDesc = AcpiCmCreateInternalObject (DataType); + ObjDesc = AcpiUtCreateInternalObject (DataType); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -562,7 +550,7 @@ AcpiDsCreateOperand ( Opcode, &ObjDesc); if (ACPI_FAILURE (Status)) { - AcpiCmDeleteObjectDesc (ObjDesc); + AcpiUtDeleteObjectDesc (ObjDesc); return_ACPI_STATUS (Status); } } @@ -619,8 +607,7 @@ AcpiDsCreateOperands ( goto Cleanup; } - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCreateOperands: Arg #%d (%p) done, Arg1=%p\n", + DEBUG_PRINTP (TRACE_DISPATCH, ("Arg #%d (%p) done, Arg1=%p\n", ArgCount, Arg, FirstArg)); /* Move on to next argument, if any */ @@ -641,9 +628,8 @@ Cleanup: AcpiDsObjStackPopAndDelete (ArgCount, WalkState); - DEBUG_PRINT (ACPI_ERROR, - ("DsCreateOperands: Error while creating Arg %d - %s\n", - (ArgCount + 1), AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, ("While creating Arg %d - %s\n", + (ArgCount + 1), AcpiUtFormatException (Status))); return_ACPI_STATUS (Status); } @@ -680,12 +666,12 @@ AcpiDsResolveOperands ( /* * TBD: [Investigate] Note from previous parser: - * RefOf problem with AcpiAmlResolveToValue() conversion. + * RefOf problem with AcpiExResolveToValue() conversion. */ for (i = 0; i < WalkState->NumOperands; i++) { - Status = AcpiAmlResolveToValue (&WalkState->Operands[i], WalkState); + Status = AcpiExResolveToValue (&WalkState->Operands[i], WalkState); if (ACPI_FAILURE (Status)) { break; @@ -711,25 +697,25 @@ AcpiDsResolveOperands ( * ******************************************************************************/ -OBJECT_TYPE_INTERNAL +ACPI_OBJECT_TYPE8 AcpiDsMapOpcodeToDataType ( UINT16 Opcode, UINT32 *OutFlags) { - OBJECT_TYPE_INTERNAL DataType = INTERNAL_TYPE_INVALID; + ACPI_OBJECT_TYPE8 DataType = INTERNAL_TYPE_INVALID; ACPI_OPCODE_INFO *OpInfo; UINT32 Flags = 0; + PROC_NAME ("DsMapOpcodeToDataType"); + + OpInfo = AcpiPsGetOpcodeInfo (Opcode); if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) { /* Unknown opcode */ - DEBUG_PRINT (ACPI_ERROR, - ("MapOpcode: Unknown AML opcode: %x\n", - Opcode)); - + DEBUG_PRINTP (ACPI_ERROR, ("Unknown AML opcode: %x\n", Opcode)); return (DataType); } @@ -753,14 +739,13 @@ AcpiDsMapOpcodeToDataType ( DataType = ACPI_TYPE_STRING; break; - case AML_NAMEPATH_OP: + case AML_INT_NAMEPATH_OP: DataType = INTERNAL_TYPE_REFERENCE; break; default: - DEBUG_PRINT (ACPI_ERROR, - ("MapOpcode: Unknown (type LITERAL) AML opcode: %x\n", - Opcode)); + DEBUG_PRINTP (ACPI_ERROR, + ("Unknown (type LITERAL) AML opcode: %x\n", Opcode)); break; } break; @@ -781,9 +766,8 @@ AcpiDsMapOpcodeToDataType ( break; default: - DEBUG_PRINT (ACPI_ERROR, - ("MapOpcode: Unknown (type DATA_TERM) AML opcode: %x\n", - Opcode)); + DEBUG_PRINTP (ACPI_ERROR, + ("Unknown (type DATA_TERM) AML opcode: %x\n", Opcode)); break; } break; @@ -833,9 +817,8 @@ AcpiDsMapOpcodeToDataType ( default: - DEBUG_PRINT (ACPI_ERROR, - ("MapOpcode: Unimplemented data type opcode: %x\n", - Opcode)); + DEBUG_PRINTP (ACPI_ERROR, + ("Unimplemented data type opcode: %x\n", Opcode)); break; } @@ -863,11 +846,11 @@ AcpiDsMapOpcodeToDataType ( * ******************************************************************************/ -OBJECT_TYPE_INTERNAL +ACPI_OBJECT_TYPE8 AcpiDsMapNamedOpcodeToDataType ( UINT16 Opcode) { - OBJECT_TYPE_INTERNAL DataType; + ACPI_OBJECT_TYPE8 DataType; /* Decode Opcode */ @@ -898,8 +881,8 @@ AcpiDsMapNamedOpcodeToDataType ( DataType = ACPI_TYPE_PROCESSOR; break; - case AML_DEF_FIELD_OP: /* DefFieldOp */ - DataType = INTERNAL_TYPE_DEF_FIELD_DEFN; + case AML_FIELD_OP: /* FieldOp */ + DataType = INTERNAL_TYPE_FIELD_DEFN; break; case AML_INDEX_FIELD_OP: /* IndexFieldOp */ @@ -910,12 +893,12 @@ AcpiDsMapNamedOpcodeToDataType ( DataType = INTERNAL_TYPE_BANK_FIELD_DEFN; break; - case AML_NAMEDFIELD_OP: /* NO CASE IN ORIGINAL */ + case AML_INT_NAMEDFIELD_OP: /* NO CASE IN ORIGINAL */ DataType = ACPI_TYPE_ANY; break; case AML_NAME_OP: /* NameOp - special code in original */ - case AML_NAMEPATH_OP: + case AML_INT_NAMEPATH_OP: DataType = ACPI_TYPE_ANY; break; diff --git a/sys/contrib/dev/acpica/dswexec.c b/sys/contrib/dev/acpica/dswexec.c index d3c04a6..dfbe2e4 100644 --- a/sys/contrib/dev/acpica/dswexec.c +++ b/sys/contrib/dev/acpica/dswexec.c @@ -2,7 +2,7 @@ * * Module Name: dswexec - Dispatcher method execution callbacks; * dispatch to interpreter. - * $Revision: 55 $ + * $Revision: 61 $ * *****************************************************************************/ @@ -126,7 +126,7 @@ #include "acdebug.h" -#define _COMPONENT DISPATCHER +#define _COMPONENT ACPI_DISPATCHER MODULE_NAME ("dswexec") @@ -162,9 +162,9 @@ AcpiDsGetPredicateValue ( Status = AcpiDsResultPop (&ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("DsGetPredicateValue: Could not get result from predicate evaluation, %s\n", - AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, + ("Could not get result from predicate evaluation, %s\n", + AcpiUtFormatException (Status))); return_ACPI_STATUS (Status); } @@ -178,7 +178,7 @@ AcpiDsGetPredicateValue ( return_ACPI_STATUS (Status); } - Status = AcpiAmlResolveToValue (&WalkState->Operands [0], WalkState); + Status = AcpiExResolveToValue (&WalkState->Operands [0], WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -189,8 +189,7 @@ AcpiDsGetPredicateValue ( if (!ObjDesc) { - DEBUG_PRINT (ACPI_ERROR, - ("ExecEndOp: No predicate ObjDesc=%X State=%X\n", + DEBUG_PRINTP (ACPI_ERROR, ("No predicate ObjDesc=%X State=%X\n", ObjDesc, WalkState)); return_ACPI_STATUS (AE_AML_NO_OPERAND); @@ -204,8 +203,8 @@ AcpiDsGetPredicateValue ( if (ObjDesc->Common.Type != ACPI_TYPE_INTEGER) { - DEBUG_PRINT (ACPI_ERROR, - ("ExecEndOp: Bad predicate (not a number) ObjDesc=%X State=%X Type=%X\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Bad predicate (not a number) ObjDesc=%X State=%X Type=%X\n", ObjDesc, WalkState, ObjDesc->Common.Type)); Status = AE_AML_OPERAND_TYPE; @@ -215,7 +214,7 @@ AcpiDsGetPredicateValue ( /* Truncate the predicate to 32-bits if necessary */ - AcpiAmlTruncateFor32bitTable (ObjDesc, WalkState); + AcpiExTruncateFor32bitTable (ObjDesc, WalkState); /* * Save the result of the predicate evaluation on @@ -241,8 +240,7 @@ AcpiDsGetPredicateValue ( Cleanup: - DEBUG_PRINT (TRACE_EXEC, - ("ExecEndOp: Completed a predicate eval=%X Op=%X\n", + DEBUG_PRINTP (TRACE_EXEC, ("Completed a predicate eval=%X Op=%X\n", WalkState->ControlState->Common.Value, Op)); /* Break to debugger to display result */ @@ -254,7 +252,7 @@ Cleanup: * we don't need it anymore) */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); WalkState->ControlState->Common.State = CONTROL_NORMAL; @@ -323,7 +321,7 @@ AcpiDsExecBeginOp ( (WalkState->ControlState->Common.State == CONTROL_CONDITIONAL_EXECUTING)) { - DEBUG_PRINT (TRACE_EXEC, ("BeginOp: Exec predicate Op=%X State=%X\n", + DEBUG_PRINTP (TRACE_EXEC, ("Exec predicate Op=%X State=%X\n", Op, WalkState)); WalkState->ControlState->Common.State = CONTROL_PREDICATE_EXECUTING; @@ -338,7 +336,7 @@ AcpiDsExecBeginOp ( /* We want to send namepaths to the load code */ - if (Op->Opcode == AML_NAMEPATH_OP) + if (Op->Opcode == AML_INT_NAMEPATH_OP) { OpInfo->Flags = OPTYPE_NAMED_OBJECT; } @@ -442,11 +440,9 @@ AcpiDsExecEndOp ( UINT16 Opcode; UINT8 Optype; ACPI_PARSE_OBJECT *NextOp; - ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *FirstArg; ACPI_OPERAND_OBJECT *ResultObj = NULL; ACPI_OPCODE_INFO *OpInfo; - UINT32 OperandIndex; FUNCTION_TRACE_PTR ("DsExecEndOp", Op); @@ -458,9 +454,7 @@ AcpiDsExecEndOp ( OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) { - DEBUG_PRINT (ACPI_ERROR, ("ExecEndOp: Unknown opcode. Op=%X\n", - Op)); - + DEBUG_PRINTP (ACPI_ERROR, ("Unknown opcode %X\n", Op->Opcode)); return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } @@ -487,15 +481,13 @@ AcpiDsExecEndOp ( { case OPTYPE_UNDEFINED: - DEBUG_PRINT (ACPI_ERROR, ("ExecEndOp: Undefined opcode type Op=%X\n", - Op)); + DEBUG_PRINTP (ACPI_ERROR, ("Undefined opcode type Op=%X\n", Op)); return_ACPI_STATUS (AE_NOT_IMPLEMENTED); break; case OPTYPE_BOGUS: - DEBUG_PRINT (TRACE_DISPATCH, - ("ExecEndOp: Internal opcode=%X type Op=%X\n", + DEBUG_PRINTP (TRACE_DISPATCH, ("Internal opcode=%X type Op=%X\n", Opcode, Op)); break; @@ -530,9 +522,6 @@ AcpiDsExecEndOp ( goto Cleanup; } - OperandIndex = WalkState->NumOperands - 1; - - /* Done with this result state (Now that operand stack is built) */ Status = AcpiDsResultStackPop (WalkState); @@ -547,7 +536,7 @@ AcpiDsExecEndOp ( /* 1 Operand, 0 ExternalResult, 0 InternalResult */ - Status = AcpiAmlExecMonadic1 (Opcode, WalkState); + Status = AcpiExMonadic1 (Opcode, WalkState); break; @@ -555,7 +544,7 @@ AcpiDsExecEndOp ( /* 1 Operand, 0 ExternalResult, 1 InternalResult */ - Status = AcpiAmlExecMonadic2 (Opcode, WalkState, &ResultObj); + Status = AcpiExMonadic2 (Opcode, WalkState, &ResultObj); break; @@ -563,7 +552,7 @@ AcpiDsExecEndOp ( /* 1 Operand, 1 ExternalResult, 1 InternalResult */ - Status = AcpiAmlExecMonadic2R (Opcode, WalkState, &ResultObj); + Status = AcpiExMonadic2R (Opcode, WalkState, &ResultObj); break; @@ -571,7 +560,7 @@ AcpiDsExecEndOp ( /* 2 Operands, 0 ExternalResult, 0 InternalResult */ - Status = AcpiAmlExecDyadic1 (Opcode, WalkState); + Status = AcpiExDyadic1 (Opcode, WalkState); break; @@ -579,7 +568,7 @@ AcpiDsExecEndOp ( /* 2 Operands, 0 ExternalResult, 1 InternalResult */ - Status = AcpiAmlExecDyadic2 (Opcode, WalkState, &ResultObj); + Status = AcpiExDyadic2 (Opcode, WalkState, &ResultObj); break; @@ -587,7 +576,7 @@ AcpiDsExecEndOp ( /* 2 Operands, 1 or 2 ExternalResults, 1 InternalResult */ - Status = AcpiAmlExecDyadic2R (Opcode, WalkState, &ResultObj); + Status = AcpiExDyadic2R (Opcode, WalkState, &ResultObj); break; @@ -595,7 +584,7 @@ AcpiDsExecEndOp ( /* 2 Operands, 0 ExternalResult, 1 InternalResult */ - Status = AcpiAmlExecDyadic2S (Opcode, WalkState, &ResultObj); + Status = AcpiExDyadic2S (Opcode, WalkState, &ResultObj); break; @@ -603,7 +592,7 @@ AcpiDsExecEndOp ( /* 3 Operands, 1 ExternalResult, 1 InternalResult */ - Status = AcpiAmlExecIndex (WalkState, &ResultObj); + Status = AcpiExIndex (WalkState, &ResultObj); break; @@ -611,7 +600,7 @@ AcpiDsExecEndOp ( /* 6 Operands, 0 ExternalResult, 1 InternalResult */ - Status = AcpiAmlExecMatch (WalkState, &ResultObj); + Status = AcpiExMatch (WalkState, &ResultObj); break; @@ -619,7 +608,7 @@ AcpiDsExecEndOp ( /* 1 or 2 operands, 0 Internal Result */ - Status = AcpiAmlExecReconfiguration (Opcode, WalkState); + Status = AcpiExReconfiguration (Opcode, WalkState); break; @@ -627,7 +616,7 @@ AcpiDsExecEndOp ( /* 3 Operands, 0 ExternalResult, 0 InternalResult */ - Status = AcpiAmlExecFatal (WalkState); + Status = AcpiExFatal (WalkState); break; } @@ -656,8 +645,7 @@ AcpiDsExecEndOp ( case OPTYPE_METHOD_CALL: - DEBUG_PRINT (TRACE_DISPATCH, - ("ExecEndOp: Method invocation, Op=%X\n", Op)); + DEBUG_PRINTP (TRACE_DISPATCH, ("Method invocation, Op=%X\n", Op)); /* * (AML_METHODCALL) Op->Value->Arg->Node contains @@ -666,7 +654,6 @@ AcpiDsExecEndOp ( /* NextOp points to the op that holds the method name */ NextOp = FirstArg; - Node = NextOp->Node; /* NextOp points to first argument op */ @@ -710,9 +697,8 @@ AcpiDsExecEndOp ( case OPTYPE_CREATE_FIELD: - DEBUG_PRINT (TRACE_EXEC, - ("ExecEndOp: Executing CreateField Buffer/Index Op=%X\n", - Op)); + DEBUG_PRINTP (TRACE_EXEC, + ("Executing CreateField Buffer/Index Op=%X\n", Op)); Status = AcpiDsLoad2EndOp (WalkState, Op); if (ACPI_FAILURE (Status)) @@ -720,7 +706,7 @@ AcpiDsExecEndOp ( break; } - Status = AcpiDsEvalFieldUnitOperands (WalkState, Op); + Status = AcpiDsEvalBufferFieldOperands (WalkState, Op); break; @@ -736,9 +722,8 @@ AcpiDsExecEndOp ( { case AML_REGION_OP: - DEBUG_PRINT (TRACE_EXEC, - ("ExecEndOp: Executing OpRegion Address/Length Op=%X\n", - Op)); + DEBUG_PRINTP (TRACE_EXEC, + ("Executing OpRegion Address/Length Op=%X\n", Op)); Status = AcpiDsEvalRegionOperands (WalkState, Op); if (ACPI_FAILURE (Status)) @@ -772,8 +757,8 @@ AcpiDsExecEndOp ( default: - DEBUG_PRINT (ACPI_ERROR, - ("ExecEndOp: Unimplemented opcode, type=%X Opcode=%X Op=%X\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Unimplemented opcode, type=%X Opcode=%X Op=%X\n", Optype, Op->Opcode, Op)); Status = AE_NOT_IMPLEMENTED; @@ -785,7 +770,7 @@ AcpiDsExecEndOp ( * ACPI 2.0 support for 64-bit integers: * Truncate numeric result value if we are executing from a 32-bit ACPI table */ - AcpiAmlTruncateFor32bitTable (ResultObj, WalkState); + AcpiExTruncateFor32bitTable (ResultObj, WalkState); /* * Check if we just completed the evaluation of a diff --git a/sys/contrib/dev/acpica/dswload.c b/sys/contrib/dev/acpica/dswload.c index 47d57a2..e098485 100644 --- a/sys/contrib/dev/acpica/dswload.c +++ b/sys/contrib/dev/acpica/dswload.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dswload - Dispatcher namespace load callbacks - * $Revision: 26 $ + * $Revision: 37 $ * *****************************************************************************/ @@ -125,11 +125,11 @@ #include "acevents.h" -#define _COMPONENT DISPATCHER +#define _COMPONENT ACPI_DISPATCHER MODULE_NAME ("dswload") -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDsLoad1BeginOp * @@ -141,7 +141,7 @@ * * DESCRIPTION: Descending callback used during the loading of ACPI tables. * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiDsLoad1BeginOp ( @@ -152,12 +152,12 @@ AcpiDsLoad1BeginOp ( { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; - OBJECT_TYPE_INTERNAL DataType; + ACPI_OBJECT_TYPE8 DataType; NATIVE_CHAR *Path; - DEBUG_PRINT (TRACE_DISPATCH, - ("Load1BeginOp: Op=%p State=%p\n", Op, WalkState)); + PROC_NAME ("DsLoad1BeginOp"); + DEBUG_PRINTP (TRACE_DISPATCH, ("Op=%p State=%p\n", Op, WalkState)); /* We are only interested in opcodes that have an associated name */ @@ -184,14 +184,14 @@ AcpiDsLoad1BeginOp ( DataType = AcpiDsMapNamedOpcodeToDataType (Opcode); - DEBUG_PRINT (TRACE_DISPATCH, - ("Load1BeginOp: State=%p Op=%p Type=%x\n", WalkState, Op, DataType)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("State=%p Op=%p Type=%x\n", WalkState, Op, DataType)); if (Opcode == AML_SCOPE_OP) { - DEBUG_PRINT (TRACE_DISPATCH, - ("Load1BeginOp: State=%p Op=%p Type=%x\n", WalkState, Op, DataType)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("State=%p Op=%p Type=%x\n", WalkState, Op, DataType)); } /* @@ -199,9 +199,8 @@ AcpiDsLoad1BeginOp ( * 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, - DataType, IMODE_LOAD_PASS1, - NS_NO_UPSEARCH, WalkState, &(Node)); + Status = AcpiNsLookup (WalkState->ScopeInfo, Path, DataType, + IMODE_LOAD_PASS1, NS_NO_UPSEARCH, WalkState, &(Node)); if (ACPI_FAILURE (Status)) { @@ -238,7 +237,7 @@ AcpiDsLoad1BeginOp ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDsLoad1EndOp * @@ -251,18 +250,18 @@ AcpiDsLoad1BeginOp ( * 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) { - OBJECT_TYPE_INTERNAL DataType; + ACPI_OBJECT_TYPE8 DataType; - DEBUG_PRINT (TRACE_DISPATCH, - ("Load1EndOp: Op=%p State=%p\n", Op, WalkState)); + PROC_NAME ("DsLoad1EndOp"); + DEBUG_PRINT (TRACE_DISPATCH, ("Op=%p State=%p\n", Op, WalkState)); /* We are only interested in opcodes that have an associated name */ @@ -294,10 +293,9 @@ AcpiDsLoad1EndOp ( if (AcpiNsOpensScope (DataType)) { + DEBUG_PRINTP (TRACE_DISPATCH, ("(%s): Popping scope for Op %p\n", + AcpiUtGetTypeName (DataType), Op)); - DEBUG_PRINT (TRACE_DISPATCH, - ("Load1EndOp/%s: Popping scope for Op %p\n", - AcpiCmGetTypeName (DataType), Op)); AcpiDsScopeStackPop (WalkState); } @@ -306,7 +304,7 @@ AcpiDsLoad1EndOp ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDsLoad2BeginOp * @@ -318,7 +316,7 @@ AcpiDsLoad1EndOp ( * * DESCRIPTION: Descending callback used during the loading of ACPI tables. * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiDsLoad2BeginOp ( @@ -329,19 +327,19 @@ AcpiDsLoad2BeginOp ( { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; - OBJECT_TYPE_INTERNAL DataType; + ACPI_OBJECT_TYPE8 DataType; NATIVE_CHAR *BufferPtr; void *Original = NULL; - DEBUG_PRINT (TRACE_DISPATCH, - ("Load2BeginOp: Op=%p State=%p\n", Op, WalkState)); + PROC_NAME ("DsLoad2BeginOp"); + DEBUG_PRINTP (TRACE_DISPATCH, ("Op=%p State=%p\n", Op, WalkState)); /* We only care about Namespace opcodes here */ if (!AcpiPsIsNamespaceOp (Opcode) && - Opcode != AML_NAMEPATH_OP) + Opcode != AML_INT_NAMEPATH_OP) { return (AE_OK); } @@ -359,7 +357,7 @@ AcpiDsLoad2BeginOp ( /* * Get the name we are going to enter or lookup in the namespace */ - if (Opcode == AML_NAMEPATH_OP) + if (Opcode == AML_INT_NAMEPATH_OP) { /* For Namepath op, get the path string */ @@ -390,11 +388,11 @@ AcpiDsLoad2BeginOp ( DataType = AcpiDsMapNamedOpcodeToDataType (Opcode); - DEBUG_PRINT (TRACE_DISPATCH, - ("Load2BeginOp: State=%p Op=%p Type=%x\n", WalkState, Op, DataType)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("State=%p Op=%p Type=%x\n", WalkState, Op, DataType)); - if (Opcode == AML_DEF_FIELD_OP || + if (Opcode == AML_FIELD_OP || Opcode == AML_BANK_FIELD_OP || Opcode == AML_INDEX_FIELD_OP) { @@ -402,7 +400,7 @@ AcpiDsLoad2BeginOp ( Status = AE_OK; } - else if (Opcode == AML_NAMEPATH_OP) + else if (Opcode == AML_INT_NAMEPATH_OP) { /* * The NamePath is an object reference to an existing object. Don't enter the @@ -440,10 +438,8 @@ AcpiDsLoad2BeginOp ( * 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, BufferPtr, - DataType, IMODE_EXECUTE, - NS_NO_UPSEARCH, WalkState, - &(Node)); + Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, DataType, + IMODE_EXECUTE, NS_NO_UPSEARCH, WalkState, &(Node)); } if (ACPI_SUCCESS (Status)) @@ -473,23 +469,21 @@ AcpiDsLoad2BeginOp ( if (Original) { - DEBUG_PRINT (ACPI_INFO, - ("Lookup: old %p new %p\n", Original, Node)); + DEBUG_PRINTP (ACPI_INFO, ("old %p new %p\n", Original, Node)); if (Original != Node) { - DEBUG_PRINT (ACPI_INFO, + DEBUG_PRINTP (ACPI_INFO, ("Lookup match error: old %p new %p\n", Original, Node)); } } } - return (Status); } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDsLoad2EndOp * @@ -502,7 +496,7 @@ AcpiDsLoad2BeginOp ( * DESCRIPTION: Ascending callback used during the loading of the namespace, * both control methods and everything else. * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiDsLoad2EndOp ( @@ -510,13 +504,14 @@ AcpiDsLoad2EndOp ( ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status = AE_OK; - OBJECT_TYPE_INTERNAL DataType; + ACPI_OBJECT_TYPE8 DataType; ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *Arg; ACPI_NAMESPACE_NODE *NewNode; - DEBUG_PRINT (TRACE_DISPATCH, ("Load2EndOp: Op=%p State=%p\n", Op, WalkState)); + PROC_NAME ("DsLoad2EndOp"); + DEBUG_PRINTP (TRACE_DISPATCH, ("Op=%p State=%p\n", Op, WalkState)); if (!AcpiPsIsNamespaceObjectOp (Op->Opcode)) { @@ -525,14 +520,13 @@ AcpiDsLoad2EndOp ( if (Op->Opcode == AML_SCOPE_OP) { - DEBUG_PRINT (TRACE_DISPATCH, - ("Load2EndOp: ending scope Op=%p State=%p\n", Op, WalkState)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("Ending scope Op=%p State=%p\n", Op, WalkState)); if (((ACPI_PARSE2_OBJECT *)Op)->Name == -1) { - DEBUG_PRINT (ACPI_ERROR, - ("Load2EndOp: Un-named scope! Op=%p State=%p\n", Op, - WalkState)); + DEBUG_PRINTP (ACPI_ERROR, ("Unnamed scope! Op=%p State=%p\n", + Op, WalkState)); return (AE_OK); } } @@ -559,9 +553,8 @@ AcpiDsLoad2EndOp ( if (AcpiNsOpensScope (DataType)) { - DEBUG_PRINT (TRACE_DISPATCH, - ("AmlEndNamespaceScope/%s: Popping scope for Op %p\n", - AcpiCmGetTypeName (DataType), Op)); + DEBUG_PRINTP (TRACE_DISPATCH, ("(%s) Popping scope for Op %p\n", + AcpiUtGetTypeName (DataType), Op)); AcpiDsScopeStackPop (WalkState); } @@ -589,6 +582,7 @@ AcpiDsLoad2EndOp ( * AML_CREATEBYTEFIELD * AML_CREATEWORDFIELD * AML_CREATEDWORDFIELD + * AML_CREATEQWORDFIELD * AML_METHODCALL */ @@ -601,18 +595,19 @@ AcpiDsLoad2EndOp ( { case AML_CREATE_FIELD_OP: - case AML_BIT_FIELD_OP: - case AML_BYTE_FIELD_OP: - case AML_WORD_FIELD_OP: - case AML_DWORD_FIELD_OP: + 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: /* * Create the field object, but the field buffer and index must * be evaluated later during the execution phase */ - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-CreateXxxField: State=%p Op=%p NamedObj=%p\n", + DEBUG_PRINTP (TRACE_DISPATCH, + ("CreateXxxField: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); /* Get the NameString argument */ @@ -628,49 +623,51 @@ AcpiDsLoad2EndOp ( Arg = AcpiPsGetArg (Op, 2); } + if (!Arg) + { + Status = AE_AML_NO_OPERAND; + goto Cleanup; + } + /* * Enter the NameString into the namespace */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, - Arg->Value.String, - INTERNAL_TYPE_DEF_ANY, - IMODE_LOAD_PASS1, + Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, + INTERNAL_TYPE_DEF_ANY, IMODE_LOAD_PASS1, NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, WalkState, &(NewNode)); - - if (ACPI_SUCCESS (Status)) + if (ACPI_FAILURE (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->Node = NewNode; + goto Cleanup; + } + /* 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->Node = NewNode; + + /* + * 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. + */ + if (!NewNode->Object) + { /* - * 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. + * The Field definition is not fully parsed at this time. + * (We must save the address of the AML for the buffer and index operands) */ - if (!NewNode->Object) - { - /* - * The Field definition is not fully parsed at this time. - * (We must save the address of the AML for the buffer and index operands) - */ - Status = AcpiAmlExecCreateField (((ACPI_PARSE2_OBJECT *) Op)->Data, - ((ACPI_PARSE2_OBJECT *) Op)->Length, - NewNode, WalkState); - } + Status = AcpiExCreateBufferField (((ACPI_PARSE2_OBJECT *) Op)->Data, + ((ACPI_PARSE2_OBJECT *) Op)->Length, + NewNode, WalkState); } - - break; - case AML_METHODCALL_OP: + case AML_INT_METHODCALL_OP: - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("RESOLVING-MethodCall: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); @@ -679,14 +676,14 @@ AcpiDsLoad2EndOp ( */ Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - ACPI_TYPE_ANY, IMODE_LOAD_PASS2, - NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, - WalkState, &(NewNode)); + ACPI_TYPE_ANY, IMODE_LOAD_PASS2, + NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, + WalkState, &(NewNode)); if (ACPI_SUCCESS (Status)) { -/* has name already been resolved by here ??*/ + /* TBD: has name already been resolved by here ??*/ /* TBD: [Restructure] 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! */ @@ -706,11 +703,11 @@ AcpiDsLoad2EndOp ( /* Nothing to do other than enter object into namespace */ - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-Processor: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); - Status = AcpiAmlExecCreateProcessor (Op, (ACPI_HANDLE) Node); + Status = AcpiExCreateProcessor (Op, Node); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -726,11 +723,11 @@ AcpiDsLoad2EndOp ( /* Nothing to do other than enter object into namespace */ - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-PowerResource: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); - Status = AcpiAmlExecCreatePowerResource (Op, (ACPI_HANDLE) Node); + Status = AcpiExCreatePowerResource (Op, Node); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -746,50 +743,45 @@ AcpiDsLoad2EndOp ( /* Nothing to do other than enter object into namespace */ - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-ThermalZone: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); break; - case AML_DEF_FIELD_OP: + case AML_FIELD_OP: - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-Field: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); Arg = Op->Value.Arg; - Status = AcpiDsCreateField (Op, - Arg->Node, - WalkState); + Status = AcpiDsCreateField (Op, Arg->Node, WalkState); break; case AML_INDEX_FIELD_OP: - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-IndexField: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); Arg = Op->Value.Arg; - Status = AcpiDsCreateIndexField (Op, - (ACPI_HANDLE) Arg->Node, + Status = AcpiDsCreateIndexField (Op, (ACPI_HANDLE) Arg->Node, WalkState); break; case AML_BANK_FIELD_OP: - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-BankField: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); Arg = Op->Value.Arg; - Status = AcpiDsCreateBankField (Op, - Arg->Node, - WalkState); + Status = AcpiDsCreateBankField (Op, Arg->Node, WalkState); break; @@ -798,23 +790,22 @@ AcpiDsLoad2EndOp ( */ case AML_METHOD_OP: - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-Method: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); if (!Node->Object) { - Status = AcpiAmlExecCreateMethod (((ACPI_PARSE2_OBJECT *) Op)->Data, + Status = AcpiExCreateMethod (((ACPI_PARSE2_OBJECT *) Op)->Data, ((ACPI_PARSE2_OBJECT *) Op)->Length, - Arg->Value.Integer, (ACPI_HANDLE) Node); + Arg->Value.Integer, Node); } - break; case AML_MUTEX_OP: - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-Mutex: Op=%p State=%p\n", Op, WalkState)); Status = AcpiDsCreateOperands (WalkState, Arg); @@ -823,13 +814,13 @@ AcpiDsLoad2EndOp ( goto Cleanup; } - Status = AcpiAmlExecCreateMutex (WalkState); + Status = AcpiExCreateMutex (WalkState); break; case AML_EVENT_OP: - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-Event: Op=%p State=%p\n", Op, WalkState)); Status = AcpiDsCreateOperands (WalkState, Arg); @@ -838,7 +829,7 @@ AcpiDsLoad2EndOp ( goto Cleanup; } - Status = AcpiAmlExecCreateEvent (WalkState); + Status = AcpiExCreateEvent (WalkState); break; @@ -849,19 +840,17 @@ AcpiDsLoad2EndOp ( break; } - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-Opregion: Op=%p State=%p NamedObj=%p\n", Op, WalkState, Node)); - + DEBUG_PRINTP (TRACE_DISPATCH, + ("LOADING-Opregion: Op=%p State=%p NamedObj=%p\n", + Op, WalkState, Node)); /* * 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) */ - - Status = AcpiAmlExecCreateRegion (((ACPI_PARSE2_OBJECT *) Op)->Data, - ((ACPI_PARSE2_OBJECT *) Op)->Length, - (ACPI_ADDRESS_SPACE_TYPE) Arg->Value.Integer, - WalkState); + Status = AcpiExCreateRegion (((ACPI_PARSE2_OBJECT *) Op)->Data, + ((ACPI_PARSE2_OBJECT *) Op)->Length, + (ACPI_ADR_SPACE_TYPE) Arg->Value.Integer, WalkState); DEBUG_PRINT (TRACE_DISPATCH, ("Completed OpRegion Init, Op=%p State=%p entry=%p\n", @@ -873,7 +862,7 @@ AcpiDsLoad2EndOp ( case AML_ALIAS_OP: - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-Alias: Op=%p State=%p\n", Op, WalkState)); Status = AcpiDsCreateOperands (WalkState, Arg); @@ -882,13 +871,13 @@ AcpiDsLoad2EndOp ( goto Cleanup; } - Status = AcpiAmlExecCreateAlias (WalkState); + Status = AcpiExCreateAlias (WalkState); break; case AML_NAME_OP: - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-Name: Op=%p State=%p\n", Op, WalkState)); /* @@ -905,9 +894,9 @@ AcpiDsLoad2EndOp ( break; - case AML_NAMEPATH_OP: + case AML_INT_NAMEPATH_OP: - DEBUG_PRINT (TRACE_DISPATCH, + DEBUG_PRINTP (TRACE_DISPATCH, ("LOADING-NamePath object: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); break; diff --git a/sys/contrib/dev/acpica/dswscope.c b/sys/contrib/dev/acpica/dswscope.c index 6e7d7ff..8e28cb3 100644 --- a/sys/contrib/dev/acpica/dswscope.c +++ b/sys/contrib/dev/acpica/dswscope.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dswscope - Scope stack manipulation - * $Revision: 42 $ + * $Revision: 45 $ * *****************************************************************************/ @@ -121,7 +121,7 @@ #include "acdispat.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_DISPATCHER MODULE_NAME ("dswscope") @@ -155,7 +155,7 @@ AcpiDsScopeStackClear ( DEBUG_PRINT (TRACE_EXEC, ("Popped object type %X\n", ScopeInfo->Common.Value)); - AcpiCmDeleteGenericState (ScopeInfo); + AcpiUtDeleteGenericState (ScopeInfo); } } @@ -175,7 +175,7 @@ AcpiDsScopeStackClear ( ACPI_STATUS AcpiDsScopeStackPush ( ACPI_NAMESPACE_NODE *Node, - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *ScopeInfo; @@ -194,7 +194,7 @@ AcpiDsScopeStackPush ( /* Make sure object type is valid */ - if (!AcpiAmlValidateObjectType (Type)) + if (!AcpiExValidateObjectType (Type)) { REPORT_WARNING (("DsScopeStackPush: type code out of range\n")); } @@ -202,7 +202,7 @@ AcpiDsScopeStackPush ( /* Allocate a new scope object */ - ScopeInfo = AcpiCmCreateGenericState (); + ScopeInfo = AcpiUtCreateGenericState (); if (!ScopeInfo) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -215,7 +215,7 @@ AcpiDsScopeStackPush ( /* Push new scope object onto stack */ - AcpiCmPushGenericState (&WalkState->ScopeInfo, ScopeInfo); + AcpiUtPushGenericState (&WalkState->ScopeInfo, ScopeInfo); return_ACPI_STATUS (AE_OK); } @@ -251,7 +251,7 @@ AcpiDsScopeStackPop ( * Pop scope info object off the stack. */ - ScopeInfo = AcpiCmPopGenericState (&WalkState->ScopeInfo); + ScopeInfo = AcpiUtPopGenericState (&WalkState->ScopeInfo); if (!ScopeInfo) { return_ACPI_STATUS (AE_STACK_UNDERFLOW); @@ -260,7 +260,7 @@ AcpiDsScopeStackPop ( DEBUG_PRINT (TRACE_EXEC, ("Popped object type %X\n", ScopeInfo->Common.Value)); - AcpiCmDeleteGenericState (ScopeInfo); + AcpiUtDeleteGenericState (ScopeInfo); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/dswstate.c b/sys/contrib/dev/acpica/dswstate.c index dc0b394..561378c 100644 --- a/sys/contrib/dev/acpica/dswstate.c +++ b/sys/contrib/dev/acpica/dswstate.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dswstate - Dispatcher parse tree walk management routines - * $Revision: 38 $ + * $Revision: 45 $ * *****************************************************************************/ @@ -124,11 +124,10 @@ #include "acnamesp.h" #include "acinterp.h" -#define _COMPONENT DISPATCHER +#define _COMPONENT ACPI_DISPATCHER MODULE_NAME ("dswstate") - /******************************************************************************* * * FUNCTION: AcpiDsResultInsert @@ -151,27 +150,29 @@ AcpiDsResultInsert ( ACPI_GENERIC_STATE *State; + PROC_NAME ("DsResultInsert"); + + State = WalkState->Results; if (!State) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultInsert: No result object pushed! State=%p\n", + DEBUG_PRINTP (ACPI_ERROR, ("No result object pushed! State=%p\n", WalkState)); return (AE_NOT_EXIST); } if (Index >= OBJ_NUM_OPERANDS) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultInsert: Index out of range: %X Obj=%p State=%p Num=%X\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Index out of range: %X Obj=%p State=%p Num=%X\n", Index, Object, WalkState, State->Results.NumResults)); return (AE_BAD_PARAMETER); } if (!Object) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultInsert: Null Object! Index=%X Obj=%p State=%p Num=%X\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Null Object! Index=%X Obj=%p State=%p Num=%X\n", Index, Object, WalkState, State->Results.NumResults)); return (AE_BAD_PARAMETER); } @@ -179,9 +180,9 @@ AcpiDsResultInsert ( State->Results.ObjDesc [Index] = Object; State->Results.NumResults++; - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackPush: Obj=%p [%s] State=%p Num=%X Cur=%X\n", - Object, Object ? AcpiCmGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type) : "NULL", + DEBUG_PRINTP (TRACE_EXEC, + ("Obj=%p [%s] State=%p Num=%X Cur=%X\n", + Object, Object ? AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type) : "NULL", WalkState, State->Results.NumResults, WalkState->CurrentResult)); return (AE_OK); @@ -211,19 +212,21 @@ AcpiDsResultRemove ( ACPI_GENERIC_STATE *State; + PROC_NAME ("DsResultRemove"); + + State = WalkState->Results; if (!State) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultRemove: No result object pushed! State=%p\n", + DEBUG_PRINTP (ACPI_ERROR, ("No result object pushed! State=%p\n", WalkState)); return (AE_NOT_EXIST); } if (Index >= OBJ_NUM_OPERANDS) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultRemove: Index out of range: %X State=%p Num=%X\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Index out of range: %X State=%p Num=%X\n", Index, WalkState, State->Results.NumResults)); } @@ -232,8 +235,8 @@ AcpiDsResultRemove ( if (!State->Results.ObjDesc [Index]) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultStackRemove: Null operand! State=%p #Ops=%X, Index=%X\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Null operand! State=%p #Ops=%X, Index=%X\n", WalkState, State->Results.NumResults, Index)); return (AE_AML_NO_RETURN_VALUE); } @@ -245,9 +248,9 @@ AcpiDsResultRemove ( *Object = State->Results.ObjDesc [Index]; State->Results.ObjDesc [Index] = NULL; - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackRemove: Obj=%p [%s] Index=%X State=%p Num=%X\n", - *Object, (*Object) ? AcpiCmGetTypeName ((*Object)->Common.Type) : "NULL", + DEBUG_PRINTP (TRACE_EXEC, + ("Obj=%p [%s] Index=%X State=%p Num=%X\n", + *Object, (*Object) ? AcpiUtGetTypeName ((*Object)->Common.Type) : "NULL", Index, WalkState, State->Results.NumResults)); return (AE_OK); @@ -277,6 +280,9 @@ AcpiDsResultPop ( ACPI_GENERIC_STATE *State; + PROC_NAME ("DsResultPop"); + + State = WalkState->Results; if (!State) { @@ -286,8 +292,7 @@ AcpiDsResultPop ( if (!State->Results.NumResults) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPop: Result stack is empty! State=%p\n", + DEBUG_PRINTP (ACPI_ERROR, ("Result stack is empty! State=%p\n", WalkState)); return (AE_AML_NO_RETURN_VALUE); } @@ -305,9 +310,8 @@ AcpiDsResultPop ( *Object = State->Results.ObjDesc [Index -1]; State->Results.ObjDesc [Index -1] = NULL; - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackRemove: Obj=%p [%s] Index=%X State=%p Num=%X\n", - *Object, (*Object) ? AcpiCmGetTypeName ((*Object)->Common.Type) : "NULL", + DEBUG_PRINTP (TRACE_EXEC, ("Obj=%p [%s] Index=%X State=%p Num=%X\n", + *Object, (*Object) ? AcpiUtGetTypeName ((*Object)->Common.Type) : "NULL", Index -1, WalkState, State->Results.NumResults)); return (AE_OK); @@ -315,9 +319,7 @@ AcpiDsResultPop ( } - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPop: No result objects! State=%p\n", - WalkState)); + DEBUG_PRINTP (ACPI_ERROR, ("No result objects! State=%p\n", WalkState)); return (AE_AML_NO_RETURN_VALUE); } @@ -344,21 +346,21 @@ AcpiDsResultPopFromBottom ( ACPI_GENERIC_STATE *State; + PROC_NAME ("DsResultPopFromBottom"); + + State = WalkState->Results; if (!State) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPopFromBottom: Warning: No result object pushed! State=%p\n", - WalkState)); + DEBUG_PRINTP (ACPI_ERROR, + ("Warning: No result object pushed! State=%p\n", WalkState)); return (AE_NOT_EXIST); } if (!State->Results.NumResults) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPopFromBottom: No result objects! State=%p\n", - WalkState)); + DEBUG_PRINTP (ACPI_ERROR, ("No result objects! State=%p\n", WalkState)); return (AE_AML_NO_RETURN_VALUE); } @@ -380,15 +382,13 @@ AcpiDsResultPopFromBottom ( if (!*Object) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPopFromBottom: Null operand! State=%p #Ops=%X, Index=%X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Null operand! State=%p #Ops=%X, Index=%X\n", WalkState, State->Results.NumResults, Index)); return (AE_AML_NO_RETURN_VALUE); } - DEBUG_PRINT (TRACE_EXEC, - ("DsResultPopFromBottom: Obj=%p [%s], Results=%p State=%p\n", - *Object, (*Object) ? AcpiCmGetTypeName ((*Object)->Common.Type) : "NULL", + DEBUG_PRINTP (TRACE_EXEC, ("Obj=%p [%s], Results=%p State=%p\n", + *Object, (*Object) ? AcpiUtGetTypeName ((*Object)->Common.Type) : "NULL", State, WalkState)); @@ -417,26 +417,27 @@ AcpiDsResultPush ( ACPI_GENERIC_STATE *State; + PROC_NAME ("DsResultPush"); + + State = WalkState->Results; if (!State) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPush: No result stack frame\n")); + DEBUG_PRINTP (ACPI_ERROR, ("No result stack frame\n")); return (AE_AML_INTERNAL); } if (State->Results.NumResults == OBJ_NUM_OPERANDS) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPush: Result stack overflow: Obj=%p State=%p Num=%X\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Result stack overflow: Obj=%p State=%p Num=%X\n", Object, WalkState, State->Results.NumResults)); return (AE_STACK_OVERFLOW); } if (!Object) { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPush: Null Object! Obj=%p State=%p Num=%X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Null Object! Obj=%p State=%p Num=%X\n", Object, WalkState, State->Results.NumResults)); return (AE_BAD_PARAMETER); } @@ -445,9 +446,8 @@ AcpiDsResultPush ( State->Results.ObjDesc [State->Results.NumResults] = Object; State->Results.NumResults++; - DEBUG_PRINT (TRACE_EXEC, - ("DsResultPush: Obj=%p [%s] State=%p Num=%X Cur=%X\n", - Object, Object ? AcpiCmGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type) : "NULL", + DEBUG_PRINTP (TRACE_EXEC, ("Obj=%p [%s] State=%p Num=%X Cur=%X\n", + Object, Object ? AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type) : "NULL", WalkState, State->Results.NumResults, WalkState->CurrentResult)); return (AE_OK); @@ -474,16 +474,15 @@ AcpiDsResultStackPush ( ACPI_GENERIC_STATE *State; - State = AcpiCmCreateGenericState (); + State = AcpiUtCreateGenericState (); if (!State) { return (AE_NO_MEMORY); } - AcpiCmPushGenericState (&WalkState->Results, State); + AcpiUtPushGenericState (&WalkState->Results, State); - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackPush: Results=%p State=%p\n", + DEBUG_PRINT (TRACE_EXEC, ("DsResultStackPush: Results=%p State=%p\n", State, WalkState)); return (AE_OK); @@ -513,20 +512,19 @@ AcpiDsResultStackPop ( if (WalkState->Results == NULL) { - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackPop: Underflow - State=%p\n", + DEBUG_PRINT (TRACE_EXEC, ("DsResultStackPop: Underflow - State=%p\n", WalkState)); return (AE_AML_NO_OPERAND); } - State = AcpiCmPopGenericState (&WalkState->Results); + State = AcpiUtPopGenericState (&WalkState->Results); DEBUG_PRINT (TRACE_EXEC, ("DsResultStackPop: Result=%p RemainingResults=%X State=%p\n", State, State->Results.NumResults, WalkState)); - AcpiCmDeleteGenericState (State); + AcpiUtDeleteGenericState (State); return (AE_OK); } @@ -561,7 +559,7 @@ AcpiDsObjStackDeleteAll ( { if (WalkState->Operands[i]) { - AcpiCmRemoveReference (WalkState->Operands[i]); + AcpiUtRemoveReference (WalkState->Operands[i]); WalkState->Operands[i] = NULL; } } @@ -606,7 +604,7 @@ AcpiDsObjStackPush ( WalkState->NumOperands++; DEBUG_PRINT (TRACE_EXEC, ("DsObjStackPush: Obj=%p [%s] State=%p #Ops=%X\n", - Object, AcpiCmGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type), + Object, AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type), WalkState, WalkState->NumOperands)); return (AE_OK); @@ -641,10 +639,10 @@ AcpiDsObjStackPopObject ( DEBUG_PRINT (ACPI_ERROR, ("DsObjStackPop: Missing operand/stack empty! State=%p #Ops=%X\n", WalkState, WalkState->NumOperands)); + *Object = NULL; return (AE_AML_NO_OPERAND); } - /* Pop the stack */ WalkState->NumOperands--; @@ -656,6 +654,7 @@ AcpiDsObjStackPopObject ( DEBUG_PRINT (ACPI_ERROR, ("DsObjStackPop: Null operand! State=%p #Ops=%X\n", WalkState, WalkState->NumOperands)); + *Object = NULL; return (AE_AML_NO_OPERAND); } @@ -665,7 +664,7 @@ AcpiDsObjStackPopObject ( WalkState->Operands [WalkState->NumOperands] = NULL; DEBUG_PRINT (TRACE_EXEC, ("DsObjStackPopObject: Obj=%p [%s] State=%p #Ops=%X\n", - *Object, AcpiCmGetTypeName ((*Object)->Common.Type), + *Object, AcpiUtGetTypeName ((*Object)->Common.Type), WalkState, WalkState->NumOperands)); return (AE_OK); @@ -760,7 +759,7 @@ AcpiDsObjStackPopAndDelete ( ObjDesc = WalkState->Operands [WalkState->NumOperands]; if (ObjDesc) { - AcpiCmRemoveReference (WalkState->Operands [WalkState->NumOperands]); + AcpiUtRemoveReference (WalkState->Operands [WalkState->NumOperands]); WalkState->Operands [WalkState->NumOperands] = NULL; } } @@ -800,14 +799,14 @@ AcpiDsObjStackGetValue ( if (WalkState->NumOperands == 0) { - return_VALUE (NULL); + return_PTR (NULL); } /* or if the index is past the top of the stack */ if (Index > (WalkState->NumOperands - (UINT32) 1)) { - return_VALUE (NULL); + return_PTR (NULL); } @@ -835,7 +834,8 @@ AcpiDsGetCurrentWalkState ( { - DEBUG_PRINT (TRACE_PARSE, ("DsGetCurrentWalkState, =%p\n", WalkList->WalkState)); + DEBUG_PRINT (TRACE_PARSE, ("DsGetCurrentWalkState, =%p\n", + WalkList->WalkState)); if (!WalkList) { @@ -947,7 +947,7 @@ AcpiDsCreateWalkState ( FUNCTION_TRACE ("DsCreateWalkState"); - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); AcpiGbl_WalkStateCacheRequests++; /* Check the cache first */ @@ -962,23 +962,23 @@ AcpiDsCreateWalkState ( AcpiGbl_WalkStateCacheHits++; AcpiGbl_WalkStateCacheDepth--; - DEBUG_PRINT (TRACE_EXEC, ("DsCreateWalkState: State %p from cache\n", WalkState)); + DEBUG_PRINTP (TRACE_EXEC, ("State %p from cache\n", WalkState)); - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); } else { /* The cache is empty, create a new object */ - /* Avoid deadlock with AcpiCmCallocate */ + /* Avoid deadlock with AcpiUtCallocate */ - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); - WalkState = AcpiCmCallocate (sizeof (ACPI_WALK_STATE)); + WalkState = AcpiUtCallocate (sizeof (ACPI_WALK_STATE)); if (!WalkState) { - return_VALUE (NULL); + return_PTR (NULL); } } @@ -986,6 +986,7 @@ AcpiDsCreateWalkState ( WalkState->OwnerId = OwnerId; WalkState->Origin = Origin; WalkState->MethodDesc = MthDesc; + WalkState->WalkList = WalkList; /* Init the method args/local */ @@ -998,7 +999,7 @@ AcpiDsCreateWalkState ( Status = AcpiDsResultStackPush (WalkState); if (ACPI_FAILURE (Status)) { - return_VALUE (NULL); + return_PTR (NULL); } @@ -1039,8 +1040,7 @@ AcpiDsDeleteWalkState ( if (WalkState->DataType != ACPI_DESC_TYPE_WALK) { - DEBUG_PRINT (ACPI_ERROR, - ("DsDeleteWalkState: **** %p not a valid walk state\n", WalkState)); + DEBUG_PRINTP (ACPI_ERROR, ("%p is not a valid walk state\n", WalkState)); return; } @@ -1052,7 +1052,7 @@ AcpiDsDeleteWalkState ( State = WalkState->ControlState; WalkState->ControlState = State->Common.Next; - AcpiCmDeleteGenericState (State); + AcpiUtDeleteGenericState (State); } /* Always must free any linked parse states */ @@ -1062,7 +1062,7 @@ AcpiDsDeleteWalkState ( State = WalkState->ScopeInfo; WalkState->ScopeInfo = State->Common.Next; - AcpiCmDeleteGenericState (State); + AcpiUtDeleteGenericState (State); } /* Always must free any stacked result states */ @@ -1072,7 +1072,7 @@ AcpiDsDeleteWalkState ( State = WalkState->Results; WalkState->Results = State->Common.Next; - AcpiCmDeleteGenericState (State); + AcpiUtDeleteGenericState (State); } @@ -1080,14 +1080,14 @@ AcpiDsDeleteWalkState ( if (AcpiGbl_WalkStateCacheDepth >= MAX_WALK_CACHE_DEPTH) { - AcpiCmFree (WalkState); + AcpiUtFree (WalkState); } /* Otherwise put this object back into the cache */ else { - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); /* Clear the state */ @@ -1101,7 +1101,7 @@ AcpiDsDeleteWalkState ( AcpiGbl_WalkStateCacheDepth++; - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); } return_VOID; @@ -1138,7 +1138,7 @@ AcpiDsDeleteWalkStateCache ( /* Delete one cached state object */ Next = AcpiGbl_WalkStateCache->Next; - AcpiCmFree (AcpiGbl_WalkStateCache); + AcpiUtFree (AcpiGbl_WalkStateCache); AcpiGbl_WalkStateCache = Next; AcpiGbl_WalkStateCacheDepth--; } diff --git a/sys/contrib/dev/acpica/evevent.c b/sys/contrib/dev/acpica/evevent.c index 2738ea8..898ecbf 100644 --- a/sys/contrib/dev/acpica/evevent.c +++ b/sys/contrib/dev/acpica/evevent.c @@ -2,7 +2,7 @@ * * Module Name: evevent - Fixed and General Purpose AcpiEvent * handling and dispatch - * $Revision: 34 $ + * $Revision: 42 $ * *****************************************************************************/ @@ -119,13 +119,12 @@ #include "achware.h" #include "acevents.h" #include "acnamesp.h" -#include "accommon.h" -#define _COMPONENT EVENT_HANDLING +#define _COMPONENT ACPI_EVENTS MODULE_NAME ("evevent") -/************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvInitialize * @@ -137,7 +136,7 @@ * configured, disables SCI event sources, installs the SCI * handler * - *************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiEvInitialize ( @@ -153,7 +152,7 @@ AcpiEvInitialize ( if (!AcpiGbl_DSDT) { - DEBUG_PRINT (ACPI_WARN, ("EvInitialize: No ACPI tables present!\n")); + DEBUG_PRINTP (ACPI_WARN, ("No ACPI tables present!\n")); return_ACPI_STATUS (AE_NO_ACPI_TABLES); } @@ -162,8 +161,7 @@ AcpiEvInitialize ( if (SYS_MODE_LEGACY == AcpiHwGetModeCapabilities()) { - DEBUG_PRINT (ACPI_WARN, - ("EvInitialize: Only legacy mode supported!\n")); + DEBUG_PRINTP (ACPI_WARN, ("ACPI Mode is not supported!\n")); return_ACPI_STATUS (AE_ERROR); } @@ -179,16 +177,14 @@ AcpiEvInitialize ( Status = AcpiEvFixedEventInitialize (); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_FATAL, - ("EvInitialize: Unable to initialize fixed events.\n")); + DEBUG_PRINTP (ACPI_FATAL, ("Unable to initialize fixed events.\n")); return_ACPI_STATUS (Status); } Status = AcpiEvGpeInitialize (); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_FATAL, - ("EvInitialize: Unable to initialize general purpose events.\n")); + DEBUG_PRINTP (ACPI_FATAL, ("Unable to initialize general purpose events.\n")); return_ACPI_STATUS (Status); } @@ -197,8 +193,7 @@ AcpiEvInitialize ( Status = AcpiEvInstallSciHandler (); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_FATAL, - ("EvInitialize: Unable to install System Control Interrupt Handler\n")); + DEBUG_PRINTP (ACPI_FATAL, ("Unable to install System Control Interrupt Handler\n")); return_ACPI_STATUS (Status); } @@ -208,8 +203,7 @@ AcpiEvInitialize ( Status = AcpiEvInitGpeControlMethods (); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_FATAL, - ("EvInitialize: Unable to initialize Gpe control methods\n")); + DEBUG_PRINTP (ACPI_FATAL, ("Unable to initialize Gpe control methods\n")); return_ACPI_STATUS (Status); } @@ -218,8 +212,7 @@ AcpiEvInitialize ( Status = AcpiEvInitGlobalLockHandler (); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_FATAL, - ("EvInitialize: Unable to initialize Global Lock handler\n")); + DEBUG_PRINTP (ACPI_FATAL, ("Unable to initialize Global Lock handler\n")); return_ACPI_STATUS (Status); } @@ -228,7 +221,7 @@ AcpiEvInitialize ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvFixedEventInitialize * @@ -247,7 +240,7 @@ AcpiEvFixedEventInitialize(void) /* Initialize the structure that keeps track of fixed event handlers */ - for (i = 0; i < NUM_FIXED_EVENTS; i++) + for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { AcpiGbl_FixedEventHandlers[i].Handler = NULL; AcpiGbl_FixedEventHandlers[i].Context = NULL; @@ -263,7 +256,7 @@ AcpiEvFixedEventInitialize(void) } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvFixedEventDetect * @@ -303,7 +296,7 @@ AcpiEvFixedEventDetect(void) IntStatus |= AcpiEvFixedEventDispatch (ACPI_EVENT_PMTIMER); } - /* global event (BIOS want's the global lock) */ + /* global event (BIOS wants the global lock) */ if ((StatusRegister & ACPI_STATUS_GLOBAL) && (EnableRegister & ACPI_ENABLE_GLOBAL)) @@ -331,7 +324,7 @@ AcpiEvFixedEventDetect(void) } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvFixedEventDispatch * @@ -406,7 +399,7 @@ AcpiEvFixedEventDispatch ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvGpeInitialize * @@ -462,11 +455,11 @@ AcpiEvGpeInitialize (void) * Allocate the Gpe information block */ - AcpiGbl_GpeRegisters = AcpiCmCallocate (AcpiGbl_GpeRegisterCount * + AcpiGbl_GpeRegisters = AcpiUtCallocate (AcpiGbl_GpeRegisterCount * sizeof (ACPI_GPE_REGISTERS)); if (!AcpiGbl_GpeRegisters) { - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("Could not allocate the GpeRegisters block\n")); return_ACPI_STATUS (AE_NO_MEMORY); } @@ -477,18 +470,18 @@ AcpiEvGpeInitialize (void) * Initialization to zeros is sufficient */ - AcpiGbl_GpeInfo = AcpiCmCallocate (MUL_8 (AcpiGbl_GpeRegisterCount) * + AcpiGbl_GpeInfo = AcpiUtCallocate (MUL_8 (AcpiGbl_GpeRegisterCount) * sizeof (ACPI_GPE_LEVEL_INFO)); if (!AcpiGbl_GpeInfo) { - AcpiCmFree (AcpiGbl_GpeRegisters); - DEBUG_PRINT (ACPI_ERROR, ("Could not allocate the GpeInfo block\n")); + AcpiUtFree (AcpiGbl_GpeRegisters); + DEBUG_PRINTP (ACPI_ERROR, ("Could not allocate the GpeInfo block\n")); return_ACPI_STATUS (AE_NO_MEMORY); } /* Set the Gpe validation table to GPE_INVALID */ - MEMSET (AcpiGbl_GpeValid, (int) ACPI_GPE_INVALID, NUM_GPE); + MEMSET (AcpiGbl_GpeValid, (int) ACPI_GPE_INVALID, ACPI_NUM_GPE); /* * Initialize the Gpe information and validation blocks. A goal of these @@ -558,8 +551,7 @@ AcpiEvGpeInitialize (void) RegisterIndex++; } - DEBUG_PRINT (ACPI_INFO, - ("GPE registers: %X@%p (Blk0) %X@%p (Blk1)\n", + DEBUG_PRINTP (ACPI_INFO, ("GPE registers: %X@%p (Blk0) %X@%p (Blk1)\n", Gpe0RegisterCount, AcpiGbl_FADT->XGpe0Blk.Address, Gpe1RegisterCount, AcpiGbl_FADT->XGpe1Blk.Address)); @@ -567,7 +559,7 @@ AcpiEvGpeInitialize (void) } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvSaveMethodInfo * @@ -601,6 +593,9 @@ AcpiEvSaveMethodInfo ( UINT8 Type; + PROC_NAME ("EvSaveMethodInfo"); + + /* Extract the name from the object and convert to a string */ MOVE_UNALIGNED32_TO_32 (Name, &((ACPI_NAMESPACE_NODE *) ObjHandle)->Name); @@ -621,8 +616,8 @@ AcpiEvSaveMethodInfo ( { /* Unknown method type, just ignore it! */ - DEBUG_PRINT (ACPI_ERROR, - ("EvSaveMethodInfo: Unknown GPE method type: %s (name not of form _Lnn or _Enn)\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Unknown GPE method type: %s (name not of form _Lnn or _Enn)\n", Name)); return (AE_OK); } @@ -634,8 +629,8 @@ AcpiEvSaveMethodInfo ( { /* Conversion failed; invalid method, just ignore it */ - DEBUG_PRINT (ACPI_ERROR, - ("EvSaveMethodInfo: Could not extract GPE number from name: %s (name not of form _Lnn or _Enn)\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Could not extract GPE number from name: %s (name not of form _Lnn or _Enn)\n", Name)); return (AE_OK); } @@ -664,14 +659,13 @@ AcpiEvSaveMethodInfo ( AcpiHwEnableGpe (GpeNumber); - DEBUG_PRINT (ACPI_INFO, - ("EvSaveMethodInfo: Registered GPE method %s as GPE number %X\n", + DEBUG_PRINTP (ACPI_INFO, ("Registered GPE method %s as GPE number %X\n", Name, GpeNumber)); return (AE_OK); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvInitGpeControlMethods * @@ -712,7 +706,7 @@ AcpiEvInitGpeControlMethods (void) } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvGpeDetect * @@ -786,7 +780,7 @@ AcpiEvGpeDetect (void) } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvAsynchExecuteGpeMethod * @@ -815,9 +809,9 @@ AcpiEvAsynchExecuteGpeMethod ( /* * Take a snapshot of the GPE info for this level */ - AcpiCmAcquireMutex (ACPI_MTX_EVENTS); + AcpiUtAcquireMutex (ACPI_MTX_EVENTS); GpeInfo = AcpiGbl_GpeInfo [GpeNumber]; - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); + AcpiUtReleaseMutex (ACPI_MTX_EVENTS); /* * Method Handler (_Lxx, _Exx): @@ -848,7 +842,7 @@ AcpiEvAsynchExecuteGpeMethod ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvGpeDispatch * @@ -875,14 +869,13 @@ AcpiEvGpeDispatch ( FUNCTION_TRACE ("EvGpeDispatch"); - /*DEBUG_INCREMENT_EVENT_COUNT (EVENT_GENERAL);*/ /* * Valid GPE number? */ if (AcpiGbl_GpeValid[GpeNumber] == ACPI_GPE_INVALID) { - DEBUG_PRINT (ACPI_ERROR, ("Invalid GPE bit [%X].\n", GpeNumber)); + DEBUG_PRINTP (ACPI_ERROR, ("Invalid GPE bit [%X].\n", GpeNumber)); return_VALUE (INTERRUPT_NOT_HANDLED); } @@ -926,7 +919,7 @@ AcpiEvGpeDispatch ( else if (GpeInfo.MethodHandle) { if (ACPI_FAILURE(AcpiOsQueueForExecution (OSD_PRIORITY_GPE, - AcpiEvAsynchExecuteGpeMethod, (void*)(NATIVE_UINT)GpeNumber))) + AcpiEvAsynchExecuteGpeMethod, (void*) GpeNumber))) { /* * Shoudn't occur, but if it does report an error. Note that diff --git a/sys/contrib/dev/acpica/evmisc.c b/sys/contrib/dev/acpica/evmisc.c index 516774e..afa7b2d 100644 --- a/sys/contrib/dev/acpica/evmisc.c +++ b/sys/contrib/dev/acpica/evmisc.c @@ -2,7 +2,7 @@ * * Module Name: evmisc - ACPI device notification handler dispatch * and ACPI Global Lock support - * $Revision: 22 $ + * $Revision: 31 $ * *****************************************************************************/ @@ -121,13 +121,13 @@ #include "acinterp.h" #include "achware.h" -#define _COMPONENT EVENT_HANDLING +#define _COMPONENT ACPI_EVENTS MODULE_NAME ("evmisc") -/************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiEvNotifyDispatch + * FUNCTION: AcpiEvQueueNotifyRequest * * PARAMETERS: * @@ -136,16 +136,20 @@ * DESCRIPTION: Dispatch a device notification event to a previously * installed handler. * - *************************************************************************/ + ******************************************************************************/ -void -AcpiEvNotifyDispatch ( - ACPI_HANDLE Device, +ACPI_STATUS +AcpiEvQueueNotifyRequest ( + ACPI_NAMESPACE_NODE *Node, UINT32 NotifyValue) { ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *HandlerObj; - NOTIFY_HANDLER Handler; + ACPI_OPERAND_OBJECT *HandlerObj = NULL; + ACPI_GENERIC_STATE *NotifyInfo; + ACPI_STATUS Status = AE_OK; + + + PROC_NAME ("EvQueueNotifyRequest"); /* @@ -155,108 +159,181 @@ AcpiEvNotifyDispatch ( * initiate soft-off or sleep operation? */ - - DEBUG_PRINT (ACPI_INFO, - ("Dispatching Notify(%X) on device %p\n", NotifyValue, Device)); + DEBUG_PRINTP (ACPI_INFO, + ("Dispatching Notify(%X) on node %p\n", NotifyValue, Node)); switch (NotifyValue) { case 0: - DEBUG_PRINT (ACPI_INFO, ("Notify value: Re-enumerate Devices\n")); + DEBUG_PRINTP (ACPI_INFO, ("Notify value: Re-enumerate Devices\n")); break; case 1: - DEBUG_PRINT (ACPI_INFO, ("Notify value: Ejection Request\n")); + DEBUG_PRINTP (ACPI_INFO, ("Notify value: Ejection Request\n")); break; case 2: - DEBUG_PRINT (ACPI_INFO, ("Notify value: Device Wake\n")); + DEBUG_PRINTP (ACPI_INFO, ("Notify value: Device Wake\n")); break; case 0x80: - DEBUG_PRINT (ACPI_INFO, ("Notify value: Status Change\n")); + DEBUG_PRINTP (ACPI_INFO, ("Notify value: Status Change\n")); break; default: - DEBUG_PRINT (ACPI_INFO, ("Unknown Notify Value: %lx \n", NotifyValue)); + DEBUG_PRINTP (ACPI_INFO, ("Unknown Notify Value: %lx \n", NotifyValue)); break; } /* - * Invoke a global notify handler if installed. - * This is done _before_ we invoke the per-device handler attached to the device. + * Get the notify object attached to the device Node */ - if (NotifyValue <= MAX_SYS_NOTIFY) + ObjDesc = AcpiNsGetAttachedObject (Node); + if (ObjDesc) { - /* Global system notification handler */ - if (AcpiGbl_SysNotify.Handler) + /* We have the notify object, Get the right handler */ + + switch (Node->Type) { - AcpiGbl_SysNotify.Handler (Device, NotifyValue, - AcpiGbl_SysNotify.Context); + case ACPI_TYPE_DEVICE: + if (NotifyValue <= MAX_SYS_NOTIFY) + { + HandlerObj = ObjDesc->Device.SysHandler; + } + else + { + HandlerObj = ObjDesc->Device.DrvHandler; + } + break; + + case ACPI_TYPE_THERMAL: + if (NotifyValue <= MAX_SYS_NOTIFY) + { + HandlerObj = ObjDesc->ThermalZone.SysHandler; + } + else + { + HandlerObj = ObjDesc->ThermalZone.DrvHandler; + } + break; } } - else + + /* If there is any handler to run, schedule the dispatcher */ + + if ((AcpiGbl_SysNotify.Handler && (NotifyValue <= MAX_SYS_NOTIFY)) || + (AcpiGbl_DrvNotify.Handler && (NotifyValue > MAX_SYS_NOTIFY)) || + HandlerObj) { - /* Global driver notification handler */ - if (AcpiGbl_DrvNotify.Handler) + NotifyInfo = AcpiUtCreateGenericState (); + if (!NotifyInfo) { - AcpiGbl_DrvNotify.Handler (Device, NotifyValue, - AcpiGbl_DrvNotify.Context); + return (AE_NO_MEMORY); } - } + NotifyInfo->Notify.Node = Node; + NotifyInfo->Notify.Value = (UINT16) NotifyValue; + NotifyInfo->Notify.HandlerObj = HandlerObj; - /* - * Get the notify object which must be attached to the device Node - */ + Status = AcpiOsQueueForExecution (OSD_PRIORITY_HIGH, + AcpiEvNotifyDispatch, NotifyInfo); + if (ACPI_FAILURE (Status)) + { + AcpiUtDeleteGenericState (NotifyInfo); + } + } - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Device); - if (!ObjDesc) + if (!HandlerObj) { - /* There can be no notify handler for this device */ + /* There is no per-device notify handler for this device */ - DEBUG_PRINT (ACPI_INFO, - ("No notify handler for device %p \n", Device)); - return; + DEBUG_PRINTP (ACPI_INFO, ("No notify handler for node %p \n", Node)); } + return (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiEvNotifyDispatch + * + * PARAMETERS: + * + * RETURN: None. + * + * DESCRIPTION: Dispatch a device notification event to a previously + * installed handler. + * + ******************************************************************************/ + +void +AcpiEvNotifyDispatch ( + void *Context) +{ + ACPI_GENERIC_STATE *NotifyInfo = (ACPI_GENERIC_STATE *) Context; + ACPI_NOTIFY_HANDLER GlobalHandler = NULL; + void *GlobalContext = NULL; + ACPI_OPERAND_OBJECT *HandlerObj; + - /* We have the notify object, Get the right handler */ + /* + * We will invoke a global notify handler if installed. + * This is done _before_ we invoke the per-device handler attached to the device. + */ - if (NotifyValue <= MAX_SYS_NOTIFY) + if (NotifyInfo->Notify.Value <= MAX_SYS_NOTIFY) { - HandlerObj = ObjDesc->Device.SysHandler; + /* Global system notification handler */ + + if (AcpiGbl_SysNotify.Handler) + { + GlobalHandler = AcpiGbl_SysNotify.Handler; + GlobalContext = AcpiGbl_SysNotify.Context; + } } + else { - HandlerObj = ObjDesc->Device.DrvHandler; + /* Global driver notification handler */ + + if (AcpiGbl_DrvNotify.Handler) + { + GlobalHandler = AcpiGbl_DrvNotify.Handler; + GlobalContext = AcpiGbl_DrvNotify.Context; + } } - /* Validate the handler */ - if (!HandlerObj) + /* Invoke the system handler first, if present */ + + if (GlobalHandler) { - /* There is no notify handler for this device */ + GlobalHandler (NotifyInfo->Notify.Node, NotifyInfo->Notify.Value, GlobalContext); + } - DEBUG_PRINT (ACPI_INFO, - ("No notify handler for device %p \n", Device)); - return; + /* Now invoke the per-device handler, if present */ + + HandlerObj = NotifyInfo->Notify.HandlerObj; + if (HandlerObj) + { + HandlerObj->NotifyHandler.Handler (NotifyInfo->Notify.Node, NotifyInfo->Notify.Value, + HandlerObj->NotifyHandler.Context); } - /* There is a handler, invoke it */ - Handler = HandlerObj->NotifyHandler.Handler; - Handler (Device, NotifyValue, HandlerObj->NotifyHandler.Context); + /* All done with the info object */ + AcpiUtDeleteGenericState (NotifyInfo); } -/*************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvGlobalLockThread * @@ -266,7 +343,7 @@ AcpiEvNotifyDispatch ( * Global Lock. Simply signal all threads that are waiting * for the lock. * - **************************************************************************/ + ******************************************************************************/ static void AcpiEvGlobalLockThread ( @@ -285,7 +362,7 @@ AcpiEvGlobalLockThread ( } -/*************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvGlobalLockHandler * @@ -295,7 +372,7 @@ AcpiEvGlobalLockThread ( * release interrupt occurs. Grab the global lock and queue * the global lock thread for execution * - **************************************************************************/ + ******************************************************************************/ static UINT32 AcpiEvGlobalLockHandler ( @@ -329,7 +406,7 @@ AcpiEvGlobalLockHandler ( } -/*************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvInitGlobalLockHandler * @@ -337,7 +414,7 @@ AcpiEvGlobalLockHandler ( * * DESCRIPTION: Install a handler for the global lock release event * - **************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiEvInitGlobalLockHandler (void) @@ -348,14 +425,28 @@ AcpiEvInitGlobalLockHandler (void) FUNCTION_TRACE ("EvInitGlobalLockHandler"); + 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_STS will fail (the GBL_EN 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) + { + AcpiGbl_GlobalLockPresent = FALSE; + Status = AE_OK; + } + return_ACPI_STATUS (Status); } -/*************************************************************************** +/****************************************************************************** * * FUNCTION: AcpiEvAcquireGlobalLock * @@ -363,7 +454,7 @@ AcpiEvInitGlobalLockHandler (void) * * DESCRIPTION: Attempt to gain ownership of the Global Lock. * - **************************************************************************/ + *****************************************************************************/ ACPI_STATUS AcpiEvAcquireGlobalLock(void) @@ -375,6 +466,12 @@ AcpiEvAcquireGlobalLock(void) FUNCTION_TRACE ("EvAcquireGlobalLock"); + /* Make sure that we actually have a global lock */ + + if (!AcpiGbl_GlobalLockPresent) + { + return_ACPI_STATUS (AE_NO_GLOBAL_LOCK); + } /* One more thread wants the global lock */ @@ -404,10 +501,9 @@ AcpiEvAcquireGlobalLock(void) { /* We got the lock */ - DEBUG_PRINT (ACPI_INFO, ("Acquired the HW Global Lock\n")); + DEBUG_PRINTP (ACPI_INFO, ("Acquired the Global Lock\n")); AcpiGbl_GlobalLockAcquired = TRUE; - return_ACPI_STATUS (AE_OK); } @@ -417,27 +513,26 @@ AcpiEvAcquireGlobalLock(void) * wait until we get the global lock released interrupt. */ - DEBUG_PRINT (ACPI_INFO, ("Waiting for the HW Global Lock\n")); + DEBUG_PRINTP (ACPI_INFO, ("Waiting for the HW Global Lock\n")); /* * Acquire the global lock semaphore first. * Since this wait will block, we must release the interpreter */ - Status = AcpiAmlSystemWaitSemaphore (AcpiGbl_GlobalLockSemaphore, + Status = AcpiExSystemWaitSemaphore (AcpiGbl_GlobalLockSemaphore, ACPI_UINT32_MAX); - return_ACPI_STATUS (Status); } -/*************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvReleaseGlobalLock * * DESCRIPTION: Releases ownership of the Global Lock. * - **************************************************************************/ + ******************************************************************************/ void AcpiEvReleaseGlobalLock (void) @@ -450,7 +545,7 @@ AcpiEvReleaseGlobalLock (void) if (!AcpiGbl_GlobalLockThreadCount) { - REPORT_WARNING(("Releasing a non-acquired Global Lock\n")); + REPORT_WARNING(("Global Lock has not be acquired, cannot release\n")); return_VOID; } diff --git a/sys/contrib/dev/acpica/evregion.c b/sys/contrib/dev/acpica/evregion.c index e9ebad9..2e2888d 100644 --- a/sys/contrib/dev/acpica/evregion.c +++ b/sys/contrib/dev/acpica/evregion.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evregion - ACPI AddressSpace (OpRegion) handler dispatch - * $Revision: 96 $ + * $Revision: 103 $ * *****************************************************************************/ @@ -123,11 +123,11 @@ #include "acinterp.h" #include "amlcode.h" -#define _COMPONENT EVENT_HANDLING +#define _COMPONENT ACPI_EVENTS MODULE_NAME ("evregion") -/************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvInstallDefaultAddressSpaceHandlers * @@ -137,7 +137,7 @@ * * DESCRIPTION: Installs the core subsystem address space handlers. * - *************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiEvInstallDefaultAddressSpaceHandlers ( @@ -165,7 +165,7 @@ AcpiEvInstallDefaultAddressSpaceHandlers ( */ Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode, - ADDRESS_SPACE_SYSTEM_MEMORY, + ACPI_ADR_SPACE_SYSTEM_MEMORY, ACPI_DEFAULT_HANDLER, NULL, NULL); if ((ACPI_FAILURE (Status)) && (Status != AE_EXIST)) @@ -174,7 +174,7 @@ AcpiEvInstallDefaultAddressSpaceHandlers ( } Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode, - ADDRESS_SPACE_SYSTEM_IO, + ACPI_ADR_SPACE_SYSTEM_IO, ACPI_DEFAULT_HANDLER, NULL, NULL); if ((ACPI_FAILURE (Status)) && (Status != AE_EXIST)) @@ -183,7 +183,7 @@ AcpiEvInstallDefaultAddressSpaceHandlers ( } Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode, - ADDRESS_SPACE_PCI_CONFIG, + ACPI_ADR_SPACE_PCI_CONFIG, ACPI_DEFAULT_HANDLER, NULL, NULL); if ((ACPI_FAILURE (Status)) && (Status != AE_EXIST)) @@ -198,7 +198,7 @@ AcpiEvInstallDefaultAddressSpaceHandlers ( /* TBD: [Restructure] Move elsewhere */ -/************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvExecuteRegMethod * @@ -209,7 +209,7 @@ AcpiEvInstallDefaultAddressSpaceHandlers ( * * DESCRIPTION: Execute _REG method for a region * - *************************************************************************/ + ******************************************************************************/ static ACPI_STATUS AcpiEvExecuteRegMethod ( @@ -240,8 +240,8 @@ AcpiEvExecuteRegMethod ( * Passed as a parameter */ - AcpiCmInitStaticObject (&SpaceIdDesc); - AcpiCmInitStaticObject (&FunctionDesc); + AcpiUtInitStaticObject (&SpaceIdDesc); + AcpiUtInitStaticObject (&FunctionDesc); /* * Method requires two parameters. @@ -262,13 +262,13 @@ AcpiEvExecuteRegMethod ( /* * Execute the method, no return value */ - DEBUG_EXEC(AcpiCmDisplayInitPathname (RegionObj->Region.Extra->Extra.Method_REG, " [Method]")); + DEBUG_EXEC(AcpiUtDisplayInitPathname (RegionObj->Region.Extra->Extra.Method_REG, " [Method]")); Status = AcpiNsEvaluateByHandle (RegionObj->Region.Extra->Extra.Method_REG, Params, NULL); return_ACPI_STATUS (Status); } -/************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvAddressSpaceDispatch * @@ -284,7 +284,7 @@ AcpiEvExecuteRegMethod ( * DESCRIPTION: Dispatch an address space or operation region access to * a previously installed handler. * - *************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiEvAddressSpaceDispatch ( @@ -295,8 +295,8 @@ AcpiEvAddressSpaceDispatch ( UINT32 *Value) { ACPI_STATUS Status; - ADDRESS_SPACE_HANDLER Handler; - ADDRESS_SPACE_SETUP RegionSetup; + ACPI_ADR_SPACE_HANDLER Handler; + ACPI_ADR_SPACE_SETUP RegionSetup; ACPI_OPERAND_OBJECT *HandlerDesc; void *RegionContext = NULL; @@ -305,25 +305,25 @@ AcpiEvAddressSpaceDispatch ( /* - * Check for an installed handler + * Ensure that there is a handler associated with this region */ HandlerDesc = RegionObj->Region.AddrHandler; - if (!HandlerDesc) { - DEBUG_PRINT (TRACE_OPREGION, - ("Dispatch address access region %p, no handler\n", RegionObj)); + DEBUG_PRINTP (ACPI_ERROR, ("no handler for region(%p) [%s]\n", + 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 + * 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_INITIALIZED)) { /* - * This region has not been initialized yet, do it + * This region has not been initialized yet, do it */ RegionSetup = HandlerDesc->AddrHandler.Setup; if (!RegionSetup) @@ -331,9 +331,8 @@ AcpiEvAddressSpaceDispatch ( /* * Bad news, no init routine and not init'd */ - DEBUG_PRINT (ACPI_ERROR, - ("EvAddressSpaceDispatch: No init routine for region %p\n", - RegionObj)); + DEBUG_PRINTP (ACPI_ERROR, ("No init routine for region(%p) [%s]\n", + RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId))); return_ACPI_STATUS (AE_UNKNOWN_STATUS); } @@ -341,24 +340,23 @@ AcpiEvAddressSpaceDispatch ( * We must exit the interpreter because the region setup will potentially * execute control methods */ - AcpiAmlExitInterpreter (); + AcpiExExitInterpreter (); Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE, - HandlerDesc->AddrHandler.Context, - &RegionContext); + HandlerDesc->AddrHandler.Context, &RegionContext); /* Re-enter the interpreter */ - AcpiAmlEnterInterpreter (); + AcpiExEnterInterpreter (); /* * Init routine may fail */ if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("EvAddressSpaceDispatch: %s from region init, SpaceID %X\n", - AcpiCmFormatException (Status), RegionObj->Region.SpaceId)); + DEBUG_PRINTP (ACPI_ERROR, ("Region Init: %s [%s]\n", + AcpiUtFormatException (Status), + AcpiUtGetRegionName (RegionObj->Region.SpaceId))); return_ACPI_STATUS(Status); } @@ -376,7 +374,7 @@ AcpiEvAddressSpaceDispatch ( */ Handler = HandlerDesc->AddrHandler.Handler; - DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), + DEBUG_PRINTP ((TRACE_OPREGION | VERBOSE_INFO), ("Addrhandler %p (%p), Address %p\n", &RegionObj->Region.AddrHandler->AddrHandler, Handler, Address)); @@ -387,7 +385,7 @@ AcpiEvAddressSpaceDispatch ( * 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. */ - AcpiAmlExitInterpreter(); + AcpiExExitInterpreter(); } /* @@ -399,9 +397,9 @@ AcpiEvAddressSpaceDispatch ( if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("EvAddressSpaceDispatch: %s from handler, SpaceID %X\n", - AcpiCmFormatException (Status), RegionObj->Region.SpaceId)); + DEBUG_PRINTP (ACPI_ERROR, ("Region handler: %s [%s]\n", + AcpiUtFormatException (Status), + AcpiUtGetRegionName (RegionObj->Region.SpaceId))); } if (!(HandlerDesc->AddrHandler.Flags & ADDR_HANDLER_DEFAULT_INSTALLED)) @@ -409,13 +407,13 @@ AcpiEvAddressSpaceDispatch ( /* We just returned from a non-default handler, we must re-enter the interpreter */ - AcpiAmlEnterInterpreter (); + AcpiExEnterInterpreter (); } return_ACPI_STATUS (Status); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvDisassociateRegionFromHandler * @@ -437,7 +435,7 @@ AcpiEvDisassociateRegionFromHandler( ACPI_OPERAND_OBJECT *HandlerObj; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT **LastObjPtr; - ADDRESS_SPACE_SETUP RegionSetup; + ACPI_ADR_SPACE_SETUP RegionSetup; void *RegionContext; ACPI_STATUS Status; @@ -474,7 +472,7 @@ AcpiEvDisassociateRegionFromHandler( */ if (ObjDesc == RegionObj) { - DEBUG_PRINT (TRACE_OPREGION, + DEBUG_PRINTP (TRACE_OPREGION, ("Removing Region %p from address handler %p\n", RegionObj, HandlerObj)); /* @@ -485,7 +483,7 @@ AcpiEvDisassociateRegionFromHandler( if (AcpiNsIsLocked) { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } /* @@ -495,7 +493,7 @@ AcpiEvDisassociateRegionFromHandler( if (AcpiNsIsLocked) { - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); } /* @@ -503,17 +501,16 @@ AcpiEvDisassociateRegionFromHandler( */ RegionSetup = HandlerObj->AddrHandler.Setup; Status = RegionSetup (RegionObj, ACPI_REGION_DEACTIVATE, - HandlerObj->AddrHandler.Context, - &RegionContext); + HandlerObj->AddrHandler.Context, &RegionContext); /* * Init routine may fail, Just ignore errors */ if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("EvDisassociateRegionFromHandler: %s from region init, SpaceID %X\n", - AcpiCmFormatException (Status), RegionObj->Region.SpaceId)); + DEBUG_PRINTP (ACPI_ERROR, ("%s from region init, [%s]\n", + AcpiUtFormatException (Status), + AcpiUtGetRegionName (RegionObj->Region.SpaceId))); } RegionObj->Region.Flags &= ~(AOPOBJ_INITIALIZED); @@ -546,7 +543,7 @@ AcpiEvDisassociateRegionFromHandler( /* * If we get here, the region was not in the handler's region list */ - DEBUG_PRINT (TRACE_OPREGION, + DEBUG_PRINTP (TRACE_OPREGION, ("Cannot remove region %p from address handler %p\n", RegionObj, HandlerObj)); @@ -554,7 +551,7 @@ AcpiEvDisassociateRegionFromHandler( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvAssociateRegionAndHandler * @@ -581,8 +578,9 @@ AcpiEvAssociateRegionAndHandler ( FUNCTION_TRACE ("EvAssociateRegionAndHandler"); - DEBUG_PRINT (TRACE_OPREGION, ("Adding Region %p to address handler %p\n", - RegionObj, HandlerObj)); + DEBUG_PRINTP (TRACE_OPREGION, + ("Adding Region %p to address handler %p [%s]\n", + RegionObj, HandlerObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId))); ACPI_ASSERT (RegionObj->Region.SpaceId == HandlerObj->AddrHandler.SpaceId); ACPI_ASSERT (RegionObj->Region.AddrHandler == 0); @@ -610,21 +608,21 @@ AcpiEvAssociateRegionAndHandler ( */ if (AcpiNsIsLocked) { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } Status = AcpiEvExecuteRegMethod (RegionObj, 1); if (AcpiNsIsLocked) { - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); } return_ACPI_STATUS (Status); } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvAddrHandlerHelper * @@ -641,7 +639,7 @@ AcpiEvAssociateRegionAndHandler ( * This is because the existing handler is closer in proximity * to any more regions than the one we are trying to install. * - ***************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiEvAddrHandlerHelper ( @@ -657,6 +655,9 @@ AcpiEvAddrHandlerHelper ( ACPI_STATUS Status; + PROC_NAME ("EvAddrHandlerHelper"); + + HandlerObj = (ACPI_OPERAND_OBJECT *) Context; /* Parameter validation */ @@ -688,7 +689,7 @@ AcpiEvAddrHandlerHelper ( /* Check for an existing internal object */ - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Node); + ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { /* @@ -716,10 +717,10 @@ AcpiEvAddrHandlerHelper ( /* * It's for the same address space */ - - DEBUG_PRINT (TRACE_OPREGION, - ("Found handler for region %s in device %p(%p) handler %p\n", - AcpiCmGetRegionName (HandlerObj->AddrHandler.SpaceId), ObjDesc, TmpObj, HandlerObj)); + DEBUG_PRINTP (TRACE_OPREGION, + ("Found handler for region [%s] in device %p(%p) handler %p\n", + AcpiUtGetRegionName (HandlerObj->AddrHandler.SpaceId), + ObjDesc, TmpObj, HandlerObj)); /* * Since the object we found it on was a device, then it diff --git a/sys/contrib/dev/acpica/evrgnini.c b/sys/contrib/dev/acpica/evrgnini.c index f2ed119..105ee04 100644 --- a/sys/contrib/dev/acpica/evrgnini.c +++ b/sys/contrib/dev/acpica/evrgnini.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evrgnini- ACPI AddressSpace (OpRegion) init - * $Revision: 33 $ + * $Revision: 40 $ * *****************************************************************************/ @@ -123,11 +123,11 @@ #include "acinterp.h" #include "amlcode.h" -#define _COMPONENT EVENT_HANDLING +#define _COMPONENT ACPI_EVENTS MODULE_NAME ("evrgnini") -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvSystemMemoryRegionSetup * @@ -140,7 +140,7 @@ * * DESCRIPTION: Do any prep work for region handling, a nop for now * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiEvSystemMemoryRegionSetup ( @@ -156,7 +156,7 @@ AcpiEvSystemMemoryRegionSetup ( { if (*RegionContext) { - AcpiCmFree (*RegionContext); + AcpiUtFree (*RegionContext); *RegionContext = NULL; } return_ACPI_STATUS (AE_OK); @@ -165,7 +165,7 @@ AcpiEvSystemMemoryRegionSetup ( /* Activate. Create a new context */ - *RegionContext = AcpiCmCallocate (sizeof (MEM_HANDLER_CONTEXT)); + *RegionContext = AcpiUtCallocate (sizeof (ACPI_MEM_SPACE_CONTEXT)); if (!(*RegionContext)) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -175,7 +175,7 @@ AcpiEvSystemMemoryRegionSetup ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvIoSpaceRegionSetup * @@ -188,7 +188,7 @@ AcpiEvSystemMemoryRegionSetup ( * * DESCRIPTION: Do any prep work for region handling * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiEvIoSpaceRegionSetup ( @@ -199,6 +199,7 @@ AcpiEvIoSpaceRegionSetup ( { FUNCTION_TRACE ("EvIoSpaceRegionSetup"); + if (Function == ACPI_REGION_DEACTIVATE) { *RegionContext = NULL; @@ -212,7 +213,7 @@ AcpiEvIoSpaceRegionSetup ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvPciConfigRegionSetup * @@ -227,7 +228,7 @@ AcpiEvIoSpaceRegionSetup ( * * MUTEX: Assumes namespace is not locked * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiEvPciConfigRegionSetup ( @@ -238,32 +239,33 @@ AcpiEvPciConfigRegionSetup ( { ACPI_STATUS Status = AE_OK; ACPI_INTEGER Temp; - PCI_HANDLER_CONTEXT *PciContext = *RegionContext; + ACPI_PCI_SPACE_CONTEXT *PciContext = *RegionContext; ACPI_OPERAND_OBJECT *HandlerObj; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *RegionObj = (ACPI_OPERAND_OBJECT *) Handle; - DEVICE_ID ObjectHID; + ACPI_DEVICE_ID ObjectHID; + FUNCTION_TRACE ("EvPciConfigRegionSetup"); - HandlerObj = RegionObj->Region.AddrHandler; + HandlerObj = RegionObj->Region.AddrHandler; 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. */ - DEBUG_PRINT (TRACE_OPREGION, + DEBUG_PRINTP (TRACE_OPREGION, ("Attempting to init a region %X, with no handler\n", RegionObj)); - return_ACPI_STATUS(AE_NOT_EXIST); + return_ACPI_STATUS (AE_NOT_EXIST); } if (Function == ACPI_REGION_DEACTIVATE) { if (PciContext) { - AcpiCmFree (PciContext); + AcpiUtFree (PciContext); *RegionContext = NULL; } @@ -273,7 +275,7 @@ AcpiEvPciConfigRegionSetup ( /* Create a new context */ - PciContext = AcpiCmCallocate (sizeof(PCI_HANDLER_CONTEXT)); + PciContext = AcpiUtCallocate (sizeof (ACPI_PCI_SPACE_CONTEXT)); if (!PciContext) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -288,23 +290,21 @@ AcpiEvPciConfigRegionSetup ( * First get device and function numbers from the _ADR object * in the parent's scope. */ - ACPI_ASSERT(RegionObj->Region.Node); + ACPI_ASSERT (RegionObj->Region.Node); Node = AcpiNsGetParentObject (RegionObj->Region.Node); /* AcpiEvaluate the _ADR object */ - Status = AcpiCmEvaluateNumericObject (METHOD_NAME__ADR, Node, &Temp); + Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node, &Temp); + /* * The default is zero, since the allocation above zeroed the data, just * do nothing on failures. */ if (ACPI_SUCCESS (Status)) { - /* - * Got it.. - */ PciContext->DevFunc = (UINT32) Temp; } @@ -328,22 +328,20 @@ AcpiEvPciConfigRegionSetup ( */ while (Node != AcpiGbl_RootNode) { - Status = AcpiCmExecute_HID(Node, &ObjectHID); - + Status = AcpiUtExecute_HID (Node, &ObjectHID); if (ACPI_SUCCESS (Status)) { - if (!(STRNCMP(ObjectHID.Buffer, PCI_ROOT_HID_STRING, + if (!(STRNCMP (ObjectHID.Buffer, PCI_ROOT_HID_STRING, sizeof (PCI_ROOT_HID_STRING)))) { - AcpiInstallAddressSpaceHandler(Node, - ADDRESS_SPACE_PCI_CONFIG, + AcpiInstallAddressSpaceHandler (Node, + ACPI_ADR_SPACE_PCI_CONFIG, ACPI_DEFAULT_HANDLER, NULL, NULL); - break; } } - Node = AcpiNsGetParentObject(Node); + Node = AcpiNsGetParentObject (Node); } } else @@ -351,21 +349,15 @@ AcpiEvPciConfigRegionSetup ( Node = HandlerObj->AddrHandler.Node; } - Status = AcpiCmEvaluateNumericObject (METHOD_NAME__SEG, Node, &Temp); + Status = AcpiUtEvaluateNumericObject (METHOD_NAME__SEG, Node, &Temp); if (ACPI_SUCCESS (Status)) { - /* - * Got it.. - */ PciContext->Seg = (UINT32) Temp; } - Status = AcpiCmEvaluateNumericObject (METHOD_NAME__BBN, Node, &Temp); + Status = AcpiUtEvaluateNumericObject (METHOD_NAME__BBN, Node, &Temp); if (ACPI_SUCCESS (Status)) { - /* - * Got it.. - */ PciContext->Bus = (UINT32) Temp; } @@ -375,7 +367,7 @@ AcpiEvPciConfigRegionSetup ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvDefaultRegionSetup * @@ -388,7 +380,7 @@ AcpiEvPciConfigRegionSetup ( * * DESCRIPTION: Do any prep work for region handling * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiEvDefaultRegionSetup ( @@ -399,6 +391,7 @@ AcpiEvDefaultRegionSetup ( { FUNCTION_TRACE ("EvDefaultRegionSetup"); + if (Function == ACPI_REGION_DEACTIVATE) { *RegionContext = NULL; @@ -412,7 +405,7 @@ AcpiEvDefaultRegionSetup ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEvInitializeRegion * @@ -428,7 +421,7 @@ AcpiEvDefaultRegionSetup ( * * This also performs address space specific intialization. For * example, PCI regions must have an _ADR object that contains - * a PCI address in the scope of the defintion. This address is + * a PCI address in the scope of the definition. This address is * required to perform an access to PCI config space. * ******************************************************************************/ @@ -438,13 +431,13 @@ AcpiEvInitializeRegion ( ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsLocked) { - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_ADDRESS_SPACE_TYPE SpaceId; - ACPI_NAMESPACE_NODE *Node; + 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_NAMESPACE_NODE *MethodNode; + ACPI_NAME *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG; FUNCTION_TRACE_U32 ("EvInitializeRegion", AcpiNsLocked); @@ -455,7 +448,7 @@ AcpiEvInitializeRegion ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - ACPI_ASSERT(RegionObj->Region.Node); + ACPI_ASSERT (RegionObj->Region.Node); Node = AcpiNsGetParentObject (RegionObj->Region.Node); SpaceId = RegionObj->Region.SpaceId; @@ -489,7 +482,7 @@ AcpiEvInitializeRegion ( * Check to see if a handler exists */ HandlerObj = NULL; - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Node); + ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { /* @@ -521,14 +514,15 @@ AcpiEvInitializeRegion ( */ if (HandlerObj->AddrHandler.SpaceId == SpaceId) { - DEBUG_PRINT (TRACE_OPREGION, + DEBUG_PRINTP (TRACE_OPREGION, ("Found handler %p for region %p in obj %p\n", HandlerObj, RegionObj, ObjDesc)); /* * Found it! Now update the region and the handler */ - AcpiEvAssociateRegionAndHandler (HandlerObj, RegionObj, AcpiNsLocked); + AcpiEvAssociateRegionAndHandler (HandlerObj, RegionObj, + AcpiNsLocked); return_ACPI_STATUS (AE_OK); } @@ -548,9 +542,9 @@ AcpiEvInitializeRegion ( /* * If we get here, there is no handler for this region */ - DEBUG_PRINT (TRACE_OPREGION, + DEBUG_PRINTP (TRACE_OPREGION, ("No handler for RegionType %s(%X) (RegionObj %p)\n", - AcpiCmGetRegionName (SpaceId), SpaceId, RegionObj)); + AcpiUtGetRegionName (SpaceId), SpaceId, RegionObj)); return_ACPI_STATUS (AE_NOT_EXIST); } diff --git a/sys/contrib/dev/acpica/evsci.c b/sys/contrib/dev/acpica/evsci.c index 130156c..cc27238 100644 --- a/sys/contrib/dev/acpica/evsci.c +++ b/sys/contrib/dev/acpica/evsci.c @@ -2,7 +2,7 @@ * * Module Name: evsci - System Control Interrupt configuration and * legacy to ACPI mode state transition functions - * $Revision: 69 $ + * $Revision: 72 $ * ******************************************************************************/ @@ -122,7 +122,7 @@ #include "acevents.h" -#define _COMPONENT EVENT_HANDLING +#define _COMPONENT ACPI_EVENTS MODULE_NAME ("evsci") @@ -278,50 +278,6 @@ AcpiEvRemoveSciHandler (void) /******************************************************************************* * - * FUNCTION: AcpiEvSciCount - * - * PARAMETERS: Event Event that generated an SCI. - * - * RETURN: Number of SCI's for requested event since last time - * SciOccured() was called for this event. - * - * DESCRIPTION: Checks to see if SCI has been generated from requested source - * since the last time this function was called. - * - ******************************************************************************/ - -#ifdef ACPI_DEBUG - -UINT32 -AcpiEvSciCount ( - UINT32 Event) -{ - UINT32 Count; - - FUNCTION_TRACE ("EvSciCount"); - - /* - * Elements correspond to counts for TMR, NOT_USED, GBL, - * PWR_BTN, SLP_BTN, RTC, and GENERAL respectively. - */ - - if (Event >= NUM_FIXED_EVENTS) - { - Count = (UINT32) -1; - } - else - { - Count = AcpiGbl_EventCount[Event]; - } - - return_VALUE (Count); -} - -#endif - - -/******************************************************************************* - * * FUNCTION: AcpiEvRestoreAcpiState * * PARAMETERS: none @@ -422,12 +378,12 @@ AcpiEvTerminate (void) if (AcpiGbl_GpeRegisters) { - AcpiCmFree (AcpiGbl_GpeRegisters); + AcpiUtFree (AcpiGbl_GpeRegisters); } if (AcpiGbl_GpeInfo) { - AcpiCmFree (AcpiGbl_GpeInfo); + AcpiUtFree (AcpiGbl_GpeInfo); } return_VOID; diff --git a/sys/contrib/dev/acpica/evxface.c b/sys/contrib/dev/acpica/evxface.c index 89f9b8a..95973d4 100644 --- a/sys/contrib/dev/acpica/evxface.c +++ b/sys/contrib/dev/acpica/evxface.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evxface - External interfaces for ACPI events - * $Revision: 101 $ + * $Revision: 110 $ * *****************************************************************************/ @@ -124,11 +124,11 @@ #include "amlcode.h" #include "acinterp.h" -#define _COMPONENT EVENT_HANDLING +#define _COMPONENT ACPI_EVENTS MODULE_NAME ("evxface") -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiInstallFixedEventHandler * @@ -147,23 +147,31 @@ ACPI_STATUS AcpiInstallFixedEventHandler ( UINT32 Event, - FIXED_EVENT_HANDLER Handler, + ACPI_EVENT_HANDLER Handler, void *Context) { - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; FUNCTION_TRACE ("AcpiInstallFixedEventHandler"); - /* Sanity check the parameters. */ + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + /* Parameter validation */ - if (Event >= NUM_FIXED_EVENTS) + if (Event > ACPI_EVENT_MAX) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiCmAcquireMutex (ACPI_MTX_EVENTS); + AcpiUtAcquireMutex (ACPI_MTX_EVENTS); /* Don't allow two handlers. */ @@ -179,32 +187,31 @@ AcpiInstallFixedEventHandler ( AcpiGbl_FixedEventHandlers[Event].Handler = Handler; AcpiGbl_FixedEventHandlers[Event].Context = Context; - Status = AcpiEnableEvent(Event, ACPI_EVENT_FIXED); - - if (!ACPI_SUCCESS(Status)) + Status = AcpiEnableEvent (Event, ACPI_EVENT_FIXED); + if (!ACPI_SUCCESS (Status)) { - DEBUG_PRINT (ACPI_WARN, ("Could not enable fixed event.\n")); + DEBUG_PRINTP (ACPI_WARN, ("Could not enable fixed event.\n")); /* Remove the handler */ AcpiGbl_FixedEventHandlers[Event].Handler = NULL; AcpiGbl_FixedEventHandlers[Event].Context = NULL; - - Status = AE_ERROR; - goto Cleanup; } - DEBUG_PRINT (ACPI_INFO, - ("Enabled fixed event %X, Handler=%p\n", Event, Handler)); + else + { + DEBUG_PRINTP (ACPI_INFO, + ("Enabled fixed event %X, Handler=%p\n", Event, Handler)); + } Cleanup: - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); + AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiRemoveFixedEventHandler * @@ -220,7 +227,7 @@ Cleanup: ACPI_STATUS AcpiRemoveFixedEventHandler ( UINT32 Event, - FIXED_EVENT_HANDLER Handler) + ACPI_EVENT_HANDLER Handler) { ACPI_STATUS Status = AE_OK; @@ -228,42 +235,50 @@ AcpiRemoveFixedEventHandler ( FUNCTION_TRACE ("AcpiRemoveFixedEventHandler"); - /* Sanity check the parameters. */ + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + /* Parameter validation */ - if (Event >= NUM_FIXED_EVENTS) + if (Event > ACPI_EVENT_MAX) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiCmAcquireMutex (ACPI_MTX_EVENTS); + AcpiUtAcquireMutex (ACPI_MTX_EVENTS); /* Disable the event before removing the handler - just in case... */ Status = AcpiDisableEvent(Event, ACPI_EVENT_FIXED); + /* Always Remove the handler */ + + AcpiGbl_FixedEventHandlers[Event].Handler = NULL; + AcpiGbl_FixedEventHandlers[Event].Context = NULL; + + if (!ACPI_SUCCESS(Status)) { - DEBUG_PRINT (ACPI_WARN, + DEBUG_PRINTP (ACPI_WARN, ("Could not write to fixed event enable register.\n")); - - Status = AE_ERROR; - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); } - /* Remove the handler */ - - AcpiGbl_FixedEventHandlers[Event].Handler = NULL; - AcpiGbl_FixedEventHandlers[Event].Context = NULL; - - DEBUG_PRINT (ACPI_INFO, ("Disabled fixed event %X.\n", Event)); + else + { + DEBUG_PRINTP (ACPI_INFO, ("Disabled fixed event %X.\n", Event)); + } - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); + AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiInstallNotifyHandler * @@ -284,7 +299,7 @@ ACPI_STATUS AcpiInstallNotifyHandler ( ACPI_HANDLE Device, UINT32 HandlerType, - NOTIFY_HANDLER Handler, + ACPI_NOTIFY_HANDLER Handler, void *Context) { ACPI_OPERAND_OBJECT *ObjDesc; @@ -296,6 +311,14 @@ AcpiInstallNotifyHandler ( FUNCTION_TRACE ("AcpiInstallNotifyHandler"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Parameter validation */ if ((!Handler) || @@ -304,7 +327,7 @@ AcpiInstallNotifyHandler ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); /* Convert and validate the device handle */ @@ -372,7 +395,7 @@ AcpiInstallNotifyHandler ( /* Check for an existing internal object */ - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) DeviceNode); + ObjDesc = AcpiNsGetAttachedObject (DeviceNode); if (ObjDesc) { @@ -392,7 +415,7 @@ AcpiInstallNotifyHandler ( { /* Create a new object */ - ObjDesc = AcpiCmCreateInternalObject (DeviceNode->Type); + ObjDesc = AcpiUtCreateInternalObject (DeviceNode->Type); if (!ObjDesc) { Status = AE_NO_MEMORY; @@ -402,7 +425,6 @@ AcpiInstallNotifyHandler ( /* Attach new object to the Node */ Status = AcpiNsAttachObject (Device, ObjDesc, (UINT8) DeviceNode->Type); - if (ACPI_FAILURE (Status)) { goto UnlockAndExit; @@ -411,7 +433,7 @@ AcpiInstallNotifyHandler ( /* Install the handler */ - NotifyObj = AcpiCmCreateInternalObject (INTERNAL_TYPE_NOTIFY); + NotifyObj = AcpiUtCreateInternalObject (INTERNAL_TYPE_NOTIFY); if (!NotifyObj) { Status = AE_NO_MEMORY; @@ -427,6 +449,7 @@ AcpiInstallNotifyHandler ( { ObjDesc->Device.SysHandler = NotifyObj; } + else /* ACPI_DEVICE_NOTIFY */ { ObjDesc->Device.DrvHandler = NotifyObj; @@ -434,12 +457,12 @@ AcpiInstallNotifyHandler ( } UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiRemoveNotifyHandler * @@ -458,15 +481,25 @@ ACPI_STATUS AcpiRemoveNotifyHandler ( ACPI_HANDLE Device, UINT32 HandlerType, - NOTIFY_HANDLER Handler) + ACPI_NOTIFY_HANDLER Handler) { ACPI_OPERAND_OBJECT *NotifyObj; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *DeviceNode; ACPI_STATUS Status = AE_OK; + FUNCTION_TRACE ("AcpiRemoveNotifyHandler"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Parameter validation */ if ((!Handler) || @@ -475,7 +508,7 @@ AcpiRemoveNotifyHandler ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); /* Convert and validate the device handle */ @@ -492,7 +525,7 @@ AcpiRemoveNotifyHandler ( */ if (Device == ACPI_ROOT_OBJECT) { - DEBUG_PRINT(ACPI_INFO, ("Removing notify handler for ROOT object.\n")); + DEBUG_PRINTP (ACPI_INFO, ("Removing notify handler for ROOT object.\n")); if (((HandlerType == ACPI_SYSTEM_NOTIFY) && !AcpiGbl_SysNotify.Handler) || @@ -534,7 +567,7 @@ AcpiRemoveNotifyHandler ( /* Check for an existing internal object */ - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) DeviceNode); + ObjDesc = AcpiNsGetAttachedObject (DeviceNode); if (!ObjDesc) { Status = AE_NOT_EXIST; @@ -570,17 +603,17 @@ AcpiRemoveNotifyHandler ( ObjDesc->Device.DrvHandler = NULL; } - AcpiCmRemoveReference (NotifyObj); + AcpiUtRemoveReference (NotifyObj); } UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiInstallGpeHandler * @@ -601,16 +634,26 @@ ACPI_STATUS AcpiInstallGpeHandler ( UINT32 GpeNumber, UINT32 Type, - GPE_HANDLER Handler, + ACPI_GPE_HANDLER Handler, void *Context) { ACPI_STATUS Status = AE_OK; + FUNCTION_TRACE ("AcpiInstallGpeHandler"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Parameter validation */ - if (!Handler || (GpeNumber > NUM_GPE)) + if (!Handler || (GpeNumber > ACPI_GPE_MAX)) { return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -622,7 +665,7 @@ AcpiInstallGpeHandler ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiCmAcquireMutex (ACPI_MTX_EVENTS); + AcpiUtAcquireMutex (ACPI_MTX_EVENTS); /* Make sure that there isn't a handler there already */ @@ -644,12 +687,12 @@ AcpiInstallGpeHandler ( AcpiHwEnableGpe (GpeNumber); Cleanup: - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); + AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiRemoveGpeHandler * @@ -665,7 +708,7 @@ Cleanup: ACPI_STATUS AcpiRemoveGpeHandler ( UINT32 GpeNumber, - GPE_HANDLER Handler) + ACPI_GPE_HANDLER Handler) { ACPI_STATUS Status = AE_OK; @@ -673,9 +716,17 @@ AcpiRemoveGpeHandler ( FUNCTION_TRACE ("AcpiRemoveGpeHandler"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Parameter validation */ - if (!Handler || (GpeNumber > NUM_GPE)) + if (!Handler || (GpeNumber > ACPI_GPE_MAX)) { return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -691,7 +742,7 @@ AcpiRemoveGpeHandler ( AcpiHwDisableGpe (GpeNumber); - AcpiCmAcquireMutex (ACPI_MTX_EVENTS); + AcpiUtAcquireMutex (ACPI_MTX_EVENTS); /* Make sure that the installed handler is the same */ @@ -708,12 +759,12 @@ AcpiRemoveGpeHandler ( AcpiGbl_GpeInfo[GpeNumber].Context = NULL; Cleanup: - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); + AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiAcquireGlobalLock * @@ -732,7 +783,19 @@ AcpiAcquireGlobalLock ( ACPI_STATUS Status; - AcpiAmlEnterInterpreter (); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + Status = AcpiExEnterInterpreter (); + if (ACPI_FAILURE (Status)) + { + return (Status); + } /* * TBD: [Restructure] add timeout param to internal interface, and @@ -740,13 +803,13 @@ AcpiAcquireGlobalLock ( */ Status = AcpiEvAcquireGlobalLock (); - AcpiAmlExitInterpreter (); + AcpiExExitInterpreter (); return (Status); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiReleaseGlobalLock * @@ -762,6 +825,17 @@ ACPI_STATUS AcpiReleaseGlobalLock ( void) { + ACPI_STATUS Status; + + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + AcpiEvReleaseGlobalLock (); return (AE_OK); } diff --git a/sys/contrib/dev/acpica/evxfevnt.c b/sys/contrib/dev/acpica/evxfevnt.c index 463985d..5d121a8 100644 --- a/sys/contrib/dev/acpica/evxfevnt.c +++ b/sys/contrib/dev/acpica/evxfevnt.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evxfevnt - External Interfaces, ACPI event disable/enable - * $Revision: 28 $ + * $Revision: 33 $ * *****************************************************************************/ @@ -124,11 +124,11 @@ #include "amlcode.h" #include "acinterp.h" -#define _COMPONENT EVENT_HANDLING +#define _COMPONENT ACPI_EVENTS MODULE_NAME ("evxfevnt") -/************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEnable * @@ -138,7 +138,7 @@ * * DESCRIPTION: Transfers the system into ACPI mode. * - *************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiEnable (void) @@ -153,7 +153,7 @@ AcpiEnable (void) if (!AcpiGbl_DSDT) { - DEBUG_PRINT (ACPI_WARN, ("No ACPI tables present!\n")); + DEBUG_PRINTP (ACPI_WARN, ("No ACPI tables present!\n")); return_ACPI_STATUS (AE_NO_ACPI_TABLES); } @@ -161,8 +161,7 @@ AcpiEnable (void) if (SYS_MODE_LEGACY == AcpiHwGetModeCapabilities()) { - DEBUG_PRINT (ACPI_WARN, - ("AcpiEnable: Only legacy mode supported!\n")); + DEBUG_PRINTP (ACPI_WARN, ("Only legacy mode supported!\n")); return_ACPI_STATUS (AE_ERROR); } @@ -171,17 +170,17 @@ AcpiEnable (void) Status = AcpiHwSetMode (SYS_MODE_ACPI); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_FATAL, ("Could not transition to ACPI mode.\n")); + DEBUG_PRINTP (ACPI_FATAL, ("Could not transition to ACPI mode.\n")); return_ACPI_STATUS (Status); } - DEBUG_PRINT (ACPI_OK, ("Transition to ACPI mode successful\n")); + DEBUG_PRINTP (ACPI_OK, ("Transition to ACPI mode successful\n")); return_ACPI_STATUS (Status); } -/************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDisable * @@ -192,7 +191,7 @@ AcpiEnable (void) * DESCRIPTION: Returns the system to original ACPI/legacy mode, and * uninstalls the SCI interrupt handler. * - *************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiDisable (void) @@ -203,12 +202,20 @@ AcpiDisable (void) FUNCTION_TRACE ("AcpiDisable"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Restore original mode */ Status = AcpiHwSetMode (AcpiGbl_OriginalMode); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, ("Unable to transition to original mode")); + DEBUG_PRINTP (ACPI_ERROR, ("Unable to transition to original mode")); return_ACPI_STATUS (Status); } @@ -221,7 +228,7 @@ AcpiDisable (void) } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiEnableEvent * @@ -246,6 +253,14 @@ AcpiEnableEvent ( FUNCTION_TRACE ("AcpiEnableEvent"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* The Type must be either Fixed AcpiEvent or GPE */ switch (Type) @@ -291,8 +306,9 @@ AcpiEnableEvent ( if (1 != AcpiHwRegisterBitAccess(ACPI_READ, ACPI_MTX_LOCK, RegisterId)) { - DEBUG_PRINT(ACPI_ERROR, ("Fixed event bit clear when it should be set,\n")); - return_ACPI_STATUS (AE_ERROR); + DEBUG_PRINTP (ACPI_ERROR, + ("Fixed event bit clear when it should be set\n")); + return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); } break; @@ -302,7 +318,7 @@ AcpiEnableEvent ( /* Ensure that we have a valid GPE number */ - if ((Event >= NUM_GPE) || + if ((Event > ACPI_GPE_MAX) || (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) { return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -325,7 +341,7 @@ AcpiEnableEvent ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDisableEvent * @@ -350,6 +366,14 @@ AcpiDisableEvent ( FUNCTION_TRACE ("AcpiDisableEvent"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* The Type must be either Fixed AcpiEvent or GPE */ switch (Type) @@ -395,8 +419,9 @@ AcpiDisableEvent ( if (0 != AcpiHwRegisterBitAccess(ACPI_READ, ACPI_MTX_LOCK, RegisterId)) { - DEBUG_PRINT(ACPI_ERROR, ("Fixed event bit set when it should be clear,\n")); - return_ACPI_STATUS (AE_ERROR); + DEBUG_PRINTP (ACPI_ERROR, + ("Fixed event bit set when it should be clear,\n")); + return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); } break; @@ -406,7 +431,7 @@ AcpiDisableEvent ( /* Ensure that we have a valid GPE number */ - if ((Event >= NUM_GPE) || + if ((Event > ACPI_GPE_MAX) || (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) { return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -426,7 +451,7 @@ AcpiDisableEvent ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiClearEvent * @@ -451,6 +476,14 @@ AcpiClearEvent ( FUNCTION_TRACE ("AcpiClearEvent"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* The Type must be either Fixed AcpiEvent or GPE */ switch (Type) @@ -500,7 +533,7 @@ AcpiClearEvent ( /* Ensure that we have a valid GPE number */ - if ((Event >= NUM_GPE) || + if ((Event > ACPI_GPE_MAX) || (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) { return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -520,7 +553,7 @@ AcpiClearEvent ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiGetEventStatus * @@ -549,6 +582,14 @@ AcpiGetEventStatus ( FUNCTION_TRACE ("AcpiGetEventStatus"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + if (!EventStatus) { return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -601,7 +642,7 @@ AcpiGetEventStatus ( /* Ensure that we have a valid GPE number */ - if ((Event >= NUM_GPE) || + if ((Event > ACPI_GPE_MAX) || (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) { return_ACPI_STATUS (AE_BAD_PARAMETER); diff --git a/sys/contrib/dev/acpica/evxfregn.c b/sys/contrib/dev/acpica/evxfregn.c index 7c05f50..dceafd6 100644 --- a/sys/contrib/dev/acpica/evxfregn.c +++ b/sys/contrib/dev/acpica/evxfregn.c @@ -2,7 +2,7 @@ * * Module Name: evxfregn - External Interfaces, ACPI Operation Regions and * Address Spaces. - * $Revision: 27 $ + * $Revision: 34 $ * *****************************************************************************/ @@ -124,11 +124,11 @@ #include "amlcode.h" #include "acinterp.h" -#define _COMPONENT EVENT_HANDLING +#define _COMPONENT ACPI_EVENTS MODULE_NAME ("evxfregn") -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiInstallAddressSpaceHandler * @@ -147,21 +147,30 @@ ACPI_STATUS AcpiInstallAddressSpaceHandler ( ACPI_HANDLE Device, - ACPI_ADDRESS_SPACE_TYPE SpaceId, - ADDRESS_SPACE_HANDLER Handler, - ADDRESS_SPACE_SETUP Setup, + 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_NAMESPACE_NODE *Node; ACPI_STATUS Status = AE_OK; - OBJECT_TYPE_INTERNAL Type; + ACPI_OBJECT_TYPE8 Type; UINT16 Flags = 0; FUNCTION_TRACE ("AcpiInstallAddressSpaceHandler"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Parameter validation */ if ((!Device) || @@ -171,7 +180,7 @@ AcpiInstallAddressSpaceHandler ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); /* Convert and validate the device handle */ @@ -203,18 +212,18 @@ AcpiInstallAddressSpaceHandler ( switch (SpaceId) { - case ADDRESS_SPACE_SYSTEM_MEMORY: - Handler = AcpiAmlSystemMemorySpaceHandler; + case ACPI_ADR_SPACE_SYSTEM_MEMORY: + Handler = AcpiExSystemMemorySpaceHandler; Setup = AcpiEvSystemMemoryRegionSetup; break; - case ADDRESS_SPACE_SYSTEM_IO: - Handler = AcpiAmlSystemIoSpaceHandler; + case ACPI_ADR_SPACE_SYSTEM_IO: + Handler = AcpiExSystemIoSpaceHandler; Setup = AcpiEvIoSpaceRegionSetup; break; - case ADDRESS_SPACE_PCI_CONFIG: - Handler = AcpiAmlPciConfigSpaceHandler; + case ACPI_ADR_SPACE_PCI_CONFIG: + Handler = AcpiExPciConfigSpaceHandler; Setup = AcpiEvPciConfigRegionSetup; break; @@ -237,7 +246,7 @@ AcpiInstallAddressSpaceHandler ( * Check for an existing internal object */ - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Node); + ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { /* @@ -269,9 +278,8 @@ AcpiInstallAddressSpaceHandler ( else { - DEBUG_PRINT (TRACE_OPREGION, - ("Creating object on Device %p while installing handler\n", - Node)); + DEBUG_PRINTP (TRACE_OPREGION, + ("Creating object on Device %p while installing handler\n", Node)); /* ObjDesc does not exist, create one */ @@ -285,7 +293,7 @@ AcpiInstallAddressSpaceHandler ( Type = Node->Type; } - ObjDesc = AcpiCmCreateInternalObject (Type); + ObjDesc = AcpiUtCreateInternalObject (Type); if (!ObjDesc) { Status = AE_NO_MEMORY; @@ -301,14 +309,14 @@ AcpiInstallAddressSpaceHandler ( Status = AcpiNsAttachObject (Node, ObjDesc, (UINT8) Type); if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); goto UnlockAndExit; } } - DEBUG_PRINT (TRACE_OPREGION, + DEBUG_PRINTP (TRACE_OPREGION, ("Installing address handler for region %s(%X) on Device %p(%p)\n", - AcpiCmGetRegionName (SpaceId), SpaceId, Node, ObjDesc)); + AcpiUtGetRegionName (SpaceId), SpaceId, Node, ObjDesc)); /* * Now we can install the handler @@ -317,7 +325,7 @@ AcpiInstallAddressSpaceHandler ( * So, we just allocate the object for the handler and link it * into the list. */ - HandlerObj = AcpiCmCreateInternalObject (INTERNAL_TYPE_ADDRESS_HANDLER); + HandlerObj = AcpiUtCreateInternalObject (INTERNAL_TYPE_ADDRESS_HANDLER); if (!HandlerObj) { Status = AE_NO_MEMORY; @@ -361,12 +369,12 @@ AcpiInstallAddressSpaceHandler ( UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiRemoveAddressSpaceHandler * @@ -382,8 +390,8 @@ UnlockAndExit: ACPI_STATUS AcpiRemoveAddressSpaceHandler ( ACPI_HANDLE Device, - ACPI_ADDRESS_SPACE_TYPE SpaceId, - ADDRESS_SPACE_HANDLER Handler) + ACPI_ADR_SPACE_TYPE SpaceId, + ACPI_ADR_SPACE_HANDLER Handler) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; @@ -396,6 +404,14 @@ AcpiRemoveAddressSpaceHandler ( FUNCTION_TRACE ("AcpiRemoveAddressSpaceHandler"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Parameter validation */ if ((!Device) || @@ -405,7 +421,7 @@ AcpiRemoveAddressSpaceHandler ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); /* Convert and validate the device handle */ @@ -419,7 +435,7 @@ AcpiRemoveAddressSpaceHandler ( /* Make sure the internal object exists */ - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Node); + ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { /* @@ -446,9 +462,9 @@ AcpiRemoveAddressSpaceHandler ( /* * Got it, first dereference this in the Regions */ - DEBUG_PRINT (TRACE_OPREGION, + DEBUG_PRINTP (TRACE_OPREGION, ("Removing address handler %p(%p) for region %s on Device %p(%p)\n", - HandlerObj, Handler, AcpiCmGetRegionName (SpaceId), + HandlerObj, Handler, AcpiUtGetRegionName (SpaceId), Node, ObjDesc)); RegionObj = HandlerObj->AddrHandler.RegionList; @@ -464,7 +480,7 @@ AcpiRemoveAddressSpaceHandler ( * The region is just inaccessible as indicated to * the _REG method */ - AcpiEvDisassociateRegionFromHandler(RegionObj, FALSE); + AcpiEvDisassociateRegionFromHandler(RegionObj, TRUE); /* * Walk the list, since we took the first region and it @@ -483,8 +499,8 @@ AcpiRemoveAddressSpaceHandler ( /* * Now we can delete the handler object */ - AcpiCmRemoveReference (HandlerObj); - AcpiCmRemoveReference (HandlerObj); + AcpiUtRemoveReference (HandlerObj); + AcpiUtRemoveReference (HandlerObj); goto UnlockAndExit; } @@ -500,15 +516,15 @@ AcpiRemoveAddressSpaceHandler ( /* * The handler does not exist */ - DEBUG_PRINT (TRACE_OPREGION, + DEBUG_PRINTP (TRACE_OPREGION, ("Unable to remove address handler %p for %s(%X), DevNode %p, obj %p\n", - Handler, AcpiCmGetRegionName (SpaceId), SpaceId, Node, ObjDesc)); + Handler, AcpiUtGetRegionName (SpaceId), SpaceId, Node, ObjDesc)); Status = AE_NOT_EXIST; UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/exconfig.c b/sys/contrib/dev/acpica/exconfig.c index b69170e..d5ca43d 100644 --- a/sys/contrib/dev/acpica/exconfig.c +++ b/sys/contrib/dev/acpica/exconfig.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: amconfig - Namespace reconfiguration (Load/Unload opcodes) - * $Revision: 29 $ + * Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes) + * $Revision: 34 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMCONFIG_C__ +#define __EXCONFIG_C__ #include "acpi.h" #include "acparser.h" @@ -127,13 +127,13 @@ #include "acdispat.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amconfig") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exconfig") /***************************************************************************** * - * FUNCTION: AcpiAmlExecLoadTable + * FUNCTION: AcpiExLoadTableOp * * PARAMETERS: RgnDesc - Op region where the table will be obtained * DdbHandle - Where a handle to the table will be returned @@ -145,7 +145,7 @@ ****************************************************************************/ static ACPI_STATUS -AcpiAmlExecLoadTable ( +AcpiExLoadTableOp ( ACPI_OPERAND_OBJECT *RgnDesc, ACPI_HANDLE *DdbHandle) { @@ -158,7 +158,7 @@ AcpiAmlExecLoadTable ( UINT32 i; - FUNCTION_TRACE ("AmlExecLoadTable"); + FUNCTION_TRACE ("ExLoadTable"); /* TBD: [Unhandled] Object can be either a field or an opregion */ @@ -168,7 +168,7 @@ AcpiAmlExecLoadTable ( TableHeader.Length = 0; for (i = 0; i < sizeof (ACPI_TABLE_HEADER); i++) { - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ADDRESS_SPACE_READ, + Status = AcpiEvAddressSpaceDispatch (RgnDesc, ACPI_READ_ADR_SPACE, (ACPI_PHYSICAL_ADDRESS) i, 8, (UINT32 *) ((UINT8 *) &TableHeader + i)); if (ACPI_FAILURE (Status)) @@ -179,7 +179,7 @@ AcpiAmlExecLoadTable ( /* Allocate a buffer for the entire table */ - TablePtr = AcpiCmAllocate (TableHeader.Length); + TablePtr = AcpiUtAllocate (TableHeader.Length); if (!TablePtr) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -195,8 +195,8 @@ AcpiAmlExecLoadTable ( for (i = 0; i < TableHeader.Length; i++) { - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ADDRESS_SPACE_READ, - (ACPI_PHYSICAL_ADDRESS)i, 8, + Status = AcpiEvAddressSpaceDispatch (RgnDesc, ACPI_READ_ADR_SPACE, + (ACPI_PHYSICAL_ADDRESS) i, 8, (UINT32 *) (TableDataPtr + i)); if (ACPI_FAILURE (Status)) { @@ -214,7 +214,7 @@ AcpiAmlExecLoadTable ( AcpiGbl_AcpiTableData[ACPI_TABLE_SSDT].Signature, AcpiGbl_AcpiTableData[ACPI_TABLE_SSDT].SigLength))) { - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("Table has invalid signature [%4.4s], must be SSDT or PSDT\n", TableHeader.Signature)); Status = AE_BAD_SIGNATURE; @@ -223,7 +223,7 @@ AcpiAmlExecLoadTable ( /* Create an object to be the table handle */ - TableDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_REFERENCE); + TableDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_REFERENCE); if (!TableDesc) { Status = AE_NO_MEMORY; @@ -263,7 +263,7 @@ AcpiAmlExecLoadTable ( /* Init the table handle */ - TableDesc->Reference.OpCode = AML_LOAD_OP; + TableDesc->Reference.Opcode = AML_LOAD_OP; TableDesc->Reference.Object = TableInfo.InstalledDesc; *DdbHandle = TableDesc; @@ -273,8 +273,8 @@ AcpiAmlExecLoadTable ( Cleanup: - AcpiCmFree (TableDesc); - AcpiCmFree (TablePtr); + AcpiUtFree (TableDesc); + AcpiUtFree (TablePtr); return_ACPI_STATUS (Status); } @@ -282,7 +282,7 @@ Cleanup: /***************************************************************************** * - * FUNCTION: AcpiAmlExecUnloadTable + * FUNCTION: AcpiExUnloadTable * * PARAMETERS: DdbHandle - Handle to a previously loaded table * @@ -293,7 +293,7 @@ Cleanup: ****************************************************************************/ static ACPI_STATUS -AcpiAmlExecUnloadTable ( +AcpiExUnloadTable ( ACPI_HANDLE DdbHandle) { ACPI_STATUS Status = AE_NOT_IMPLEMENTED; @@ -301,12 +301,12 @@ AcpiAmlExecUnloadTable ( ACPI_TABLE_DESC *TableInfo; - FUNCTION_TRACE ("AmlExecUnloadTable"); + FUNCTION_TRACE ("ExUnloadTable"); /* Validate the handle */ - /* Although the handle is partially validated in AcpiAmlExecReconfiguration(), - * when it calls AcpiAmlResolveOperands(), the handle is more completely + /* Although the handle is partially validated in AcpiExReconfiguration(), + * when it calls AcpiExResolveOperands(), the handle is more completely * validated here. */ @@ -340,7 +340,7 @@ AcpiAmlExecUnloadTable ( /* Delete the table descriptor (DdbHandle) */ - AcpiCmRemoveReference (TableDesc); + AcpiUtRemoveReference (TableDesc); return_ACPI_STATUS (Status); } @@ -348,7 +348,7 @@ AcpiAmlExecUnloadTable ( /***************************************************************************** * - * FUNCTION: AcpiAmlExecReconfiguration + * FUNCTION: AcpiExReconfiguration * * PARAMETERS: Opcode - The opcode to be executed * WalkState - Current state of the parse tree walk @@ -360,7 +360,7 @@ AcpiAmlExecUnloadTable ( ****************************************************************************/ ACPI_STATUS -AcpiAmlExecReconfiguration ( +AcpiExReconfiguration ( UINT16 Opcode, ACPI_WALK_STATE *WalkState) { @@ -369,14 +369,14 @@ AcpiAmlExecReconfiguration ( ACPI_HANDLE *DdbHandle; - FUNCTION_TRACE ("AmlExecReconfiguration"); + FUNCTION_TRACE ("ExReconfiguration"); /* Resolve the operands */ - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Opcode, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 2, "after AcpiAmlResolveOperands"); + 2, "after AcpiExResolveOperands"); /* Get the table handle, common for both opcodes */ @@ -393,15 +393,14 @@ AcpiAmlExecReconfiguration ( Status |= AcpiDsObjStackPopObject (&RegionDesc, WalkState); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("ExecReconfiguration/AML_LOAD_OP: bad operand(s) (%X)\n", - Status)); + DEBUG_PRINTP (ACPI_ERROR, ("bad operand(s) (Load) (%s)\n", + AcpiUtFormatException (Status))); - AcpiCmRemoveReference (RegionDesc); + AcpiUtRemoveReference (RegionDesc); return_ACPI_STATUS (Status); } - Status = AcpiAmlExecLoadTable (RegionDesc, DdbHandle); + Status = AcpiExLoadTableOp (RegionDesc, DdbHandle); break; @@ -409,22 +408,19 @@ AcpiAmlExecReconfiguration ( if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("ExecReconfiguration/AML_UNLOAD_OP: bad operand(s) (%X)\n", - Status)); + DEBUG_PRINTP (ACPI_ERROR, ("bad operand(s) (unload) (%s)\n", + AcpiUtFormatException (Status))); return_ACPI_STATUS (Status); } - Status = AcpiAmlExecUnloadTable (DdbHandle); + Status = AcpiExUnloadTable (DdbHandle); break; default: - DEBUG_PRINT (ACPI_ERROR, ("AmlExecReconfiguration: bad opcode=%X\n", - Opcode)); - + DEBUG_PRINTP (ACPI_ERROR, ("bad opcode=%X\n", Opcode)); Status = AE_AML_BAD_OPCODE; break; } diff --git a/sys/contrib/dev/acpica/exconvrt.c b/sys/contrib/dev/acpica/exconvrt.c index 9aa444e..f7c8aea 100644 --- a/sys/contrib/dev/acpica/exconvrt.c +++ b/sys/contrib/dev/acpica/exconvrt.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: amconvrt - Object conversion routines - * $Revision: 3 $ + * Module Name: exconvrt - Object conversion routines + * $Revision: 13 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ *****************************************************************************/ -#define __AMCONVRT_C__ +#define __EXCONVRT_C__ #include "acpi.h" #include "acparser.h" @@ -126,143 +126,13 @@ #include "acdispat.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amconvrt") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exconvrt") /******************************************************************************* * - * FUNCTION: AcpiAmlConvertToTargetType - * - * PARAMETERS: *ObjDesc - Object to be converted. - * WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlConvertToTargetType ( - OBJECT_TYPE_INTERNAL DestinationType, - ACPI_OPERAND_OBJECT **ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AmlConvertToTargetType"); - - - /* - * 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 INTERNAL_TYPE_DEF_FIELD: - /* - * Named field can always handle conversions - */ - break; - - default: - /* No conversion allowed for these types */ - - if (DestinationType != (*ObjDesc)->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlConvertToTargetType: Target does not allow conversion of type %s to %s\n", - AcpiCmGetTypeName ((*ObjDesc)->Common.Type), - AcpiCmGetTypeName (DestinationType))); - Status = AE_TYPE; - } - } - break; - - - case ARGI_TARGETREF: - - switch (DestinationType) - { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_FIELD_UNIT: - case INTERNAL_TYPE_BANK_FIELD: - case INTERNAL_TYPE_INDEX_FIELD: - /* - * These types require an Integer operand. We can convert - * a Buffer or a String to an Integer if necessary. - */ - Status = AcpiAmlConvertToInteger (ObjDesc, WalkState); - break; - - - case ACPI_TYPE_STRING: - - /* - * The operand must be a String. We can convert an - * Integer or Buffer if necessary - */ - Status = AcpiAmlConvertToString (ObjDesc, WalkState); - break; - - - case ACPI_TYPE_BUFFER: - - /* - * The operand must be a String. We can convert an - * Integer or Buffer if necessary - */ - Status = AcpiAmlConvertToBuffer (ObjDesc, WalkState); - break; - } - break; - - - case ARGI_REFERENCE: - /* - * CreateXxxxField cases - we are storing the field object into the name - */ - break; - - - default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlConvertToTargetType: Unknown Target type ID 0x%X Op %s DestType %s\n", - GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs), - WalkState->OpInfo->Name, - AcpiCmGetTypeName (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); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlConvertToInteger + * FUNCTION: AcpiExConvertToInteger * * PARAMETERS: *ObjDesc - Object to be converted. Must be an * Integer, Buffer, or String @@ -275,7 +145,7 @@ AcpiAmlConvertToTargetType ( ******************************************************************************/ ACPI_STATUS -AcpiAmlConvertToInteger ( +AcpiExConvertToInteger ( ACPI_OPERAND_OBJECT **ObjDesc, ACPI_WALK_STATE *WalkState) { @@ -309,7 +179,7 @@ AcpiAmlConvertToInteger ( /* * Create a new integer */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { return (AE_NO_MEMORY); @@ -389,7 +259,7 @@ AcpiAmlConvertToInteger ( if (WalkState->Opcode != AML_STORE_OP) { - AcpiCmRemoveReference (*ObjDesc); + AcpiUtRemoveReference (*ObjDesc); } *ObjDesc = RetDesc; @@ -400,7 +270,7 @@ AcpiAmlConvertToInteger ( /******************************************************************************* * - * FUNCTION: AcpiAmlConvertToBuffer + * FUNCTION: AcpiExConvertToBuffer * * PARAMETERS: *ObjDesc - Object to be converted. Must be an * Integer, Buffer, or String @@ -413,7 +283,7 @@ AcpiAmlConvertToInteger ( ******************************************************************************/ ACPI_STATUS -AcpiAmlConvertToBuffer ( +AcpiExConvertToBuffer ( ACPI_OPERAND_OBJECT **ObjDesc, ACPI_WALK_STATE *WalkState) { @@ -430,7 +300,7 @@ AcpiAmlConvertToBuffer ( /* * Create a new Buffer */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_BUFFER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); if (!RetDesc) { return (AE_NO_MEMORY); @@ -451,12 +321,12 @@ AcpiAmlConvertToBuffer ( /* Need enough space for one integers */ RetDesc->Buffer.Length = IntegerSize; - NewBuf = AcpiCmCallocate (IntegerSize); + NewBuf = AcpiUtCallocate (IntegerSize); if (!NewBuf) { REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: Buffer allocation failure\n")); - AcpiCmRemoveReference (RetDesc); + (("ExDyadic2R/ConcatOp: Buffer allocation failure\n")); + AcpiUtRemoveReference (RetDesc); return (AE_NO_MEMORY); } @@ -472,7 +342,7 @@ AcpiAmlConvertToBuffer ( if (WalkState->Opcode != AML_STORE_OP) { - AcpiCmRemoveReference (*ObjDesc); + AcpiUtRemoveReference (*ObjDesc); } *ObjDesc = RetDesc; break; @@ -497,7 +367,7 @@ AcpiAmlConvertToBuffer ( /******************************************************************************* * - * FUNCTION: AcpiAmlConvertToString + * FUNCTION: AcpiExConvertToString * * PARAMETERS: *ObjDesc - Object to be converted. Must be an * Integer, Buffer, or String @@ -510,7 +380,7 @@ AcpiAmlConvertToBuffer ( ******************************************************************************/ ACPI_STATUS -AcpiAmlConvertToString ( +AcpiExConvertToString ( ACPI_OPERAND_OBJECT **ObjDesc, ACPI_WALK_STATE *WalkState) { @@ -529,7 +399,7 @@ AcpiAmlConvertToString ( /* * Create a new String */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_STRING); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_STRING); if (!RetDesc) { return (AE_NO_MEMORY); @@ -550,12 +420,12 @@ AcpiAmlConvertToString ( /* Need enough space for one ASCII integer plus null terminator */ RetDesc->String.Length = (IntegerSize * 2) + 1; - NewBuf = AcpiCmCallocate (RetDesc->String.Length); + NewBuf = AcpiUtCallocate (RetDesc->String.Length); if (!NewBuf) { REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: Buffer allocation failure\n")); - AcpiCmRemoveReference (RetDesc); + (("ExConvertToString: Buffer allocation failure\n")); + AcpiUtRemoveReference (RetDesc); return (AE_NO_MEMORY); } @@ -575,7 +445,7 @@ AcpiAmlConvertToString ( if (WalkState->Opcode != AML_STORE_OP) { - AcpiCmRemoveReference (*ObjDesc); + AcpiUtRemoveReference (*ObjDesc); } *ObjDesc = RetDesc; @@ -592,7 +462,7 @@ AcpiAmlConvertToString ( /* * Create a new String */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_STRING); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_STRING); if (!RetDesc) { return (AE_NO_MEMORY); @@ -601,12 +471,12 @@ AcpiAmlConvertToString ( /* Need enough space for one ASCII integer plus null terminator */ RetDesc->String.Length = (*ObjDesc)->Buffer.Length * 3; - NewBuf = AcpiCmCallocate (RetDesc->String.Length + 1); + NewBuf = AcpiUtCallocate (RetDesc->String.Length + 1); if (!NewBuf) { REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: Buffer allocation failure\n")); - AcpiCmRemoveReference (RetDesc); + (("ExConvertToString: Buffer allocation failure\n")); + AcpiUtRemoveReference (RetDesc); return (AE_NO_MEMORY); } @@ -632,7 +502,7 @@ AcpiAmlConvertToString ( if (WalkState->Opcode != AML_STORE_OP) { - AcpiCmRemoveReference (*ObjDesc); + AcpiUtRemoveReference (*ObjDesc); } *ObjDesc = RetDesc; break; @@ -651,3 +521,132 @@ AcpiAmlConvertToString ( } +/******************************************************************************* + * + * FUNCTION: AcpiExConvertToTargetType + * + * PARAMETERS: *ObjDesc - Object to be converted. + * WalkState - Current method state + * + * RETURN: Status + * + * DESCRIPTION: + * + ******************************************************************************/ + +ACPI_STATUS +AcpiExConvertToTargetType ( + ACPI_OBJECT_TYPE8 DestinationType, + ACPI_OPERAND_OBJECT **ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + ACPI_STATUS Status = AE_OK; + + + FUNCTION_TRACE ("ExConvertToTargetType"); + + + /* + * 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 INTERNAL_TYPE_REGION_FIELD: + /* + * Named field can always handle conversions + */ + break; + + default: + /* No conversion allowed for these types */ + + if (DestinationType != (*ObjDesc)->Common.Type) + { + DEBUG_PRINTP (ACPI_ERROR, + ("Target does not allow conversion of type %s to %s\n", + AcpiUtGetTypeName ((*ObjDesc)->Common.Type), + AcpiUtGetTypeName (DestinationType))); + Status = AE_TYPE; + } + } + break; + + + case ARGI_TARGETREF: + + switch (DestinationType) + { + case ACPI_TYPE_INTEGER: + case ACPI_TYPE_BUFFER_FIELD: + case INTERNAL_TYPE_BANK_FIELD: + case INTERNAL_TYPE_INDEX_FIELD: + /* + * These types require an Integer operand. We can convert + * a Buffer or a String to an Integer if necessary. + */ + Status = AcpiExConvertToInteger (ObjDesc, WalkState); + break; + + + case ACPI_TYPE_STRING: + + /* + * The operand must be a String. We can convert an + * Integer or Buffer if necessary + */ + Status = AcpiExConvertToString (ObjDesc, WalkState); + break; + + + case ACPI_TYPE_BUFFER: + + /* + * The operand must be a String. We can convert an + * Integer or Buffer if necessary + */ + Status = AcpiExConvertToBuffer (ObjDesc, WalkState); + break; + } + break; + + + case ARGI_REFERENCE: + /* + * CreateXxxxField cases - we are storing the field object into the name + */ + break; + + + default: + DEBUG_PRINTP (ACPI_ERROR, + ("Unknown Target type ID 0x%X Op %s DestType %s\n", + GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs), + WalkState->OpInfo->Name, 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/excreate.c b/sys/contrib/dev/acpica/excreate.c index e02df3c..57c0c88 100644 --- a/sys/contrib/dev/acpica/excreate.c +++ b/sys/contrib/dev/acpica/excreate.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: amcreate - Named object creation - * $Revision: 53 $ + * Module Name: excreate - Named object creation + * $Revision: 63 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMCREATE_C__ +#define __EXCREATE_C__ #include "acpi.h" #include "acparser.h" @@ -126,13 +126,13 @@ #include "acdispat.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amcreate") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("excreate") /******************************************************************************* * - * FUNCTION: AcpiAmlExecCreateField + * FUNCTION: AcpiExCreateBufferField * * PARAMETERS: Opcode - The opcode to be executed * Operands - List of operands for the opcode @@ -159,9 +159,8 @@ * ******************************************************************************/ - ACPI_STATUS -AcpiAmlExecCreateField ( +AcpiExCreateBufferField ( UINT8 *AmlPtr, UINT32 AmlLength, ACPI_NAMESPACE_NODE *Node, @@ -172,31 +171,26 @@ AcpiAmlExecCreateField ( ACPI_OPERAND_OBJECT *TmpDesc; - FUNCTION_TRACE ("AmlExecCreateField"); + FUNCTION_TRACE ("ExCreateBufferField"); - /* Create the region descriptor */ + /* Create the descriptor */ - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_FIELD_UNIT); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER_FIELD); if (!ObjDesc) { Status = AE_NO_MEMORY; goto Cleanup; } - /* Construct the field object */ - - ObjDesc->FieldUnit.Access = (UINT8) ACCESS_ANY_ACC; - ObjDesc->FieldUnit.LockRule = (UINT8) GLOCK_NEVER_LOCK; - ObjDesc->FieldUnit.UpdateRule = (UINT8) UPDATE_PRESERVE; /* * Allocate a method object for this field unit */ - ObjDesc->FieldUnit.Extra = AcpiCmCreateInternalObject ( - INTERNAL_TYPE_EXTRA); - if (!ObjDesc->FieldUnit.Extra) + ObjDesc->BufferField.Extra = AcpiUtCreateInternalObject ( + INTERNAL_TYPE_EXTRA); + if (!ObjDesc->BufferField.Extra) { Status = AE_NO_MEMORY; goto Cleanup; @@ -208,19 +202,19 @@ AcpiAmlExecCreateField ( * operands must be evaluated. */ - ObjDesc->FieldUnit.Extra->Extra.Pcode = AmlPtr; - ObjDesc->FieldUnit.Extra->Extra.PcodeLength = AmlLength; - ObjDesc->FieldUnit.Node = Node; + ObjDesc->BufferField.Extra->Extra.Pcode = AmlPtr; + ObjDesc->BufferField.Extra->Extra.PcodeLength = AmlLength; + ObjDesc->BufferField.Node = Node; /* * This operation is supposed to cause the destination Name to refer - * to the defined FieldUnit -- it must not store the constructed - * FieldUnit object (or its current value) in some location that the + * to the defined BufferField -- it must not store the constructed + * BufferField object (or its current value) in some location that the * Name may already be pointing to. So, if the Name currently contains - * a reference which would cause AcpiAmlExecStore() to perform an indirect + * a reference which would cause AcpiExStore() to perform an indirect * store rather than setting the value of the Name itself, clobber that - * reference before calling AcpiAmlExecStore(). + * reference before calling AcpiExStore(). */ /* Type of Name's existing value */ @@ -228,11 +222,10 @@ AcpiAmlExecCreateField ( switch (AcpiNsGetType (Node)) { - case ACPI_TYPE_FIELD_UNIT: - + case ACPI_TYPE_BUFFER_FIELD: case INTERNAL_TYPE_ALIAS: + case INTERNAL_TYPE_REGION_FIELD: case INTERNAL_TYPE_BANK_FIELD: - case INTERNAL_TYPE_DEF_FIELD: case INTERNAL_TYPE_INDEX_FIELD: TmpDesc = AcpiNsGetAttachedObject (Node); @@ -244,13 +237,13 @@ AcpiAmlExecCreateField ( */ DUMP_PATHNAME (Node, - "AmlExecCreateField: Removing Current Reference", + "ExCreateBufferField: Removing Current Reference", TRACE_BFIELD, _COMPONENT); DUMP_ENTRY (Node, TRACE_BFIELD); DUMP_STACK_ENTRY (TmpDesc); - AcpiCmRemoveReference (TmpDesc); + AcpiUtRemoveReference (TmpDesc); AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Node, NULL, ACPI_TYPE_ANY); } @@ -270,7 +263,8 @@ AcpiAmlExecCreateField ( /* Store constructed field descriptor in result location */ - Status = AcpiAmlExecStore (ObjDesc, (ACPI_OPERAND_OBJECT *) Node, WalkState); + Status = AcpiExStore (ObjDesc, (ACPI_OPERAND_OBJECT *) Node, + WalkState); /* * If the field descriptor was not physically stored (or if a failure @@ -278,7 +272,7 @@ AcpiAmlExecCreateField ( */ if (ObjDesc->Common.ReferenceCount <= 1) { - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); } @@ -293,7 +287,7 @@ Cleanup: { /* Remove deletes both objects! */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); ObjDesc = NULL; } @@ -303,9 +297,10 @@ Cleanup: /***************************************************************************** * - * FUNCTION: AcpiAmlExecCreateAlias + * FUNCTION: AcpiExCreateAlias * - * PARAMETERS: Operands - List of operands for the opcode + * PARAMETERS: WalkState - Current state, contains List of + * operands for the opcode * * RETURN: Status * @@ -314,7 +309,7 @@ Cleanup: ****************************************************************************/ ACPI_STATUS -AcpiAmlExecCreateAlias ( +AcpiExCreateAlias ( ACPI_WALK_STATE *WalkState) { ACPI_NAMESPACE_NODE *SourceNode; @@ -322,10 +317,10 @@ AcpiAmlExecCreateAlias ( ACPI_STATUS Status; - FUNCTION_TRACE ("AmlExecCreateAlias"); + FUNCTION_TRACE ("ExCreateAlias"); - /* Get the source/alias operands (both NTEs) */ + /* Get the source/alias operands (both namespace nodes) */ Status = AcpiDsObjStackPopObject ((ACPI_OPERAND_OBJECT **) &SourceNode, WalkState); @@ -337,12 +332,11 @@ AcpiAmlExecCreateAlias ( /* * Don't pop it, it gets removed in the calling routine */ - AliasNode = AcpiDsObjStackGetValue (0, WalkState); /* Add an additional reference to the object */ - AcpiCmAddReference (SourceNode->Object); + AcpiUtAddReference (SourceNode->Object); /* * Attach the original source Node to the new Alias Node. @@ -358,7 +352,7 @@ AcpiAmlExecCreateAlias ( * source or the alias Node */ - /* Since both operands are NTEs, we don't need to delete them */ + /* Since both operands are Nodes, we don't need to delete them */ return_ACPI_STATUS (Status); } @@ -366,7 +360,7 @@ AcpiAmlExecCreateAlias ( /***************************************************************************** * - * FUNCTION: AcpiAmlExecCreateEvent + * FUNCTION: AcpiExCreateEvent * * PARAMETERS: None * @@ -377,19 +371,19 @@ AcpiAmlExecCreateAlias ( ****************************************************************************/ ACPI_STATUS -AcpiAmlExecCreateEvent ( +AcpiExCreateEvent ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE ("AmlExecCreateEvent"); + FUNCTION_TRACE ("ExCreateEvent"); BREAKPOINT3; - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_EVENT); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_EVENT); if (!ObjDesc) { Status = AE_NO_MEMORY; @@ -404,7 +398,7 @@ AcpiAmlExecCreateEvent ( &ObjDesc->Event.Semaphore); if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); goto Cleanup; } @@ -415,7 +409,7 @@ AcpiAmlExecCreateEvent ( if (ACPI_FAILURE (Status)) { AcpiOsDeleteSemaphore (ObjDesc->Event.Semaphore); - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); goto Cleanup; } @@ -428,7 +422,7 @@ Cleanup: /***************************************************************************** * - * FUNCTION: AcpiAmlExecCreateMutex + * FUNCTION: AcpiExCreateMutex * * PARAMETERS: InterpreterMode - Current running mode (load1/Load2/Exec) * Operands - List of operands for the opcode @@ -440,7 +434,7 @@ Cleanup: ****************************************************************************/ ACPI_STATUS -AcpiAmlExecCreateMutex ( +AcpiExCreateMutex ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; @@ -448,7 +442,7 @@ AcpiAmlExecCreateMutex ( ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE_PTR ("AmlExecCreateMutex", WALK_OPERANDS); + FUNCTION_TRACE_PTR ("ExCreateMutex", WALK_OPERANDS); /* Get the operand */ @@ -461,7 +455,7 @@ AcpiAmlExecCreateMutex ( /* Attempt to allocate a new object */ - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_MUTEX); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_MUTEX); if (!ObjDesc) { Status = AE_NO_MEMORY; @@ -473,7 +467,7 @@ AcpiAmlExecCreateMutex ( Status = AcpiOsCreateSemaphore (1, 1, &ObjDesc->Mutex.Semaphore); if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); goto Cleanup; } @@ -486,7 +480,7 @@ AcpiAmlExecCreateMutex ( if (ACPI_FAILURE (Status)) { AcpiOsDeleteSemaphore (ObjDesc->Mutex.Semaphore); - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); goto Cleanup; } @@ -495,7 +489,7 @@ Cleanup: /* Always delete the operand */ - AcpiCmRemoveReference (SyncDesc); + AcpiUtRemoveReference (SyncDesc); return_ACPI_STATUS (Status); } @@ -503,7 +497,7 @@ Cleanup: /***************************************************************************** * - * FUNCTION: AcpiAmlExecCreateRegion + * FUNCTION: AcpiExCreateRegion * * PARAMETERS: AmlPtr - Pointer to the region declaration AML * AmlLength - Max length of the declaration AML @@ -517,7 +511,7 @@ Cleanup: ****************************************************************************/ ACPI_STATUS -AcpiAmlExecCreateRegion ( +AcpiExCreateRegion ( UINT8 *AmlPtr, UINT32 AmlLength, UINT8 RegionSpace, @@ -528,7 +522,7 @@ AcpiAmlExecCreateRegion ( ACPI_NAMESPACE_NODE *Node; - FUNCTION_TRACE ("AmlExecCreateRegion"); + FUNCTION_TRACE ("ExCreateRegion"); /* @@ -542,8 +536,8 @@ AcpiAmlExecCreateRegion ( return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } - DEBUG_PRINT (TRACE_LOAD, ("AmlExecCreateRegion: Region Type - %s (%X)\n", - AcpiCmGetRegionName (RegionSpace), RegionSpace)); + DEBUG_PRINTP (TRACE_LOAD, ("Region Type - %s (%X)\n", + AcpiUtGetRegionName (RegionSpace), RegionSpace)); /* Get the Node from the object stack */ @@ -552,7 +546,7 @@ AcpiAmlExecCreateRegion ( /* Create the region descriptor */ - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_REGION); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION); if (!ObjDesc) { Status = AE_NO_MEMORY; @@ -563,7 +557,7 @@ AcpiAmlExecCreateRegion ( * Allocate a method object for this region. */ - ObjDesc->Region.Extra = AcpiCmCreateInternalObject ( + ObjDesc->Region.Extra = AcpiUtCreateInternalObject ( INTERNAL_TYPE_EXTRA); if (!ObjDesc->Region.Extra) { @@ -628,7 +622,7 @@ Cleanup: { /* Remove deletes both objects! */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); ObjDesc = NULL; } } @@ -639,11 +633,11 @@ Cleanup: /***************************************************************************** * - * FUNCTION: AcpiAmlExecCreateProcessor + * FUNCTION: AcpiExCreateProcessor * * PARAMETERS: Op - Op containing the Processor definition and * args - * ProcessorNTE - Node for the containing Node + * ProcessorNode - Parent Node for the processor object * * RETURN: Status * @@ -652,85 +646,80 @@ Cleanup: ****************************************************************************/ ACPI_STATUS -AcpiAmlExecCreateProcessor ( +AcpiExCreateProcessor ( ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE ProcessorNTE) + ACPI_NAMESPACE_NODE *ProcessorNode) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *Arg; ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE_PTR ("AmlExecCreateProcessor", Op); + FUNCTION_TRACE_PTR ("ExCreateProcessor", Op); - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_PROCESSOR); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PROCESSOR); if (!ObjDesc) { - Status = AE_NO_MEMORY; - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_NO_MEMORY); } /* Install the new processor object in the parent Node */ - Status = AcpiNsAttachObject (ProcessorNTE, ObjDesc, + Status = AcpiNsAttachObject (ProcessorNode, ObjDesc, (UINT8) ACPI_TYPE_PROCESSOR); if (ACPI_FAILURE (Status)) { - return_ACPI_STATUS(Status); + AcpiUtDeleteObjectDesc (ObjDesc); + return_ACPI_STATUS (Status); } - Arg = Op->Value.Arg; - - /* check existence */ + /* Get first arg and verify existence */ + Arg = Op->Value.Arg; if (!Arg) { - Status = AE_AML_NO_OPERAND; - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* First arg is the Processor ID */ ObjDesc->Processor.ProcId = (UINT8) Arg->Value.Integer; - /* Move to next arg and check existence */ + /* Get second arg and verify existence */ Arg = Arg->Next; if (!Arg) { - Status = AE_AML_NO_OPERAND; - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* Second arg is the PBlock Address */ ObjDesc->Processor.Address = (ACPI_IO_ADDRESS) Arg->Value.Integer; - /* Move to next arg and check existence */ + /* Get third arg and verify existence */ Arg = Arg->Next; if (!Arg) { - Status = AE_AML_NO_OPERAND; - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* Third arg is the PBlock Length */ ObjDesc->Processor.Length = (UINT8) Arg->Value.Integer; - return_ACPI_STATUS (AE_OK); } /***************************************************************************** * - * FUNCTION: AcpiAmlExecCreatePowerResource + * FUNCTION: AcpiExCreatePowerResource * * PARAMETERS: Op - Op containing the PowerResource definition * and args - * PowerResNTE - Node for the containing Node + * PowerNode - Parent Node for the power object * * RETURN: Status * @@ -739,55 +728,52 @@ AcpiAmlExecCreateProcessor ( ****************************************************************************/ ACPI_STATUS -AcpiAmlExecCreatePowerResource ( +AcpiExCreatePowerResource ( ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE PowerResNTE) + ACPI_NAMESPACE_NODE *PowerNode) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *Arg; ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE_PTR ("AmlExecCreatePowerResource", Op); + FUNCTION_TRACE_PTR ("ExCreatePowerResource", Op); - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_POWER); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_POWER); if (!ObjDesc) { - Status = AE_NO_MEMORY; - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_NO_MEMORY); } /* Install the new power resource object in the parent Node */ - Status = AcpiNsAttachObject (PowerResNTE, ObjDesc, + Status = AcpiNsAttachObject (PowerNode, ObjDesc, (UINT8) ACPI_TYPE_POWER); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS(Status); } - Arg = Op->Value.Arg; - /* check existence */ + /* Get first arg and verify existence */ + Arg = Op->Value.Arg; if (!Arg) { - Status = AE_AML_NO_OPERAND; - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* First arg is the SystemLevel */ ObjDesc->PowerResource.SystemLevel = (UINT8) Arg->Value.Integer; - /* Move to next arg and check existence */ + /* Get second arg and check existence */ Arg = Arg->Next; if (!Arg) { - Status = AE_AML_NO_OPERAND; - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* Second arg is the PBlock Address */ @@ -800,7 +786,7 @@ AcpiAmlExecCreatePowerResource ( /***************************************************************************** * - * FUNCTION: AcpiAmlExecCreateMethod + * FUNCTION: AcpiExCreateMethod * * PARAMETERS: AmlPtr - First byte of the method's AML * AmlLength - AML byte count for this method @@ -814,22 +800,22 @@ AcpiAmlExecCreatePowerResource ( ****************************************************************************/ ACPI_STATUS -AcpiAmlExecCreateMethod ( +AcpiExCreateMethod ( UINT8 *AmlPtr, UINT32 AmlLength, UINT32 MethodFlags, - ACPI_HANDLE Method) + ACPI_NAMESPACE_NODE *Method) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("AmlExecCreateMethod", Method); + FUNCTION_TRACE_PTR ("ExCreateMethod", Method); /* Create a new method object */ - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_METHOD); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -852,15 +838,15 @@ AcpiAmlExecCreateMethod ( /* * Get the concurrency count. If required, a semaphore will be * created for this method when it is parsed. - * - * TBD: [Future] for APCI 2.0, there will be a SyncLevel value, not - * just a flag - * Concurrency = SyncLevel + 1;. */ - if (MethodFlags & METHOD_FLAGS_SERIALIZED) { - ObjDesc->Method.Concurrency = 1; + /* + * ACPI 1.0: Concurrency = 1 + * ACPI 2.0: Concurrency = (SyncLevel (in method declaration) + 1) + */ + ObjDesc->Method.Concurrency = (UINT8) + (((MethodFlags & METHOD_FLAGS_SYNCH_LEVEL) >> 4) + 1); } else @@ -873,7 +859,7 @@ AcpiAmlExecCreateMethod ( Status = AcpiNsAttachObject (Method, ObjDesc, (UINT8) ACPI_TYPE_METHOD); if (ACPI_FAILURE (Status)) { - AcpiCmDeleteObjectDesc (ObjDesc); + AcpiUtDeleteObjectDesc (ObjDesc); } return_ACPI_STATUS (Status); diff --git a/sys/contrib/dev/acpica/exdump.c b/sys/contrib/dev/acpica/exdump.c index 37f67f8..55a5c0d 100644 --- a/sys/contrib/dev/acpica/exdump.c +++ b/sys/contrib/dev/acpica/exdump.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: amdump - Interpreter debug output routines - * $Revision: 100 $ + * Module Name: exdump - Interpreter debug output routines + * $Revision: 114 $ * *****************************************************************************/ @@ -114,7 +114,7 @@ * *****************************************************************************/ -#define __AMDUMP_C__ +#define __EXDUMP_C__ #include "acpi.h" #include "acinterp.h" @@ -122,8 +122,8 @@ #include "acnamesp.h" #include "actables.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amdump") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exdump") /* @@ -134,7 +134,7 @@ /***************************************************************************** * - * FUNCTION: AcpiAmlShowHexValue + * FUNCTION: AcpiExShowHexValue * * PARAMETERS: ByteCount - Number of bytes to print (1, 2, or 4) * *AmlPtr - Address in AML stream of bytes to print @@ -142,14 +142,14 @@ * LeadSpace - # of spaces to print ahead of value * 0 => none ahead but one behind * - * DESCRIPTION: Print ByteCount byte(s) starting at AcpiAmlPtr as a single + * DESCRIPTION: Print ByteCount byte(s) starting at AmlPtr as a single * value, in hex. If ByteCount > 1 or the value printed is > 9, also * print in decimal. * ****************************************************************************/ void -AcpiAmlShowHexValue ( +AcpiExShowHexValue ( UINT32 ByteCount, UINT8 *AmlPtr, UINT32 LeadSpace) @@ -160,12 +160,12 @@ AcpiAmlShowHexValue ( UINT8 *CurrentAmlPtr = NULL; /* Pointer to current byte of AML value */ - FUNCTION_TRACE ("AmlShowHexValue"); + FUNCTION_TRACE ("ExShowHexValue"); if (!AmlPtr) { - REPORT_ERROR (("AmlShowHexValue: null pointer\n")); + REPORT_ERROR (("ExShowHexValue: null pointer\n")); } /* @@ -188,7 +188,7 @@ AcpiAmlShowHexValue ( ShowDecimalValue = (ByteCount > 1 || Value > 9); if (ShowDecimalValue) { - Length += 3 + AcpiAmlDigitsNeeded (Value, 10); + Length += 3 + AcpiExDigitsNeeded (Value, 10); } DEBUG_PRINT (TRACE_LOAD, ("")); @@ -225,7 +225,7 @@ AcpiAmlShowHexValue ( /***************************************************************************** * - * FUNCTION: AcpiAmlDumpOperand + * FUNCTION: AcpiExDumpOperand * * PARAMETERS: *EntryDesc - Pointer to entry to be dumped * @@ -236,7 +236,7 @@ AcpiAmlShowHexValue ( ****************************************************************************/ ACPI_STATUS -AcpiAmlDumpOperand ( +AcpiExDumpOperand ( ACPI_OPERAND_OBJECT *EntryDesc) { UINT8 *Buf = NULL; @@ -244,6 +244,9 @@ AcpiAmlDumpOperand ( UINT32 i; + PROC_NAME ("ExDumpOperand") + + if (!EntryDesc) { /* @@ -251,44 +254,40 @@ AcpiAmlDumpOperand ( * since most (if not all) * code that dumps the stack expects something to be there! */ - DEBUG_PRINT (ACPI_INFO, - ("AmlDumpOperand: *** Possible error: Null stack entry ptr\n")); + DEBUG_PRINTP (ACPI_INFO, ("Null stack entry ptr\n")); return (AE_OK); } if (VALID_DESCRIPTOR_TYPE (EntryDesc, ACPI_DESC_TYPE_NAMED)) { - DEBUG_PRINT (ACPI_INFO, - ("AmlDumpOperand: Node: \n")); + DEBUG_PRINTP (ACPI_INFO, ("Node: \n")); DUMP_ENTRY (EntryDesc, ACPI_INFO); return (AE_OK); } if (AcpiTbSystemTablePointer (EntryDesc)) { - DEBUG_PRINT (ACPI_INFO, - ("AmlDumpOperand: %p is a Pcode pointer\n", + DEBUG_PRINTP (ACPI_INFO, ("%p is an AML pointer\n", EntryDesc)); return (AE_OK); } if (!VALID_DESCRIPTOR_TYPE (EntryDesc, ACPI_DESC_TYPE_INTERNAL)) { - DEBUG_PRINT (ACPI_INFO, - ("AmlDumpOperand: %p Not a local object \n", EntryDesc)); + DEBUG_PRINTP (ACPI_INFO, ("%p Not a local object \n", EntryDesc)); DUMP_BUFFER (EntryDesc, sizeof (ACPI_OPERAND_OBJECT)); return (AE_OK); } /* EntryDesc is a valid object */ - DEBUG_PRINT (ACPI_INFO, ("AmlDumpOperand: %p ", EntryDesc)); + DEBUG_PRINTP (ACPI_INFO, ("%p ", EntryDesc)); switch (EntryDesc->Common.Type) { case INTERNAL_TYPE_REFERENCE: - switch (EntryDesc->Reference.OpCode) + switch (EntryDesc->Reference.Opcode) { case AML_ZERO_OP: @@ -364,7 +363,7 @@ AcpiAmlDumpOperand ( break; - case AML_NAMEPATH_OP: + case AML_INT_NAMEPATH_OP: DEBUG_PRINT_RAW (ACPI_INFO, ("Reference.Node->Name %x\n", EntryDesc->Reference.Node->Name)); break; @@ -374,7 +373,7 @@ AcpiAmlDumpOperand ( /* unknown opcode */ DEBUG_PRINT_RAW (ACPI_INFO, ("Unknown opcode=%X\n", - EntryDesc->Reference.OpCode)); + EntryDesc->Reference.Opcode)); break; } @@ -454,7 +453,7 @@ AcpiAmlDumpOperand ( ElementIndex < EntryDesc->Package.Count; ++ElementIndex, ++Element) { - AcpiAmlDumpOperand (*Element); + AcpiExDumpOperand (*Element); } } @@ -466,7 +465,7 @@ AcpiAmlDumpOperand ( case ACPI_TYPE_REGION: DEBUG_PRINT_RAW (ACPI_INFO, ("Region %s (%X)", - AcpiCmGetRegionName (EntryDesc->Region.SpaceId), + AcpiUtGetRegionName (EntryDesc->Region.SpaceId), EntryDesc->Region.SpaceId)); /* @@ -506,14 +505,14 @@ AcpiAmlDumpOperand ( break; - case INTERNAL_TYPE_DEF_FIELD: + case INTERNAL_TYPE_REGION_FIELD: DEBUG_PRINT_RAW (ACPI_INFO, - ("DefField: bits=%X acc=%X lock=%X update=%X at byte=%lX bit=%X of below:\n", - EntryDesc->Field.Length, EntryDesc->Field.Access, - EntryDesc->Field.LockRule, EntryDesc->Field.UpdateRule, - EntryDesc->Field.Offset, EntryDesc->Field.BitOffset)); - DUMP_STACK_ENTRY (EntryDesc->Field.Container); + ("RegionField: bits=%X bitaccwidth=%X lock=%X update=%X at byte=%lX bit=%X of below:\n", + EntryDesc->Field.BitLength, EntryDesc->Field.AccessBitWidth, + EntryDesc->Field.LockRule, EntryDesc->Field.UpdateRule, + EntryDesc->Field.BaseByteOffset, EntryDesc->Field.StartFieldBitOffset)); + DUMP_STACK_ENTRY (EntryDesc->Field.RegionObj); break; @@ -523,28 +522,27 @@ AcpiAmlDumpOperand ( break; - case ACPI_TYPE_FIELD_UNIT: + case ACPI_TYPE_BUFFER_FIELD: DEBUG_PRINT_RAW (ACPI_INFO, - ("FieldUnit: %X bits acc %X lock %X update %X at byte %lX bit %X of \n", - EntryDesc->FieldUnit.Length, EntryDesc->FieldUnit.Access, - EntryDesc->FieldUnit.LockRule, EntryDesc->FieldUnit.UpdateRule, - EntryDesc->FieldUnit.Offset, EntryDesc->FieldUnit.BitOffset)); + ("BufferField: %X bits at byte %lX bit %X of \n", + EntryDesc->BufferField.BitLength, EntryDesc->BufferField.BaseByteOffset, + EntryDesc->BufferField.StartFieldBitOffset)); - if (!EntryDesc->FieldUnit.Container) + if (!EntryDesc->BufferField.BufferObj) { DEBUG_PRINT (ACPI_INFO, ("*NULL* \n")); } else if (ACPI_TYPE_BUFFER != - EntryDesc->FieldUnit.Container->Common.Type) + EntryDesc->BufferField.BufferObj->Common.Type) { DEBUG_PRINT_RAW (ACPI_INFO, ("*not a Buffer* \n")); } else { - DUMP_STACK_ENTRY (EntryDesc->FieldUnit.Container); + DUMP_STACK_ENTRY (EntryDesc->BufferField.BufferObj); } break; @@ -622,7 +620,7 @@ AcpiAmlDumpOperand ( /***************************************************************************** * - * FUNCTION: AcpiAmlDumpOperands + * FUNCTION: AcpiExDumpOperands * * PARAMETERS: InterpreterMode - Load or Exec * *Ident - Identification @@ -634,7 +632,7 @@ AcpiAmlDumpOperand ( ****************************************************************************/ void -AcpiAmlDumpOperands ( +AcpiExDumpOperands ( ACPI_OPERAND_OBJECT **Operands, OPERATING_MODE InterpreterMode, NATIVE_CHAR *Ident, @@ -659,13 +657,15 @@ AcpiAmlDumpOperands ( DEBUG_PRINT (ACPI_INFO, - ("************* AcpiAmlDumpOperands Mode=%X ******************\n", + ("************* AcpiExDumpOperands Mode=%X ******************\n", InterpreterMode)); DEBUG_PRINT (ACPI_INFO, ("From %12s(%d) %s: %s\n", ModuleName, LineNumber, Ident, Note)); if (NumLevels == 0) + { NumLevels = 1; + } /* Dump the stack starting at the top, working down */ @@ -673,7 +673,7 @@ AcpiAmlDumpOperands ( { EntryDesc = &Operands[i]; - if (ACPI_FAILURE (AcpiAmlDumpOperand (*EntryDesc))) + if (ACPI_FAILURE (AcpiExDumpOperand (*EntryDesc))) { break; } @@ -685,7 +685,7 @@ AcpiAmlDumpOperands ( /***************************************************************************** * - * FUNCTION: AcpiAmlDumpNode + * FUNCTION: AcpiExDumpNode * * PARAMETERS: *Node - Descriptor to dump * Flags - Force display @@ -695,7 +695,7 @@ AcpiAmlDumpOperands ( ****************************************************************************/ void -AcpiAmlDumpNode ( +AcpiExDumpNode ( ACPI_NAMESPACE_NODE *Node, UINT32 Flags) { @@ -710,7 +710,7 @@ AcpiAmlDumpNode ( AcpiOsPrintf ("%20s : %4.4s\n", "Name", &Node->Name); - AcpiOsPrintf ("%20s : %s\n", "Type", AcpiCmGetTypeName (Node->Type)); + AcpiOsPrintf ("%20s : %s\n", "Type", AcpiUtGetTypeName (Node->Type)); AcpiOsPrintf ("%20s : %X\n", "Flags", Node->Flags); AcpiOsPrintf ("%20s : %X\n", "Owner Id", Node->OwnerId); AcpiOsPrintf ("%20s : %X\n", "Reference Count", Node->ReferenceCount); @@ -723,7 +723,7 @@ AcpiAmlDumpNode ( /***************************************************************************** * - * FUNCTION: AcpiAmlDumpObjectDescriptor + * FUNCTION: AcpiExDumpObjectDescriptor * * PARAMETERS: *Object - Descriptor to dump * Flags - Force display @@ -733,11 +733,11 @@ AcpiAmlDumpNode ( ****************************************************************************/ void -AcpiAmlDumpObjectDescriptor ( +AcpiExDumpObjectDescriptor ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Flags) { - FUNCTION_TRACE ("AmlDumpObjectDescriptor"); + FUNCTION_TRACE ("ExDumpObjectDescriptor"); if (!Flags) @@ -795,16 +795,13 @@ AcpiAmlDumpObjectDescriptor ( break; - case ACPI_TYPE_FIELD_UNIT: + case ACPI_TYPE_BUFFER_FIELD: - AcpiOsPrintf ("%20s : %s\n", "Type", "FieldUnit"); - AcpiOsPrintf ("%20s : %X\n", "Access", ObjDesc->FieldUnit.Access); - AcpiOsPrintf ("%20s : %X\n", "LockRule", ObjDesc->FieldUnit.LockRule); - AcpiOsPrintf ("%20s : %X\n", "UpdateRule", ObjDesc->FieldUnit.UpdateRule); - AcpiOsPrintf ("%20s : %X\n", "Length", ObjDesc->FieldUnit.Length); - AcpiOsPrintf ("%20s : %X\n", "BitOffset", ObjDesc->FieldUnit.BitOffset); - AcpiOsPrintf ("%20s : %X\n", "Offset", ObjDesc->FieldUnit.Offset); - AcpiOsPrintf ("%20s : %p\n", "Container", ObjDesc->FieldUnit.Container); + AcpiOsPrintf ("%20s : %s\n", "Type", "BufferField"); + AcpiOsPrintf ("%20s : %X\n", "BitLength", ObjDesc->BufferField.BitLength); + AcpiOsPrintf ("%20s : %X\n", "BitOffset", ObjDesc->BufferField.StartFieldBitOffset); + AcpiOsPrintf ("%20s : %X\n", "BaseByteOffset",ObjDesc->BufferField.BaseByteOffset); + AcpiOsPrintf ("%20s : %p\n", "BufferObj", ObjDesc->BufferField.BufferObj); break; @@ -838,6 +835,8 @@ AcpiAmlDumpObjectDescriptor ( AcpiOsPrintf ("%20s : %s\n", "Type", "Mutex"); AcpiOsPrintf ("%20s : %X\n", "SyncLevel", ObjDesc->Mutex.SyncLevel); + AcpiOsPrintf ("%20s : %p\n", "Owner", ObjDesc->Mutex.Owner); + AcpiOsPrintf ("%20s : %X\n", "AcquisitionDepth", ObjDesc->Mutex.AcquisitionDepth); AcpiOsPrintf ("%20s : %p\n", "Semaphore", ObjDesc->Mutex.Semaphore); break; @@ -884,32 +883,43 @@ AcpiAmlDumpObjectDescriptor ( AcpiOsPrintf ("%20s : %p\n", "AddrHandler", ObjDesc->ThermalZone.AddrHandler); break; + + case INTERNAL_TYPE_REGION_FIELD: + + AcpiOsPrintf ("%20s : %p\n", "AccessBitWidth", ObjDesc->Field.AccessBitWidth); + AcpiOsPrintf ("%20s : %p\n", "BitLength", ObjDesc->Field.BitLength); + AcpiOsPrintf ("%20s : %p\n", "BaseByteOffset",ObjDesc->Field.BaseByteOffset); + AcpiOsPrintf ("%20s : %p\n", "BitOffset", ObjDesc->Field.StartFieldBitOffset); + AcpiOsPrintf ("%20s : %p\n", "RegionObj", ObjDesc->Field.RegionObj); + break; + + case INTERNAL_TYPE_BANK_FIELD: AcpiOsPrintf ("%20s : %s\n", "Type", "BankField"); - AcpiOsPrintf ("%20s : %X\n", "Access", ObjDesc->BankField.Access); + AcpiOsPrintf ("%20s : %X\n", "AccessBitWidth", ObjDesc->BankField.AccessBitWidth); AcpiOsPrintf ("%20s : %X\n", "LockRule", ObjDesc->BankField.LockRule); AcpiOsPrintf ("%20s : %X\n", "UpdateRule", ObjDesc->BankField.UpdateRule); - AcpiOsPrintf ("%20s : %X\n", "Length", ObjDesc->BankField.Length); - AcpiOsPrintf ("%20s : %X\n", "BitOffset", ObjDesc->BankField.BitOffset); - AcpiOsPrintf ("%20s : %X\n", "Offset", ObjDesc->BankField.Offset); + AcpiOsPrintf ("%20s : %X\n", "BitLength", ObjDesc->BankField.BitLength); + AcpiOsPrintf ("%20s : %X\n", "BitOffset", ObjDesc->BankField.StartFieldBitOffset); + AcpiOsPrintf ("%20s : %X\n", "BaseByteOffset", ObjDesc->BankField.BaseByteOffset); AcpiOsPrintf ("%20s : %X\n", "Value", ObjDesc->BankField.Value); - AcpiOsPrintf ("%20s : %p\n", "Container", ObjDesc->BankField.Container); - AcpiOsPrintf ("%20s : %X\n", "BankSelect", ObjDesc->BankField.BankSelect); + AcpiOsPrintf ("%20s : %p\n", "RegionObj", ObjDesc->BankField.RegionObj); + AcpiOsPrintf ("%20s : %X\n", "BankRegisterObj", ObjDesc->BankField.BankRegisterObj); break; case INTERNAL_TYPE_INDEX_FIELD: AcpiOsPrintf ("%20s : %s\n", "Type", "IndexField"); - AcpiOsPrintf ("%20s : %X\n", "Access", ObjDesc->IndexField.Access); + AcpiOsPrintf ("%20s : %X\n", "AccessBitWidth", ObjDesc->IndexField.AccessBitWidth); AcpiOsPrintf ("%20s : %X\n", "LockRule", ObjDesc->IndexField.LockRule); AcpiOsPrintf ("%20s : %X\n", "UpdateRule", ObjDesc->IndexField.UpdateRule); - AcpiOsPrintf ("%20s : %X\n", "Length", ObjDesc->IndexField.Length); - AcpiOsPrintf ("%20s : %X\n", "BitOffset", ObjDesc->IndexField.BitOffset); + AcpiOsPrintf ("%20s : %X\n", "BitLength", ObjDesc->IndexField.BitLength); + AcpiOsPrintf ("%20s : %X\n", "BitOffset", ObjDesc->IndexField.StartFieldBitOffset); AcpiOsPrintf ("%20s : %X\n", "Value", ObjDesc->IndexField.Value); - AcpiOsPrintf ("%20s : %X\n", "Index", ObjDesc->IndexField.Index); - AcpiOsPrintf ("%20s : %X\n", "Data", ObjDesc->IndexField.Data); + AcpiOsPrintf ("%20s : %X\n", "Index", ObjDesc->IndexField.IndexObj); + AcpiOsPrintf ("%20s : %X\n", "Data", ObjDesc->IndexField.DataObj); break; @@ -917,7 +927,7 @@ AcpiAmlDumpObjectDescriptor ( AcpiOsPrintf ("%20s : %s\n", "Type", "Reference"); AcpiOsPrintf ("%20s : %X\n", "TargetType", ObjDesc->Reference.TargetType); - AcpiOsPrintf ("%20s : %X\n", "OpCode", ObjDesc->Reference.OpCode); + AcpiOsPrintf ("%20s : %X\n", "Opcode", ObjDesc->Reference.Opcode); AcpiOsPrintf ("%20s : %X\n", "Offset", ObjDesc->Reference.Offset); AcpiOsPrintf ("%20s : %p\n", "ObjDesc", ObjDesc->Reference.Object); AcpiOsPrintf ("%20s : %p\n", "Node", ObjDesc->Reference.Node); @@ -946,18 +956,8 @@ AcpiAmlDumpObjectDescriptor ( break; - case INTERNAL_TYPE_DEF_FIELD: - - AcpiOsPrintf ("%20s : %p\n", "Granularity", ObjDesc->Field.Granularity); - AcpiOsPrintf ("%20s : %p\n", "Length", ObjDesc->Field.Length); - AcpiOsPrintf ("%20s : %p\n", "Offset", ObjDesc->Field.Offset); - AcpiOsPrintf ("%20s : %p\n", "BitOffset", ObjDesc->Field.BitOffset); - AcpiOsPrintf ("%20s : %p\n", "Container", ObjDesc->Field.Container); - break; - - case INTERNAL_TYPE_ALIAS: - case INTERNAL_TYPE_DEF_FIELD_DEFN: + case INTERNAL_TYPE_FIELD_DEFN: case INTERNAL_TYPE_BANK_FIELD_DEFN: case INTERNAL_TYPE_INDEX_FIELD_DEFN: case INTERNAL_TYPE_IF: diff --git a/sys/contrib/dev/acpica/exdyadic.c b/sys/contrib/dev/acpica/exdyadic.c index c80d929..46050da 100644 --- a/sys/contrib/dev/acpica/exdyadic.c +++ b/sys/contrib/dev/acpica/exdyadic.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: amdyadic - ACPI AML (p-code) execution for dyadic operators - * $Revision: 71 $ + * Module Name: exdyadic - ACPI AML (p-code) execution for dyadic operators + * $Revision: 77 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ *****************************************************************************/ -#define __AMDYADIC_C__ +#define __EXDYADIC_C__ #include "acpi.h" #include "acparser.h" @@ -126,13 +126,13 @@ #include "acdispat.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amdyadic") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exdyadic") /******************************************************************************* * - * FUNCTION: AcpiAmlDoConcatenate + * FUNCTION: AcpiExDoConcatenate * * PARAMETERS: *ObjDesc - Object to be converted. Must be an * Integer, Buffer, or String @@ -144,7 +144,7 @@ ******************************************************************************/ ACPI_STATUS -AcpiAmlDoConcatenate ( +AcpiExDoConcatenate ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *ObjDesc2, ACPI_OPERAND_OBJECT **ActualRetDesc, @@ -182,7 +182,7 @@ AcpiAmlDoConcatenate ( /* Result of two integers is a buffer */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_BUFFER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); if (!RetDesc) { return (AE_NO_MEMORY); @@ -191,11 +191,11 @@ AcpiAmlDoConcatenate ( /* Need enough space for two integers */ RetDesc->Buffer.Length = IntegerSize * 2; - NewBuf = AcpiCmCallocate (RetDesc->Buffer.Length); + NewBuf = AcpiUtCallocate (RetDesc->Buffer.Length); if (!NewBuf) { REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: Buffer allocation failure\n")); + (("ExDoConcatenate: Buffer allocation failure\n")); Status = AE_NO_MEMORY; goto Cleanup; } @@ -225,7 +225,7 @@ AcpiAmlDoConcatenate ( case ACPI_TYPE_STRING: - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_STRING); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_STRING); if (!RetDesc) { return (AE_NO_MEMORY); @@ -233,12 +233,12 @@ AcpiAmlDoConcatenate ( /* Operand1 is string */ - NewBuf = AcpiCmAllocate (ObjDesc->String.Length + + NewBuf = AcpiUtAllocate (ObjDesc->String.Length + ObjDesc2->String.Length + 1); if (!NewBuf) { REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: String allocation failure\n")); + (("ExDoConcatenate: String allocation failure\n")); Status = AE_NO_MEMORY; goto Cleanup; } @@ -259,18 +259,18 @@ AcpiAmlDoConcatenate ( /* Operand1 is a buffer */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_BUFFER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); if (!RetDesc) { return (AE_NO_MEMORY); } - NewBuf = AcpiCmAllocate (ObjDesc->Buffer.Length + + NewBuf = AcpiUtAllocate (ObjDesc->Buffer.Length + ObjDesc2->Buffer.Length); if (!NewBuf) { REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: Buffer allocation failure\n")); + (("ExDoConcatenate: Buffer allocation failure\n")); Status = AE_NO_MEMORY; goto Cleanup; } @@ -301,14 +301,14 @@ AcpiAmlDoConcatenate ( Cleanup: - AcpiCmRemoveReference (RetDesc); + AcpiUtRemoveReference (RetDesc); return (Status); } /******************************************************************************* * - * FUNCTION: AcpiAmlExecDyadic1 + * FUNCTION: AcpiExDyadic1 * * PARAMETERS: Opcode - The opcode to be executed * @@ -322,7 +322,7 @@ Cleanup: ******************************************************************************/ ACPI_STATUS -AcpiAmlExecDyadic1 ( +AcpiExDyadic1 ( UINT16 Opcode, ACPI_WALK_STATE *WalkState) { @@ -332,14 +332,14 @@ AcpiAmlExecDyadic1 ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("AmlExecDyadic1", WALK_OPERANDS); + FUNCTION_TRACE_PTR ("ExDyadic1", WALK_OPERANDS); /* Resolve all operands */ - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Opcode, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 2, "after AcpiAmlResolveOperands"); + 2, "after AcpiExResolveOperands"); /* Get the operands */ @@ -349,9 +349,8 @@ AcpiAmlExecDyadic1 ( { /* Invalid parameters on object stack */ - DEBUG_PRINT (ACPI_ERROR, - ("ExecDyadic1/%s: bad operand(s) (Status=%X)\n", - AcpiPsGetOpcodeName (Opcode), Status)); + DEBUG_PRINTP (ACPI_ERROR, ("(%s) bad operand(s) %s\n", + AcpiPsGetOpcodeName (Opcode), AcpiUtFormatException (Status))); goto Cleanup; } @@ -381,29 +380,30 @@ AcpiAmlExecDyadic1 ( case ACPI_TYPE_THERMAL: /* - * Requires that Device and ThermalZone be compatible - * mappings + * 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. */ - /* Dispatch the notify to the appropriate handler */ - - AcpiEvNotifyDispatch (Node, (UINT32) ValDesc->Integer.Value); + Status = AcpiEvQueueNotifyRequest (Node, + (UINT32) ValDesc->Integer.Value); break; default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecDyadic1/NotifyOp: unexpected notify object type %X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Unexpected notify object type %X\n", ObjDesc->Common.Type)); Status = AE_AML_OPERAND_TYPE; + break; } } break; default: - REPORT_ERROR (("AcpiAmlExecDyadic1: Unknown dyadic opcode %X\n", - Opcode)); + REPORT_ERROR (("AcpiExDyadic1: Unknown dyadic opcode %X\n", Opcode)); Status = AE_AML_BAD_OPCODE; } @@ -412,8 +412,8 @@ Cleanup: /* Always delete both operands */ - AcpiCmRemoveReference (ValDesc); - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ValDesc); + AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); @@ -422,7 +422,7 @@ Cleanup: /******************************************************************************* * - * FUNCTION: AcpiAmlExecDyadic2R + * FUNCTION: AcpiExDyadic2R * * PARAMETERS: Opcode - The opcode to be executed * @@ -436,7 +436,7 @@ Cleanup: ******************************************************************************/ ACPI_STATUS -AcpiAmlExecDyadic2R ( +AcpiExDyadic2R ( UINT16 Opcode, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc) @@ -451,14 +451,14 @@ AcpiAmlExecDyadic2R ( UINT32 NumOperands = 3; - FUNCTION_TRACE_U32 ("AmlExecDyadic2R", Opcode); + FUNCTION_TRACE_U32 ("ExDyadic2R", Opcode); /* Resolve all operands */ - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Opcode, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - NumOperands, "after AcpiAmlResolveOperands"); + NumOperands, "after AcpiExResolveOperands"); /* Get all operands */ @@ -473,9 +473,8 @@ AcpiAmlExecDyadic2R ( Status |= AcpiDsObjStackPopObject (&ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("ExecDyadic2R/%s: bad operand(s) (Status=%X)\n", - AcpiPsGetOpcodeName (Opcode), Status)); + DEBUG_PRINTP (ACPI_ERROR, ("(%s) bad operand(s) (%s)\n", + AcpiPsGetOpcodeName (Opcode), AcpiUtFormatException (Status))); goto Cleanup; } @@ -497,7 +496,7 @@ AcpiAmlExecDyadic2R ( case AML_SHIFT_RIGHT_OP: case AML_SUBTRACT_OP: - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { Status = AE_NO_MEMORY; @@ -576,13 +575,13 @@ AcpiAmlExecDyadic2R ( if (!ObjDesc2->Integer.Value) { REPORT_ERROR - (("AmlExecDyadic2R/DivideOp: Divide by zero\n")); + (("ExDyadic2R/DivideOp: Divide by zero\n")); Status = AE_AML_DIVIDE_BY_ZERO; goto Cleanup; } - RetDesc2 = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc2 = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc2) { Status = AE_NO_MEMORY; @@ -653,15 +652,15 @@ AcpiAmlExecDyadic2R ( switch (ObjDesc->Common.Type) { case ACPI_TYPE_INTEGER: - Status = AcpiAmlConvertToInteger (&ObjDesc2, WalkState); + Status = AcpiExConvertToInteger (&ObjDesc2, WalkState); break; case ACPI_TYPE_STRING: - Status = AcpiAmlConvertToString (&ObjDesc2, WalkState); + Status = AcpiExConvertToString (&ObjDesc2, WalkState); break; case ACPI_TYPE_BUFFER: - Status = AcpiAmlConvertToBuffer (&ObjDesc2, WalkState); + Status = AcpiExConvertToBuffer (&ObjDesc2, WalkState); break; default: @@ -679,7 +678,7 @@ AcpiAmlExecDyadic2R ( * (Both are Integer, String, or Buffer), and we can now perform the * concatenation. */ - Status = AcpiAmlDoConcatenate (ObjDesc, ObjDesc2, &RetDesc, WalkState); + Status = AcpiExDoConcatenate (ObjDesc, ObjDesc2, &RetDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -689,7 +688,7 @@ AcpiAmlExecDyadic2R ( default: - REPORT_ERROR (("AcpiAmlExecDyadic2R: Unknown dyadic opcode %X\n", + REPORT_ERROR (("AcpiExDyadic2R: Unknown dyadic opcode %X\n", Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; @@ -702,7 +701,7 @@ AcpiAmlExecDyadic2R ( * descriptor (ResDesc). */ - Status = AcpiAmlExecStore (RetDesc, ResDesc, WalkState); + Status = AcpiExStore (RetDesc, ResDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -710,14 +709,14 @@ AcpiAmlExecDyadic2R ( if (AML_DIVIDE_OP == Opcode) { - Status = AcpiAmlExecStore (RetDesc2, ResDesc2, WalkState); + Status = AcpiExStore (RetDesc2, ResDesc2, WalkState); /* * Since the remainder is not returned, remove a reference to * the object we created earlier */ - AcpiCmRemoveReference (RetDesc2); + AcpiUtRemoveReference (RetDesc2); } @@ -725,8 +724,8 @@ Cleanup: /* Always delete the operands */ - AcpiCmRemoveReference (ObjDesc); - AcpiCmRemoveReference (ObjDesc2); + AcpiUtRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc2); /* Delete return object on error */ @@ -735,14 +734,14 @@ Cleanup: { /* On failure, delete the result ops */ - AcpiCmRemoveReference (ResDesc); - AcpiCmRemoveReference (ResDesc2); + AcpiUtRemoveReference (ResDesc); + AcpiUtRemoveReference (ResDesc2); if (RetDesc) { /* And delete the internal return object */ - AcpiCmRemoveReference (RetDesc); + AcpiUtRemoveReference (RetDesc); RetDesc = NULL; } } @@ -756,7 +755,7 @@ Cleanup: /******************************************************************************* * - * FUNCTION: AcpiAmlExecDyadic2S + * FUNCTION: AcpiExDyadic2S * * PARAMETERS: Opcode - The opcode to be executed * @@ -769,7 +768,7 @@ Cleanup: ******************************************************************************/ ACPI_STATUS -AcpiAmlExecDyadic2S ( +AcpiExDyadic2S ( UINT16 Opcode, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc) @@ -780,14 +779,14 @@ AcpiAmlExecDyadic2S ( ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("AmlExecDyadic2S", WALK_OPERANDS); + FUNCTION_TRACE_PTR ("ExDyadic2S", WALK_OPERANDS); /* Resolve all operands */ - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Opcode, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 2, "after AcpiAmlResolveOperands"); + 2, "after AcpiExResolveOperands"); /* Get all operands */ @@ -797,9 +796,8 @@ AcpiAmlExecDyadic2S ( { /* Invalid parameters on object stack */ - DEBUG_PRINT (ACPI_ERROR, - ("ExecDyadic2S/%s: bad operand(s) (Status=%X)\n", - AcpiPsGetOpcodeName (Opcode), Status)); + DEBUG_PRINTP (ACPI_ERROR, ("(%s) bad operand(s) %s\n", + AcpiPsGetOpcodeName (Opcode), AcpiUtFormatException (Status))); goto Cleanup; } @@ -807,7 +805,7 @@ AcpiAmlExecDyadic2S ( /* Create the internal return object */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { Status = AE_NO_MEMORY; @@ -828,7 +826,7 @@ AcpiAmlExecDyadic2S ( case AML_ACQUIRE_OP: - Status = AcpiAmlSystemAcquireMutex (TimeDesc, ObjDesc); + Status = AcpiExAcquireMutex (TimeDesc, ObjDesc, WalkState); break; @@ -836,13 +834,13 @@ AcpiAmlExecDyadic2S ( case AML_WAIT_OP: - Status = AcpiAmlSystemWaitEvent (TimeDesc, ObjDesc); + Status = AcpiExSystemWaitEvent (TimeDesc, ObjDesc); break; default: - REPORT_ERROR (("AcpiAmlExecDyadic2S: Unknown dyadic synchronization opcode %X\n", Opcode)); + REPORT_ERROR (("AcpiExDyadic2S: Unknown dyadic synchronization opcode %X\n", Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } @@ -864,15 +862,15 @@ Cleanup: /* Delete params */ - AcpiCmRemoveReference (TimeDesc); - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (TimeDesc); + AcpiUtRemoveReference (ObjDesc); /* Delete return object on error */ if (ACPI_FAILURE (Status) && (RetDesc)) { - AcpiCmRemoveReference (RetDesc); + AcpiUtRemoveReference (RetDesc); RetDesc = NULL; } @@ -886,7 +884,7 @@ Cleanup: /******************************************************************************* * - * FUNCTION: AcpiAmlExecDyadic2 + * FUNCTION: AcpiExDyadic2 * * PARAMETERS: Opcode - The opcode to be executed * @@ -901,7 +899,7 @@ Cleanup: ******************************************************************************/ ACPI_STATUS -AcpiAmlExecDyadic2 ( +AcpiExDyadic2 ( UINT16 Opcode, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc) @@ -913,14 +911,14 @@ AcpiAmlExecDyadic2 ( BOOLEAN Lboolean; - FUNCTION_TRACE_PTR ("AmlExecDyadic2", WALK_OPERANDS); + FUNCTION_TRACE_PTR ("ExDyadic2", WALK_OPERANDS); /* Resolve all operands */ - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Opcode, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 2, "after AcpiAmlResolveOperands"); + 2, "after AcpiExResolveOperands"); /* Get all operands */ @@ -930,9 +928,8 @@ AcpiAmlExecDyadic2 ( { /* Invalid parameters on object stack */ - DEBUG_PRINT (ACPI_ERROR, - ("ExecDyadic2/%s: bad operand(s) (Status=%X)\n", - AcpiPsGetOpcodeName (Opcode), Status)); + DEBUG_PRINTP (ACPI_ERROR, ("(%s) bad operand(s) %s\n", + AcpiPsGetOpcodeName (Opcode), AcpiUtFormatException (Status))); goto Cleanup; } @@ -940,7 +937,7 @@ AcpiAmlExecDyadic2 ( /* Create the internal return object */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { Status = AE_NO_MEMORY; @@ -1002,7 +999,7 @@ AcpiAmlExecDyadic2 ( default: - REPORT_ERROR (("AcpiAmlExecDyadic2: Unknown dyadic opcode %X\n", Opcode)); + REPORT_ERROR (("AcpiExDyadic2: Unknown dyadic opcode %X\n", Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; break; @@ -1025,8 +1022,8 @@ Cleanup: /* Always delete operands */ - AcpiCmRemoveReference (ObjDesc); - AcpiCmRemoveReference (ObjDesc2); + AcpiUtRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc2); /* Delete return object on error */ @@ -1034,7 +1031,7 @@ Cleanup: if (ACPI_FAILURE (Status) && (RetDesc)) { - AcpiCmRemoveReference (RetDesc); + AcpiUtRemoveReference (RetDesc); RetDesc = NULL; } diff --git a/sys/contrib/dev/acpica/exfield.c b/sys/contrib/dev/acpica/exfield.c index 62c77a7..f0f7c3d 100644 --- a/sys/contrib/dev/acpica/exfield.c +++ b/sys/contrib/dev/acpica/exfield.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: amfield - ACPI AML (p-code) execution - field manipulation - * $Revision: 77 $ + * Module Name: exfield - ACPI AML (p-code) execution - field manipulation + * $Revision: 90 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ *****************************************************************************/ -#define __AMFIELD_C__ +#define __EXFIELD_C__ #include "acpi.h" #include "acdispat.h" @@ -126,146 +126,144 @@ #include "acevents.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amfield") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exfield") /******************************************************************************* * - * FUNCTION: AcpiAmlSetupField + * FUNCTION: AcpiExReadDataFromField * - * PARAMETERS: *ObjDesc - Field to be read or written - * *RgnDesc - Region containing field - * FieldBitWidth - Field Width in bits (8, 16, or 32) - * - * RETURN: Status - * - * DESCRIPTION: Common processing for AcpiAmlReadField and AcpiAmlWriteField + * PARAMETERS: Mode - ACPI_READ or ACPI_WRITE + * *FieldNode - Parent node for field to be accessed + * *Buffer - Value(s) to be read or written + * BufferLength - Number of bytes to transfer * - * ACPI SPECIFICATION REFERENCES: - * Each of the Type1Opcodes is defined as specified in in-line - * comments below. For each one, use the following definitions. + * RETURN: Status3 * - * DefBitField := BitFieldOp SrcBuf BitIdx Destination - * DefByteField := ByteFieldOp SrcBuf ByteIdx Destination - * DefCreateField := CreateFieldOp SrcBuf BitIdx NumBits NameString - * DefDWordField := DWordFieldOp SrcBuf ByteIdx Destination - * DefWordField := WordFieldOp SrcBuf ByteIdx Destination - * BitIndex := TermArg=>Integer - * ByteIndex := TermArg=>Integer - * Destination := NameString - * NumBits := TermArg=>Integer - * SourceBuf := TermArg=>Buffer + * DESCRIPTION: Read or write a named field * ******************************************************************************/ ACPI_STATUS -AcpiAmlSetupField ( +AcpiExReadDataFromField ( ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *RgnDesc, - UINT32 FieldBitWidth) + ACPI_OPERAND_OBJECT **RetBufferDesc) { - ACPI_STATUS Status = AE_OK; - UINT32 FieldByteWidth; + ACPI_STATUS Status; + ACPI_OPERAND_OBJECT *BufferDesc; + UINT32 Length; + void *Buffer; - FUNCTION_TRACE ("AmlSetupField"); + FUNCTION_TRACE_PTR ("ExReadDataFromField", ObjDesc); /* Parameter validation */ - if (!ObjDesc || !RgnDesc) + if (!ObjDesc) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlSetupField: Internal error - null handle\n")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } - if (ACPI_TYPE_REGION != RgnDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlSetupField: Needed Region, found type %x %s\n", - RgnDesc->Common.Type, AcpiCmGetTypeName (RgnDesc->Common.Type))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * TBD: [Future] Acpi 2.0 supports Qword fields + * Allocate a buffer for the contents of the field. * - * Init and validate Field width - * Possible values are 1, 2, 4 + * 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. */ - FieldByteWidth = DIV_8 (FieldBitWidth); + Length = ROUND_BITS_UP_TO_BYTES (ObjDesc->Field.BitLength); - if ((FieldBitWidth != 8) && - (FieldBitWidth != 16) && - (FieldBitWidth != 32)) + if (Length > sizeof (ACPI_INTEGER)) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlSetupField: Internal error - bad width %d\n", FieldBitWidth)); - return_ACPI_STATUS (AE_AML_OPERAND_VALUE); - } + /* Field is too large for an Integer, create a Buffer instead */ + BufferDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); + if (!BufferDesc) + { + return_ACPI_STATUS (AE_NO_MEMORY); + } - /* - * If the Region Address and Length have not been previously evaluated, - * evaluate them and save the results. - */ - if (!(RgnDesc->Region.Flags & AOPOBJ_DATA_VALID)) - { + /* Create the actual read buffer */ - Status = AcpiDsGetRegionArguments (RgnDesc); - if (ACPI_FAILURE (Status)) + BufferDesc->Buffer.Pointer = AcpiUtCallocate (Length); + if (!BufferDesc->Buffer.Pointer) { - return_ACPI_STATUS (Status); + AcpiUtRemoveReference (BufferDesc); + return_ACPI_STATUS (AE_NO_MEMORY); } - } + BufferDesc->Buffer.Length = Length; + Buffer = BufferDesc->Buffer.Pointer; + } - if ((ObjDesc->Common.Type == ACPI_TYPE_FIELD_UNIT) && - (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID))) + else { - /* - * Field Buffer and Index have not been previously evaluated, - */ - DEBUG_PRINT (ACPI_ERROR, ("Uninitialized field!\n")); - return_ACPI_STATUS (AE_AML_INTERNAL); + /* Field will fit within an Integer (normal case) */ + + BufferDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); + if (!BufferDesc) + { + return_ACPI_STATUS (AE_NO_MEMORY); + } + + Length = sizeof (BufferDesc->Integer.Value); + Buffer = &BufferDesc->Integer.Value; } - if (RgnDesc->Region.Length < - (ObjDesc->Field.Offset & ~((UINT32) FieldByteWidth - 1)) + - FieldByteWidth) + + /* Read from the appropriate field */ + + switch (ObjDesc->Common.Type) { - /* - * Offset rounded up to next multiple of field width - * exceeds region length, indicate an error - */ + case ACPI_TYPE_BUFFER_FIELD: + Status = AcpiExAccessBufferField (ACPI_READ, ObjDesc, Buffer, Length); + break; + + case INTERNAL_TYPE_REGION_FIELD: + Status = AcpiExAccessRegionField (ACPI_READ, ObjDesc, Buffer, Length); + break; - DUMP_STACK_ENTRY (RgnDesc); - DUMP_STACK_ENTRY (ObjDesc); + case INTERNAL_TYPE_BANK_FIELD: + Status = AcpiExAccessBankField (ACPI_READ, ObjDesc, Buffer, Length); + break; - DEBUG_PRINT (ACPI_ERROR, - ("AmlSetupField: Operation at %08lX width %d bits exceeds len %08lX field=%p region=%p\n", - ObjDesc->Field.Offset, FieldBitWidth, RgnDesc->Region.Length, - ObjDesc, RgnDesc)); + case INTERNAL_TYPE_INDEX_FIELD: + Status = AcpiExAccessIndexField (ACPI_READ, ObjDesc, Buffer, Length); + break; - return_ACPI_STATUS (AE_AML_REGION_LIMIT); + default: + Status = AE_AML_INTERNAL; } - return_ACPI_STATUS (AE_OK); + + if (ACPI_FAILURE (Status)) + { + AcpiUtRemoveReference (BufferDesc); + } + + else if (RetBufferDesc) + { + *RetBufferDesc = BufferDesc; + } + + return_ACPI_STATUS (Status); } /******************************************************************************* * - * FUNCTION: AcpiAmlAccessNamedField + * FUNCTION: AcpiExWriteDataToField * * PARAMETERS: Mode - ACPI_READ or ACPI_WRITE - * NamedField - Handle for field to be accessed + * *FieldNode - Parent node for field to be accessed * *Buffer - Value(s) to be read or written - * BufferLength - Number of bytes to transfer + * BufferLength - Number of bytes to transfer * * RETURN: Status * @@ -273,175 +271,369 @@ AcpiAmlSetupField ( * ******************************************************************************/ + ACPI_STATUS -AcpiAmlAccessNamedField ( - UINT32 Mode, - ACPI_HANDLE NamedField, - void *Buffer, - UINT32 BufferLength) +AcpiExWriteDataToField ( + ACPI_OPERAND_OBJECT *SourceDesc, + ACPI_OPERAND_OBJECT *ObjDesc) { - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - ACPI_STATUS Status = AE_OK; - BOOLEAN Locked = FALSE; - UINT32 BitGranularity = 0; - UINT32 ByteGranularity; - UINT32 DatumLength; - UINT32 ActualByteLength; - UINT32 ByteFieldLength; + ACPI_STATUS Status; + UINT32 Length; + void *Buffer; - FUNCTION_TRACE_PTR ("AmlAccessNamedField", NamedField); + FUNCTION_TRACE_PTR ("ExWriteDataToField", ObjDesc); /* Parameter validation */ - if ((!NamedField) || (ACPI_READ == Mode && !Buffer)) + if (!SourceDesc || !ObjDesc) { - DEBUG_PRINT (ACPI_ERROR, - ("AcpiAmlAccessNamedField: Internal error - null parameter\n")); - return_ACPI_STATUS (AE_AML_INTERNAL); + return_ACPI_STATUS (AE_AML_NO_OPERAND); } - /* Get the attached field object */ - ObjDesc = AcpiNsGetAttachedObject (NamedField); - if (!ObjDesc) + /* + * Get a pointer to the data to be written + */ + switch (SourceDesc->Common.Type) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlAccessNamedField: Internal error - null value pointer\n")); - return_ACPI_STATUS (AE_AML_INTERNAL); + 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); } - /* Check the type */ - if (INTERNAL_TYPE_DEF_FIELD != AcpiNsGetType (NamedField)) + /* + * Decode the type of field to be written + */ + switch (ObjDesc->Common.Type) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlAccessNamedField: Name %4.4s type %x is not a defined field\n", - &(((ACPI_NAMESPACE_NODE *) NamedField)->Name), - AcpiNsGetType (NamedField))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); + case ACPI_TYPE_BUFFER_FIELD: + Status = AcpiExAccessBufferField (ACPI_WRITE, ObjDesc, Buffer, Length); + break; + + case INTERNAL_TYPE_REGION_FIELD: + Status = AcpiExAccessRegionField (ACPI_WRITE, ObjDesc, Buffer, Length); + break; + + case INTERNAL_TYPE_BANK_FIELD: + Status = AcpiExAccessBankField (ACPI_WRITE, ObjDesc, Buffer, Length); + break; + + case INTERNAL_TYPE_INDEX_FIELD: + Status = AcpiExAccessIndexField (ACPI_WRITE, ObjDesc, Buffer, Length); + break; + + default: + return_ACPI_STATUS (AE_AML_INTERNAL); } - /* ObjDesc valid and NamedField is a defined field */ - DEBUG_PRINT (ACPI_INFO, - ("AccessNamedField: Obj=%p Type=%x Buf=%p Len=%x\n", - ObjDesc, ObjDesc->Common.Type, Buffer, BufferLength)); - DEBUG_PRINT (ACPI_INFO, - ("AccessNamedField: Mode=%d FieldLen=%d, BitOffset=%d\n", - Mode, ObjDesc->FieldUnit.Length, ObjDesc->FieldUnit.BitOffset)); - DUMP_ENTRY (NamedField, ACPI_INFO); + return_ACPI_STATUS (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExAccessBufferField + * + * PARAMETERS: Mode - ACPI_READ or ACPI_WRITE + * *FieldNode - Parent node for field to be accessed + * *Buffer - Value(s) to be read or written + * BufferLength - Number of bytes to transfer + * + * RETURN: Status + * + * DESCRIPTION: Read or write a named field + * + ******************************************************************************/ +ACPI_STATUS +AcpiExAccessBufferField ( + UINT32 Mode, + ACPI_OPERAND_OBJECT *ObjDesc, + void *Buffer, + UINT32 BufferLength) +{ + ACPI_STATUS Status; + + + FUNCTION_TRACE_PTR ("AcpiExAccessBufferField", ObjDesc); - /* Double-check that the attached object is also a field */ - if (INTERNAL_TYPE_DEF_FIELD != ObjDesc->Common.Type) + /* + * If the BufferField arguments have not been previously evaluated, + * evaluate them now and save the results. + */ + if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlAccessNamedField: Internal error - Name %4.4s type %x does not match value-type %x at %p\n", - &(((ACPI_NAMESPACE_NODE *) NamedField)->Name), - AcpiNsGetType (NamedField), ObjDesc->Common.Type, ObjDesc)); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); + Status = AcpiDsGetBufferFieldArguments (ObjDesc); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } } + Status = AcpiExCommonAccessField (Mode, ObjDesc, Buffer, BufferLength); + + return_ACPI_STATUS (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExAccessRegionField + * + * PARAMETERS: Mode - ACPI_READ or ACPI_WRITE + * *FieldNode - Parent node for field to be accessed + * *Buffer - Value(s) to be read or written + * BufferLength - Number of bytes to transfer + * + * RETURN: Status + * + * DESCRIPTION: Read or write a named field + * + ******************************************************************************/ + +ACPI_STATUS +AcpiExAccessRegionField ( + UINT32 Mode, + ACPI_OPERAND_OBJECT *ObjDesc, + void *Buffer, + UINT32 BufferLength) +{ + ACPI_STATUS Status; + BOOLEAN Locked; + + + FUNCTION_TRACE_PTR ("ExAccessRegionField", ObjDesc); + + /* - * Granularity was decoded from the field access type - * (AnyAcc will be the same as ByteAcc) + * Get the global lock if needed */ + Locked = AcpiExAcquireGlobalLock (ObjDesc->Field.LockRule); + + Status = AcpiExCommonAccessField (Mode, ObjDesc, Buffer, BufferLength); - BitGranularity = ObjDesc->FieldUnit.Granularity; - ByteGranularity = DIV_8 (BitGranularity); /* - * Check if request is too large for the field, and silently truncate - * if necessary + * Release global lock if we acquired it earlier */ + AcpiExReleaseGlobalLock (Locked); + + return_ACPI_STATUS (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExAccessBankField + * + * PARAMETERS: Mode - ACPI_READ or ACPI_WRITE + * *FieldNode - Parent node for field to be accessed + * *Buffer - Value(s) to be read or written + * BufferLength - Number of bytes to transfer + * + * RETURN: Status + * + * DESCRIPTION: Read or write a Bank Field + * + ******************************************************************************/ - /* TBD: [Errors] should an error be returned in this case? */ +ACPI_STATUS +AcpiExAccessBankField ( + UINT32 Mode, + ACPI_OPERAND_OBJECT *ObjDesc, + void *Buffer, + UINT32 BufferLength) +{ + ACPI_STATUS Status; + BOOLEAN Locked; - ByteFieldLength = (UINT32) DIV_8 (ObjDesc->FieldUnit.Length + 7); + FUNCTION_TRACE_PTR ("ExAccessBankField", ObjDesc); - ActualByteLength = BufferLength; - if (BufferLength > ByteFieldLength) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlAccessNamedField: Byte length %X truncated to %X\n", - ActualByteLength, ByteFieldLength)); - ActualByteLength = ByteFieldLength; - } + /* + * Get the global lock if needed + */ + Locked = AcpiExAcquireGlobalLock (ObjDesc->BankField.LockRule); - /* TBD: should these round down to a power of 2? */ - if (DIV_8 (BitGranularity) > ByteFieldLength) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlAccessNamedField: Bit granularity %X truncated to %X\n", - BitGranularity, MUL_8(ByteFieldLength))); + /* + * Write the BankValue to the BankRegister to select the bank. + * The BankValue for this BankField is specified in the + * BankField ASL declaration. The BankRegister is always a Field in + * an operation region. + */ - BitGranularity = MUL_8(ByteFieldLength); + Status = AcpiExCommonAccessField (ACPI_WRITE, + ObjDesc->BankField.BankRegisterObj, + &ObjDesc->BankField.Value, + sizeof (ObjDesc->BankField.Value)); + if (ACPI_FAILURE (Status)) + { + goto Cleanup; } - if (ByteGranularity > ByteFieldLength) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlAccessNamedField: Byte granularity %X truncated to %X\n", - ByteGranularity, ByteFieldLength)); + /* + * The bank was successfully selected, now read or write the actual + * data. + */ + Status = AcpiExCommonAccessField (Mode, ObjDesc, Buffer, BufferLength); + + +Cleanup: + /* + * Release global lock if we acquired it earlier + */ + AcpiExReleaseGlobalLock (Locked); + + return_ACPI_STATUS (Status); +} + - ByteGranularity = ByteFieldLength; +/******************************************************************************* + * + * FUNCTION: AcpiExAccessIndexField + * + * PARAMETERS: Mode - ACPI_READ or ACPI_WRITE + * *FieldNode - Parent node for field to be accessed + * *Buffer - Value(s) to be read or written + * BufferLength - Number of bytes to transfer + * + * RETURN: Status + * + * DESCRIPTION: Read or write a Index Field + * + ******************************************************************************/ + +ACPI_STATUS +AcpiExAccessIndexField ( + UINT32 Mode, + ACPI_OPERAND_OBJECT *ObjDesc, + void *Buffer, + UINT32 BufferLength) +{ + ACPI_STATUS Status; + BOOLEAN Locked; + + + FUNCTION_TRACE_PTR ("ExAccessIndexField", ObjDesc); + + + /* + * Get the global lock if needed + */ + Locked = AcpiExAcquireGlobalLock (ObjDesc->IndexField.LockRule); + + + /* + * Set Index value to select proper Data register + */ + Status = AcpiExCommonAccessField (ACPI_WRITE, + ObjDesc->IndexField.IndexObj, + &ObjDesc->IndexField.Value, + sizeof (ObjDesc->IndexField.Value)); + if (ACPI_FAILURE (Status)) + { + goto Cleanup; } + /* Now read/write the data register */ - /* Convert byte count to datum count, round up if necessary */ + Status = AcpiExCommonAccessField (Mode, ObjDesc->IndexField.DataObj, + Buffer, BufferLength); - DatumLength = (ActualByteLength + (ByteGranularity-1)) / ByteGranularity; +Cleanup: + /* + * Release global lock if we acquired it earlier + */ + AcpiExReleaseGlobalLock (Locked); + + return_ACPI_STATUS (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExCommonAccessField + * + * PARAMETERS: Mode - ACPI_READ or ACPI_WRITE + * *FieldNode - Parent node for field to be accessed + * *Buffer - Value(s) to be read or written + * BufferLength - Size of buffer, in bytes. Must be large + * enough for all bits of the field. + * + * RETURN: Status + * + * DESCRIPTION: Read or write a named field + * + ******************************************************************************/ + +ACPI_STATUS +AcpiExCommonAccessField ( + UINT32 Mode, + ACPI_OPERAND_OBJECT *ObjDesc, + void *Buffer, + UINT32 BufferLength) +{ + ACPI_STATUS Status; - DEBUG_PRINT (ACPI_INFO, - ("ByteLen=%x, DatumLen=%x, BitGran=%x, ByteGran=%x\n", - ActualByteLength, DatumLength, BitGranularity, ByteGranularity)); + FUNCTION_TRACE_PTR ("ExCommonAccessField", ObjDesc); - /* Get the global lock if needed */ - Locked = AcpiAmlAcquireGlobalLock (ObjDesc->FieldUnit.LockRule); + DEBUG_PRINTP (ACPI_INFO, ("Obj=%p Type=%X Buf=%p Len=%X\n", + ObjDesc, ObjDesc->Common.Type, Buffer, BufferLength)); + DEBUG_PRINTP (ACPI_INFO, ("Mode=%d BitLen=%X BitOff=%X ByteOff=%X\n", + Mode, ObjDesc->CommonField.BitLength, + ObjDesc->CommonField.StartFieldBitOffset, + ObjDesc->CommonField.BaseByteOffset)); - /* Perform the actual read or write of the buffer */ + + /* Perform the actual read or write of the field */ switch (Mode) { case ACPI_READ: - Status = AcpiAmlReadField (ObjDesc, Buffer, BufferLength, - ActualByteLength, DatumLength, - BitGranularity, ByteGranularity); + Status = AcpiExExtractFromField (ObjDesc, Buffer, BufferLength); break; case ACPI_WRITE: - Status = AcpiAmlWriteField (ObjDesc, Buffer, BufferLength, - ActualByteLength, DatumLength, - BitGranularity, ByteGranularity); + Status = AcpiExInsertIntoField (ObjDesc, Buffer, BufferLength); break; default: - DEBUG_PRINT (ACPI_ERROR, - ("AccessNamedField: Unknown I/O Mode: %X\n", Mode)); + DEBUG_PRINTP (ACPI_ERROR, ("Unknown I/O Mode: %X\n", Mode)); Status = AE_BAD_PARAMETER; break; } - /* Release global lock if we acquired it earlier */ - - AcpiAmlReleaseGlobalLock (Locked); - return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/exfldio.c b/sys/contrib/dev/acpica/exfldio.c index 24c9a2a..96f3227 100644 --- a/sys/contrib/dev/acpica/exfldio.c +++ b/sys/contrib/dev/acpica/exfldio.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: amfldio - Aml Field I/O - * $Revision: 39 $ + * Module Name: exfldio - Aml Field I/O + * $Revision: 57 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ *****************************************************************************/ -#define __AMFLDIO_C__ +#define __EXFLDIO_C__ #include "acpi.h" #include "acinterp.h" @@ -123,116 +123,324 @@ #include "acnamesp.h" #include "achware.h" #include "acevents.h" +#include "acdispat.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amfldio") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exfldio") /******************************************************************************* * - * FUNCTION: AcpiAmlReadFieldData + * FUNCTION: AcpiExSetupField * - * PARAMETERS: *ObjDesc - Field to be read - * *Value - Where to store value - * FieldBitWidth - Field Width in bits (8, 16, or 32) + * PARAMETERS: *ObjDesc - Field to be read or written + * FieldDatumByteOffset - Current offset into the field * * RETURN: Status * - * DESCRIPTION: Retrieve the value of the given field + * DESCRIPTION: Common processing for AcpiExExtractFromField and + * AcpiExInsertIntoField * ******************************************************************************/ ACPI_STATUS -AcpiAmlReadFieldData ( +AcpiExSetupField ( ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldByteOffset, - UINT32 FieldBitWidth, - UINT32 *Value) + UINT32 FieldDatumByteOffset) { - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *RgnDesc = NULL; - ACPI_PHYSICAL_ADDRESS Address; - UINT32 LocalValue = 0; - UINT32 FieldByteWidth; + ACPI_STATUS Status = AE_OK; + ACPI_OPERAND_OBJECT *RgnDesc; - FUNCTION_TRACE ("AmlReadFieldData"); + FUNCTION_TRACE ("ExSetupField"); - /* ObjDesc is validated by callers */ + /* Parameter validation */ - if (ObjDesc) + RgnDesc = ObjDesc->CommonField.RegionObj; + if (!ObjDesc || !RgnDesc) { - RgnDesc = ObjDesc->Field.Container; + DEBUG_PRINTP (ACPI_ERROR, ("Internal error - null handle\n")); + return_ACPI_STATUS (AE_AML_NO_OPERAND); } + if (ACPI_TYPE_REGION != RgnDesc->Common.Type) + { + DEBUG_PRINTP (ACPI_ERROR, ("Needed Region, found type %x %s\n", + RgnDesc->Common.Type, AcpiUtGetTypeName (RgnDesc->Common.Type))); + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); + } - FieldByteWidth = DIV_8 (FieldBitWidth); - Status = AcpiAmlSetupField (ObjDesc, RgnDesc, FieldBitWidth); - if (ACPI_FAILURE (Status)) + + /* + * If the Region Address and Length have not been previously evaluated, + * evaluate them now and save the results. + */ + if (!(RgnDesc->Region.Flags & AOPOBJ_DATA_VALID)) { - return_ACPI_STATUS (Status); + + Status = AcpiDsGetRegionArguments (RgnDesc); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } } - /* SetupField validated RgnDesc and FieldBitWidth */ + + /* + * 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 (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. + */ + DEBUG_PRINTP (ACPI_ERROR, + ("Field access width (%d bytes) too large for region size (%X)\n", + ObjDesc->CommonField.AccessByteWidth, RgnDesc->Region.Length)); + } + + /* + * Offset rounded up to next multiple of field width + * exceeds region length, indicate an error + */ + DEBUG_PRINTP (ACPI_ERROR, + ("Field base+offset+width %X+%X+%X exceeds region size (%X bytes) field=%p region=%p\n", + ObjDesc->CommonField.BaseByteOffset, FieldDatumByteOffset, + ObjDesc->CommonField.AccessByteWidth, + RgnDesc->Region.Length, ObjDesc, RgnDesc)); + + return_ACPI_STATUS (AE_AML_REGION_LIMIT); + } + + return_ACPI_STATUS (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExReadFieldDatum + * + * PARAMETERS: *ObjDesc - Field to be read + * *Value - Where to store value (must be 32 bits) + * + * RETURN: Status + * + * DESCRIPTION: Retrieve the value of the given field + * + ******************************************************************************/ + +ACPI_STATUS +AcpiExReadFieldDatum ( + ACPI_OPERAND_OBJECT *ObjDesc, + UINT32 FieldDatumByteOffset, + UINT32 *Value) +{ + ACPI_STATUS Status; + ACPI_OPERAND_OBJECT *RgnDesc; + ACPI_PHYSICAL_ADDRESS Address; + UINT32 LocalValue; + + + FUNCTION_TRACE_U32 ("ExReadFieldDatum", FieldDatumByteOffset); + if (!Value) { + LocalValue = 0; Value = &LocalValue; /* support reads without saving value */ } + /* Clear the entire return buffer first, [Very Important!] */ + + *Value = 0; + /* - * Set offset to next multiple of field width, - * add region base address and offset within the field + * BufferFields - Read from a Buffer + * Other Fields - Read from a Operation Region. */ - Address = RgnDesc->Region.Address + - (ObjDesc->Field.Offset * FieldByteWidth) + - FieldByteOffset; + switch (ObjDesc->Common.Type) + { + case ACPI_TYPE_BUFFER_FIELD: + + /* + * For BufferFields, we only need to copy the data from the + * source buffer. Length is the field width in bytes. + */ + MEMCPY (Value, (ObjDesc->BufferField.BufferObj)->Buffer.Pointer + + ObjDesc->BufferField.BaseByteOffset + FieldDatumByteOffset, + ObjDesc->CommonField.AccessByteWidth); + Status = AE_OK; + break; + + + case INTERNAL_TYPE_REGION_FIELD: + case INTERNAL_TYPE_BANK_FIELD: - DEBUG_PRINT (TRACE_OPREGION, - ("AmlReadFieldData: Region %s(%X) at %08lx width %X\n", - AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId, Address, - FieldBitWidth)); + /* + * For other fields, we need to go through an Operation Region + * (Only types that will get here are RegionFields and BankFields) + */ + Status = AcpiExSetupField (ObjDesc, FieldDatumByteOffset); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } - /* Invoke the appropriate AddressSpace/OpRegion handler */ + /* + * 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; - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ADDRESS_SPACE_READ, - Address, FieldBitWidth, Value); + DEBUG_PRINTP (TRACE_BFIELD, ("Region %s(%X) width %X base:off %X:%X at %08lX\n", + AcpiUtGetRegionName (RgnDesc->Region.SpaceId), + RgnDesc->Region.SpaceId, ObjDesc->CommonField.AccessBitWidth, + ObjDesc->CommonField.BaseByteOffset, FieldDatumByteOffset, + Address)); - if (Status == AE_NOT_IMPLEMENTED) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlReadFieldData: **** Region %s(%X) not implemented\n", - AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId)); + + /* Invoke the appropriate AddressSpace/OpRegion handler */ + + Status = AcpiEvAddressSpaceDispatch (RgnDesc, ACPI_READ_ADR_SPACE, + Address, ObjDesc->CommonField.AccessBitWidth, Value); + if (Status == AE_NOT_IMPLEMENTED) + { + DEBUG_PRINTP (ACPI_ERROR, ("Region %s(%X) not implemented\n", + AcpiUtGetRegionName (RgnDesc->Region.SpaceId), + RgnDesc->Region.SpaceId)); + } + + else if (Status == AE_NOT_EXIST) + { + DEBUG_PRINTP (ACPI_ERROR, ("Region %s(%X) has no handler\n", + AcpiUtGetRegionName (RgnDesc->Region.SpaceId), + RgnDesc->Region.SpaceId)); + } + break; + + + default: + + DEBUG_PRINTP (ACPI_ERROR, ("%p, wrong source type - %s\n", + ObjDesc, AcpiUtGetTypeName (ObjDesc->Common.Type))); + Status = AE_AML_INTERNAL; + break; } - else if (Status == AE_NOT_EXIST) + + DEBUG_PRINTP (TRACE_BFIELD, ("Returned value=%08lX \n", *Value)); + + return_ACPI_STATUS (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExGetBufferDatum + * + * PARAMETERS: MergedDatum - Value to store + * Buffer - Receiving buffer + * ByteGranularity - 1/2/4 Granularity of the field + * (aka Datum Size) + * Offset - Datum offset into the buffer + * + * RETURN: none + * + * DESCRIPTION: Store the merged datum to the buffer according to the + * byte granularity + * + ******************************************************************************/ + +static void +AcpiExGetBufferDatum( + UINT32 *Datum, + void *Buffer, + UINT32 ByteGranularity, + UINT32 Offset) +{ + + switch (ByteGranularity) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlReadFieldData: **** Region %s(%X) has no handler\n", - AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId)); + case ACPI_FIELD_BYTE_GRANULARITY: + *Datum = ((UINT8 *) Buffer) [Offset]; + break; + + case ACPI_FIELD_WORD_GRANULARITY: + MOVE_UNALIGNED16_TO_32 (Datum, &(((UINT16 *) Buffer) [Offset])); + break; + + case ACPI_FIELD_DWORD_GRANULARITY: + MOVE_UNALIGNED32_TO_32 (Datum, &(((UINT32 *) Buffer) [Offset])); + break; } +} - DEBUG_PRINT (TRACE_OPREGION, - ("AmlReadField: Returned value=%08lx \n", *Value)); - return_ACPI_STATUS (Status); +/******************************************************************************* + * + * FUNCTION: AcpiExSetBufferDatum + * + * PARAMETERS: MergedDatum - Value to store + * Buffer - Receiving buffer + * ByteGranularity - 1/2/4 Granularity of the field + * (aka Datum Size) + * Offset - Datum offset into the buffer + * + * RETURN: none + * + * DESCRIPTION: Store the merged datum to the buffer according to the + * byte granularity + * + ******************************************************************************/ + +static void +AcpiExSetBufferDatum ( + UINT32 MergedDatum, + void *Buffer, + UINT32 ByteGranularity, + UINT32 Offset) +{ + + switch (ByteGranularity) + { + case ACPI_FIELD_BYTE_GRANULARITY: + ((UINT8 *) Buffer) [Offset] = (UINT8) MergedDatum; + break; + + case ACPI_FIELD_WORD_GRANULARITY: + MOVE_UNALIGNED16_TO_16 (&(((UINT16 *) Buffer)[Offset]), &MergedDatum); + break; + + case ACPI_FIELD_DWORD_GRANULARITY: + MOVE_UNALIGNED32_TO_32 (&(((UINT32 *) Buffer)[Offset]), &MergedDatum); + break; + } } /******************************************************************************* * - * FUNCTION: AcpiAmlReadField + * FUNCTION: AcpiExExtractFromField * * PARAMETERS: *ObjDesc - Field to be read * *Value - Where to store value - * FieldBitWidth - Field Width in bits (8, 16, or 32) * * RETURN: Status * @@ -241,218 +449,186 @@ AcpiAmlReadFieldData ( ******************************************************************************/ ACPI_STATUS -AcpiAmlReadField ( +AcpiExExtractFromField ( ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, - UINT32 BufferLength, - UINT32 ByteLength, - UINT32 DatumLength, - UINT32 BitGranularity, - UINT32 ByteGranularity) + UINT32 BufferLength) { ACPI_STATUS Status; - UINT32 ThisFieldByteOffset; - UINT32 ThisFieldDatumOffset; + UINT32 FieldDatumByteOffset; + UINT32 DatumOffset; UINT32 PreviousRawDatum; UINT32 ThisRawDatum = 0; - UINT32 ValidFieldBits; - UINT32 Mask; UINT32 MergedDatum = 0; + UINT32 ByteFieldLength; + UINT32 DatumCount; + + FUNCTION_TRACE ("ExExtractFromField"); + + + /* + * The field must fit within the caller's buffer + */ + ByteFieldLength = ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength); + if (ByteFieldLength > BufferLength) + { + DEBUG_PRINTP (ACPI_INFO, ("Field size %X (bytes) too large for buffer (%X)\n", + ByteFieldLength, BufferLength)); + + return_ACPI_STATUS (AE_BUFFER_OVERFLOW); + } + + /* Convert field byte count to datum count, round up if necessary */ + + DatumCount = ROUND_UP_TO (ByteFieldLength, ObjDesc->CommonField.AccessByteWidth); + + DEBUG_PRINT (ACPI_INFO, + ("ByteLen=%x, DatumLen=%x, BitGran=%x, ByteGran=%x\n", + ByteFieldLength, DatumCount, ObjDesc->CommonField.AccessBitWidth, + ObjDesc->CommonField.AccessByteWidth)); - FUNCTION_TRACE ("AmlReadField"); /* * Clear the caller's buffer (the whole buffer length as given) * This is very important, especially in the cases where a byte is read, * but the buffer is really a UINT32 (4 bytes). */ - MEMSET (Buffer, 0, BufferLength); /* Read the first raw datum to prime the loop */ - ThisFieldByteOffset = 0; - ThisFieldDatumOffset= 0; + FieldDatumByteOffset = 0; + DatumOffset= 0; - Status = AcpiAmlReadFieldData (ObjDesc, ThisFieldByteOffset, BitGranularity, - &PreviousRawDatum); + Status = AcpiExReadFieldDatum (ObjDesc, FieldDatumByteOffset, &PreviousRawDatum); if (ACPI_FAILURE (Status)) { - goto Cleanup; + return_ACPI_STATUS (Status); } + /* We might actually be done if the request fits in one datum */ - if ((DatumLength == 1) && - ((ObjDesc->Field.BitOffset + ObjDesc->FieldUnit.Length) <= - (UINT16) BitGranularity)) + if ((DatumCount == 1) && + (ObjDesc->CommonField.AccessFlags & AFIELD_SINGLE_DATUM)) { - MergedDatum = PreviousRawDatum; + /* 1) Shift the valid data bits down to start at bit 0 */ + + MergedDatum = (PreviousRawDatum >> ObjDesc->CommonField.StartFieldBitOffset); - MergedDatum = (MergedDatum >> ObjDesc->Field.BitOffset); + /* 2) Mask off any upper unused bits (bits not part of the field) */ - ValidFieldBits = ObjDesc->FieldUnit.Length % BitGranularity; - if (ValidFieldBits) + if (ObjDesc->CommonField.EndBufferValidBits) { - Mask = (((UINT32) 1 << ValidFieldBits) - (UINT32) 1); - MergedDatum &= Mask; + MergedDatum &= MASK_BITS_ABOVE (ObjDesc->CommonField.EndBufferValidBits); } + /* Store the datum to the caller buffer */ - /* - * Place the MergedDatum into the proper format and return buffer - * field - */ - - switch (ByteGranularity) - { - case 1: - ((UINT8 *) Buffer) [ThisFieldDatumOffset] = (UINT8) MergedDatum; - break; + AcpiExSetBufferDatum (MergedDatum, Buffer, ObjDesc->CommonField.AccessByteWidth, + DatumOffset); - case 2: - MOVE_UNALIGNED16_TO_16 (&(((UINT16 *) Buffer)[ThisFieldDatumOffset]), &MergedDatum); - break; + return_ACPI_STATUS (AE_OK); + } - case 4: - MOVE_UNALIGNED32_TO_32 (&(((UINT32 *) Buffer)[ThisFieldDatumOffset]), &MergedDatum); - break; - } - ThisFieldByteOffset = 1; - ThisFieldDatumOffset = 1; - } + /* We need to get more raw data to complete one or more field data */ - else + while (DatumOffset < DatumCount) { - /* We need to get more raw data to complete one or more field data */ + FieldDatumByteOffset += ObjDesc->CommonField.AccessByteWidth; - while (ThisFieldDatumOffset < DatumLength) + /* + * If the field is aligned on a byte boundary, we don't want + * to perform a final read, since this would potentially read + * past the end of the region. + * + * TBD: [Investigate] It may make more sense to just split the aligned + * and non-aligned cases since the aligned case is so very simple, + */ + if ((ObjDesc->CommonField.StartFieldBitOffset != 0) || + ((ObjDesc->CommonField.StartFieldBitOffset == 0) && + (DatumOffset < (DatumCount -1)))) { /* - * If the field is aligned on a byte boundary, we don't want - * to perform a final read, since this would potentially read - * past the end of the region. - * - * TBD: [Investigate] It may make more sense to just split the aligned - * and non-aligned cases since the aligned case is so very simple, + * Get the next raw datum, it contains some or all bits + * of the current field datum */ - if ((ObjDesc->Field.BitOffset != 0) || - ((ObjDesc->Field.BitOffset == 0) && - (ThisFieldDatumOffset < (DatumLength -1)))) + Status = AcpiExReadFieldDatum (ObjDesc, FieldDatumByteOffset, &ThisRawDatum); + if (ACPI_FAILURE (Status)) { - /* - * Get the next raw datum, it contains some or all bits - * of the current field datum - */ - - Status = AcpiAmlReadFieldData (ObjDesc, - ThisFieldByteOffset + ByteGranularity, - BitGranularity, &ThisRawDatum); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Before merging the data, make sure the unused bits are clear */ - - switch (ByteGranularity) - { - case 1: - ThisRawDatum &= 0x000000FF; - PreviousRawDatum &= 0x000000FF; - break; - - case 2: - ThisRawDatum &= 0x0000FFFF; - PreviousRawDatum &= 0x0000FFFF; - break; - } + return_ACPI_STATUS (Status); } + } + /* + * Create the (possibly) merged datum to be stored to the caller buffer + */ + if (ObjDesc->CommonField.StartFieldBitOffset == 0) + { + /* Field is not skewed and we can just copy the datum */ - /* - * Put together bits of the two raw data to make a complete - * field datum - */ - - - if (ObjDesc->Field.BitOffset != 0) - { - MergedDatum = - (PreviousRawDatum >> ObjDesc->Field.BitOffset) | - (ThisRawDatum << (BitGranularity - ObjDesc->Field.BitOffset)); - } - - else - { - MergedDatum = PreviousRawDatum; - } + MergedDatum = PreviousRawDatum; + } + else + { /* - * Prepare the merged datum for storing into the caller's - * buffer. It is possible to have a 32-bit buffer - * (ByteGranularity == 4), but a ObjDesc->Field.Length - * of 8 or 16, meaning that the upper bytes of merged data - * are undesired. This section fixes that. + * Put together the appropriate bits of the two raw data to make a + * single complete field datum + * + * 1) Normalize the first datum down to bit 0 */ - switch (ObjDesc->Field.Length) - { - case 8: - MergedDatum &= 0x000000FF; - break; + MergedDatum = (PreviousRawDatum >> ObjDesc->CommonField.StartFieldBitOffset); - case 16: - MergedDatum &= 0x0000FFFF; - break; - } + /* 2) Insert the second datum "above" the first datum */ - /* - * Now store the datum in the caller's buffer, according to - * the data type - */ - switch (ByteGranularity) + MergedDatum |= (ThisRawDatum << ObjDesc->CommonField.DatumValidBits); + + if ((DatumOffset >= (DatumCount -1))) { - case 1: - ((UINT8 *) Buffer) [ThisFieldDatumOffset] = (UINT8) MergedDatum; - break; - - case 2: - MOVE_UNALIGNED16_TO_16 (&(((UINT16 *) Buffer) [ThisFieldDatumOffset]), &MergedDatum); - break; - - case 4: - MOVE_UNALIGNED32_TO_32 (&(((UINT32 *) Buffer) [ThisFieldDatumOffset]), &MergedDatum); - break; + /* + * This is the last iteration of the loop. We need to clear + * any unused bits (bits that are not part of this field) that + * came from the last raw datum before we store the final + * merged datum into the caller buffer. + */ + if (ObjDesc->CommonField.EndBufferValidBits) + { + MergedDatum &= + MASK_BITS_ABOVE (ObjDesc->CommonField.EndBufferValidBits); + } } + } - /* - * Save the most recent datum since it contains bits of - * the *next* field datum - */ - - PreviousRawDatum = ThisRawDatum; - ThisFieldByteOffset += ByteGranularity; - ThisFieldDatumOffset++; + /* + * Store the merged field datum in the caller's buffer, according to + * the granularity of the field (size of each datum). + */ + AcpiExSetBufferDatum (MergedDatum, Buffer, ObjDesc->CommonField.AccessByteWidth, + DatumOffset); - } /* while */ + /* + * Save the raw datum that was just acquired since it may contain bits + * of the *next* field datum. Update offsets + */ + PreviousRawDatum = ThisRawDatum; + DatumOffset++; } -Cleanup: - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_OK); } /******************************************************************************* * - * FUNCTION: AcpiAmlWriteFieldData + * FUNCTION: AcpiExWriteFieldDatum * * PARAMETERS: *ObjDesc - Field to be set * Value - Value to store - * FieldBitWidth - Field Width in bits (8, 16, or 32) * * RETURN: Status * @@ -461,400 +637,418 @@ Cleanup: ******************************************************************************/ static ACPI_STATUS -AcpiAmlWriteFieldData ( +AcpiExWriteFieldDatum ( ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldByteOffset, - UINT32 FieldBitWidth, + UINT32 FieldDatumByteOffset, UINT32 Value) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *RgnDesc = NULL; ACPI_PHYSICAL_ADDRESS Address; - UINT32 FieldByteWidth; - FUNCTION_TRACE ("AmlWriteFieldData"); + FUNCTION_TRACE_U32 ("ExWriteFieldDatum", FieldDatumByteOffset); - /* ObjDesc is validated by callers */ - if (ObjDesc) + /* + * BufferFields - Read from a Buffer + * Other Fields - Read from a Operation Region. + */ + switch (ObjDesc->Common.Type) { - RgnDesc = ObjDesc->Field.Container; - } + case ACPI_TYPE_BUFFER_FIELD: - FieldByteWidth = DIV_8 (FieldBitWidth); - Status = AcpiAmlSetupField (ObjDesc, RgnDesc, FieldBitWidth); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } + /* + * For BufferFields, we only need to copy the data to the + * target buffer. Length is the field width in bytes. + */ + MEMCPY ((ObjDesc->BufferField.BufferObj)->Buffer.Pointer + + ObjDesc->BufferField.BaseByteOffset + FieldDatumByteOffset, + &Value, ObjDesc->CommonField.AccessByteWidth); + Status = AE_OK; + break; - /* - * Set offset to next multiple of field width, - * add region base address and offset within the field - */ - Address = RgnDesc->Region.Address + - (ObjDesc->Field.Offset * FieldByteWidth) + - FieldByteOffset; + case INTERNAL_TYPE_REGION_FIELD: + case INTERNAL_TYPE_BANK_FIELD: - DEBUG_PRINT (TRACE_OPREGION, - ("AmlWriteField: Store %lx in Region %s(%X) at %p width %X\n", - Value, AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId, Address, - FieldBitWidth)); + /* + * For other fields, we need to go through an Operation Region + * (Only types that will get here are RegionFields and BankFields) + */ + Status = AcpiExSetupField (ObjDesc, FieldDatumByteOffset); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } - /* Invoke the appropriate AddressSpace/OpRegion handler */ + /* + * 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; - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ADDRESS_SPACE_WRITE, - Address, FieldBitWidth, &Value); + DEBUG_PRINTP (TRACE_BFIELD, + ("Store %X in Region %s(%X) at %p width %X\n", + Value, AcpiUtGetRegionName (RgnDesc->Region.SpaceId), + RgnDesc->Region.SpaceId, Address, ObjDesc->CommonField.AccessBitWidth)); - if (Status == AE_NOT_IMPLEMENTED) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlWriteField: **** Region type %s(%X) not implemented\n", - AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId)); - } + /* Invoke the appropriate AddressSpace/OpRegion handler */ - else if (Status == AE_NOT_EXIST) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlWriteField: **** Region type %s(%X) does not have a handler\n", - AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId)); + Status = AcpiEvAddressSpaceDispatch (RgnDesc, ACPI_WRITE_ADR_SPACE, + Address, ObjDesc->CommonField.AccessBitWidth, &Value); + + if (Status == AE_NOT_IMPLEMENTED) + { + DEBUG_PRINTP (ACPI_ERROR, + ("**** Region type %s(%X) not implemented\n", + AcpiUtGetRegionName (RgnDesc->Region.SpaceId), + RgnDesc->Region.SpaceId)); + } + + else if (Status == AE_NOT_EXIST) + { + DEBUG_PRINTP (ACPI_ERROR, + ("**** Region type %s(%X) does not have a handler\n", + AcpiUtGetRegionName (RgnDesc->Region.SpaceId), + RgnDesc->Region.SpaceId)); + } + + break; + + + default: + + DEBUG_PRINTP (ACPI_ERROR, ("%p, wrong source type - %s\n", + ObjDesc, AcpiUtGetTypeName (ObjDesc->Common.Type))); + Status = AE_AML_INTERNAL; + break; } + + DEBUG_PRINTP (TRACE_BFIELD, ("Value written=%08lX \n", Value)); return_ACPI_STATUS (Status); } -/***************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiAmlWriteFieldDataWithUpdateRule + * FUNCTION: AcpiExWriteFieldDatumWithUpdateRule * * PARAMETERS: *ObjDesc - Field to be set * Value - Value to store - * FieldBitWidth - Field Width in bits (8, 16, or 32) * * RETURN: Status * * DESCRIPTION: Apply the field update rule to a field write * - ****************************************************************************/ + ******************************************************************************/ static ACPI_STATUS -AcpiAmlWriteFieldDataWithUpdateRule ( +AcpiExWriteFieldDatumWithUpdateRule ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Mask, UINT32 FieldValue, - UINT32 ThisFieldByteOffset, - UINT32 BitGranularity) + UINT32 FieldDatumByteOffset) { ACPI_STATUS Status = AE_OK; UINT32 MergedValue; UINT32 CurrentValue; + FUNCTION_TRACE ("ExWriteFieldDatumWithUpdateRule"); + + /* Start with the new bits */ MergedValue = FieldValue; + /* If the mask is all ones, we don't need to worry about the update rule */ - /* Decode the update rule */ - - switch (ObjDesc->Field.UpdateRule) + if (Mask != ACPI_UINT32_MAX) { + /* Decode the update rule */ - case UPDATE_PRESERVE: + switch (ObjDesc->CommonField.UpdateRule) + { - /* Check if update rule needs to be applied (not if mask is all ones) */ + case UPDATE_PRESERVE: - /* The left shift drops the bits we want to ignore. */ - if ((~Mask << (sizeof(Mask)*8 - BitGranularity)) != 0) - { - /* - * Read the current contents of the byte/word/dword containing - * the field, and merge with the new field value. + /* + * Check if update rule needs to be applied (not if mask is all + * ones) The left shift drops the bits we want to ignore. */ - Status = AcpiAmlReadFieldData (ObjDesc, ThisFieldByteOffset, - BitGranularity, &CurrentValue); - MergedValue |= (CurrentValue & ~Mask); - } - break; + if ((~Mask << (sizeof (Mask) * 8 - + ObjDesc->CommonField.AccessBitWidth)) != 0) + { + /* + * Read the current contents of the byte/word/dword containing + * the field, and merge with the new field value. + */ + Status = AcpiExReadFieldDatum (ObjDesc, FieldDatumByteOffset, + &CurrentValue); + MergedValue |= (CurrentValue & ~Mask); + } + break; - case UPDATE_WRITE_AS_ONES: + case UPDATE_WRITE_AS_ONES: - /* Set positions outside the field to all ones */ + /* Set positions outside the field to all ones */ - MergedValue |= ~Mask; - break; + MergedValue |= ~Mask; + break; - case UPDATE_WRITE_AS_ZEROS: + case UPDATE_WRITE_AS_ZEROS: - /* Set positions outside the field to all zeros */ + /* Set positions outside the field to all zeros */ - MergedValue &= Mask; - break; + MergedValue &= Mask; + break; - default: - DEBUG_PRINT (ACPI_ERROR, - ("WriteFieldDataWithUpdateRule: Unknown UpdateRule setting: %x\n", - ObjDesc->Field.UpdateRule)); - Status = AE_AML_OPERAND_VALUE; + default: + DEBUG_PRINT (ACPI_ERROR, + ("WriteWithUpdateRule: Unknown UpdateRule setting: %x\n", + ObjDesc->CommonField.UpdateRule)); + return_ACPI_STATUS (AE_AML_OPERAND_VALUE); + break; + } } /* Write the merged value */ - if (ACPI_SUCCESS (Status)) - { - Status = AcpiAmlWriteFieldData (ObjDesc, ThisFieldByteOffset, - BitGranularity, MergedValue); - } + Status = AcpiExWriteFieldDatum (ObjDesc, FieldDatumByteOffset, + MergedValue); + + DEBUG_PRINTP (TRACE_BFIELD, ("Mask %X DatumOffset %X Value %X, MergedValue %X\n", + Mask, FieldDatumByteOffset, FieldValue, MergedValue)); - return (Status); + return_ACPI_STATUS (Status); } -/***************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiAmlWriteField + * FUNCTION: AcpiExInsertIntoField * * PARAMETERS: *ObjDesc - Field to be set - * Value - Value to store - * FieldBitWidth - Field Width in bits (8, 16, or 32) + * Buffer - Value to store * * RETURN: Status * * DESCRIPTION: Store the value into the given field * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS -AcpiAmlWriteField ( +AcpiExInsertIntoField ( ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, - UINT32 BufferLength, - UINT32 ByteLength, - UINT32 DatumLength, - UINT32 BitGranularity, - UINT32 ByteGranularity) + UINT32 BufferLength) { ACPI_STATUS Status; - UINT32 ThisFieldByteOffset; - UINT32 ThisFieldDatumOffset; + UINT32 FieldDatumByteOffset; + UINT32 DatumOffset; UINT32 Mask; UINT32 MergedDatum; UINT32 PreviousRawDatum; UINT32 ThisRawDatum; - UINT32 FieldValue; - UINT32 ValidFieldBits; + UINT32 ByteFieldLength; + UINT32 DatumCount; - FUNCTION_TRACE ("AmlWriteField"); + FUNCTION_TRACE ("ExInsertIntoField"); /* - * Break the request into up to three parts: - * non-aligned part at start, aligned part in middle, non-aligned part - * at end --- Just like an I/O request --- + * Incoming buffer must be at least as long as the field, we do not + * allow "partial" field writes. We do not care if the buffer is + * larger than the field, this typically happens when an integer is + * written to a field that is actually smaller than an integer. */ + ByteFieldLength = ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength); + if (BufferLength < ByteFieldLength) + { + DEBUG_PRINTP (ACPI_INFO, ("Buffer length %X too small for field %X\n", + BufferLength, ByteFieldLength)); - ThisFieldByteOffset = 0; - ThisFieldDatumOffset= 0; + /* TBD: Need a better error code */ - /* Get a datum */ + return_ACPI_STATUS (AE_BUFFER_OVERFLOW); + } - switch (ByteGranularity) - { - case 1: - PreviousRawDatum = ((UINT8 *) Buffer) [ThisFieldDatumOffset]; - break; + /* Convert byte count to datum count, round up if necessary */ - case 2: - MOVE_UNALIGNED16_TO_32 (&PreviousRawDatum, &(((UINT16 *) Buffer) [ThisFieldDatumOffset])); - break; + DatumCount = ROUND_UP_TO (ByteFieldLength, ObjDesc->CommonField.AccessByteWidth); - case 4: - MOVE_UNALIGNED32_TO_32 (&PreviousRawDatum, &(((UINT32 *) Buffer) [ThisFieldDatumOffset])); - break; + DEBUG_PRINT (ACPI_INFO, + ("ByteLen=%x, DatumLen=%x, BitGran=%x, ByteGran=%x\n", + ByteFieldLength, DatumCount, ObjDesc->CommonField.AccessBitWidth, + ObjDesc->CommonField.AccessByteWidth)); - default: - DEBUG_PRINT (ACPI_ERROR, ("AmlWriteField: Invalid granularity: %x\n", - ByteGranularity)); - Status = AE_AML_OPERAND_VALUE; - goto Cleanup; - } + /* + * Break the request into up to three parts (similar to an I/O request): + * 1) non-aligned part at start + * 2) aligned part in middle + * 3) non-aligned part at the end + */ + FieldDatumByteOffset = 0; + DatumOffset= 0; + + /* Get a single datum from the caller's buffer */ + + AcpiExGetBufferDatum (&PreviousRawDatum, Buffer, + ObjDesc->CommonField.AccessByteWidth, DatumOffset); /* + * Part1: * Write a partial field datum if field does not begin on a datum boundary + * Note: The code in this section also handles the aligned case * * Construct Mask with 1 bits where the field is, 0 bits elsewhere + * (Only the bottom 5 bits of BitLength are valid for a shift operation) * - * 1) Bits above the field + * Mask off bits that are "below" the field (if any) */ + Mask = MASK_BITS_BELOW (ObjDesc->CommonField.StartFieldBitOffset); - Mask = (((UINT32)(-1)) << (UINT32)ObjDesc->Field.BitOffset); - - /* 2) Only the bottom 5 bits are valid for a shift operation. */ + /* If the field fits in one datum, may need to mask upper bits */ - if ((ObjDesc->Field.BitOffset + ObjDesc->FieldUnit.Length) < 32) + if ((ObjDesc->CommonField.AccessFlags & AFIELD_SINGLE_DATUM) && + ObjDesc->CommonField.EndFieldValidBits) { - /* Bits above the field */ + /* There are bits above the field, mask them off also */ - Mask &= (~(((UINT32)(-1)) << ((UINT32)ObjDesc->Field.BitOffset + - (UINT32)ObjDesc->FieldUnit.Length))); + Mask &= MASK_BITS_ABOVE (ObjDesc->CommonField.EndFieldValidBits); } - /* 3) Shift and mask the value into the field position */ + /* Shift and mask the value into the field position */ + + MergedDatum = (PreviousRawDatum << ObjDesc->CommonField.StartFieldBitOffset); + MergedDatum &= Mask; - FieldValue = (PreviousRawDatum << ObjDesc->Field.BitOffset) & Mask; + /* Apply the update rule (if necessary) and write the datum to the field */ - Status = AcpiAmlWriteFieldDataWithUpdateRule (ObjDesc, Mask, FieldValue, - ThisFieldByteOffset, - BitGranularity); + Status = AcpiExWriteFieldDatumWithUpdateRule (ObjDesc, Mask, MergedDatum, + FieldDatumByteOffset); if (ACPI_FAILURE (Status)) { - goto Cleanup; + return_ACPI_STATUS (Status); } + /* If the entire field fits within one datum, we are done. */ - /* If the field fits within one datum, we are done. */ - - if ((DatumLength == 1) && - ((ObjDesc->Field.BitOffset + ObjDesc->FieldUnit.Length) <= - (UINT16) BitGranularity)) + if ((DatumCount == 1) && + (ObjDesc->CommonField.AccessFlags & AFIELD_SINGLE_DATUM)) { - goto Cleanup; + return_ACPI_STATUS (AE_OK); } /* + * Part2: + * Write the aligned data. + * * We don't need to worry about the update rule for these data, because - * all of the bits are part of the field. + * all of the bits in each datum are part of the field. * - * Can't write the last datum, however, because it might contain bits that - * are not part of the field -- the update rule must be applied. + * The last datum must be special cased because it might contain bits + * that are not part of the field -- therefore the "update rule" must be + * applied in Part3 below. */ - - while (ThisFieldDatumOffset < (DatumLength - 1)) + while (DatumOffset < DatumCount) { - ThisFieldDatumOffset++; - - /* Get the next raw datum, it contains bits of the current field datum... */ - - switch (ByteGranularity) - { - case 1: - ThisRawDatum = ((UINT8 *) Buffer) [ThisFieldDatumOffset]; - break; - - case 2: - MOVE_UNALIGNED16_TO_32 (&ThisRawDatum, &(((UINT16 *) Buffer) [ThisFieldDatumOffset])); - break; - - case 4: - MOVE_UNALIGNED32_TO_32 (&ThisRawDatum, &(((UINT32 *) Buffer) [ThisFieldDatumOffset])); - break; + DatumOffset++; + FieldDatumByteOffset += ObjDesc->CommonField.AccessByteWidth; - default: - DEBUG_PRINT (ACPI_ERROR, ("AmlWriteField: Invalid Byte Granularity: %x\n", - ByteGranularity)); - Status = AE_AML_OPERAND_VALUE; - goto Cleanup; - } - - /* - * Put together bits of the two raw data to make a complete field - * datum + /* + * Get the next raw buffer datum. It may contain bits of the previous + * field datum */ + AcpiExGetBufferDatum (&ThisRawDatum, Buffer, + ObjDesc->CommonField.AccessByteWidth, DatumOffset); + + /* Create the field datum based on the field alignment */ - if (ObjDesc->Field.BitOffset != 0) + if (ObjDesc->CommonField.StartFieldBitOffset != 0) { - MergedDatum = - (PreviousRawDatum >> (BitGranularity - ObjDesc->Field.BitOffset)) | - (ThisRawDatum << ObjDesc->Field.BitOffset); + /* + * Put together appropriate bits of the two raw buffer data to make + * a single complete field datum + */ + MergedDatum = + (PreviousRawDatum >> ObjDesc->CommonField.DatumValidBits) | + (ThisRawDatum << ObjDesc->CommonField.StartFieldBitOffset); } else { - MergedDatum = ThisRawDatum; - } - - /* Now write the completed datum */ - + /* Field began aligned on datum boundary */ - Status = AcpiAmlWriteFieldData (ObjDesc, - ThisFieldByteOffset + ByteGranularity, - BitGranularity, MergedDatum); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; + MergedDatum = ThisRawDatum; } /* - * Save the most recent datum since it contains bits of - * the *next* field datum + * Special handling for the last datum if the field does NOT end on + * a datum boundary. Update Rule must be applied to the bits outside + * the field. */ + if ((DatumOffset == DatumCount) && + ObjDesc->CommonField.EndFieldValidBits) + { + /* + * Part3: + * This is the last datum and the field does not end on a datum boundary. + * Build the partial datum and write with the update rule. + */ - PreviousRawDatum = ThisRawDatum; - - ThisFieldByteOffset += ByteGranularity; + /* Mask off the unused bits above (after) the end-of-field */ - } /* while */ + Mask = MASK_BITS_ABOVE (ObjDesc->CommonField.EndFieldValidBits); + MergedDatum &= Mask; + /* Write the last datum with the update rule */ - /* Write a partial field datum if field does not end on a datum boundary */ + Status = AcpiExWriteFieldDatumWithUpdateRule (ObjDesc, Mask, + MergedDatum, FieldDatumByteOffset); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + } - if ((ObjDesc->FieldUnit.Length + ObjDesc->FieldUnit.BitOffset) % - BitGranularity) - { - switch (ByteGranularity) + else { - case 1: - ThisRawDatum = ((UINT8 *) Buffer) [ThisFieldDatumOffset]; - break; - - case 2: - MOVE_UNALIGNED16_TO_32 (&ThisRawDatum, &(((UINT16 *) Buffer) [ThisFieldDatumOffset])); - break; + /* Normal case -- write the completed datum */ - case 4: - MOVE_UNALIGNED32_TO_32 (&ThisRawDatum, &(((UINT32 *) Buffer) [ThisFieldDatumOffset])); - break; + Status = AcpiExWriteFieldDatum (ObjDesc, + FieldDatumByteOffset, MergedDatum); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } } - /* Construct Mask with 1 bits where the field is, 0 bits elsewhere */ - - ValidFieldBits = ((ObjDesc->FieldUnit.Length % BitGranularity) + - ObjDesc->Field.BitOffset); - - Mask = (((UINT32) 1 << ValidFieldBits) - (UINT32) 1); - - /* Shift and mask the value into the field position */ - - FieldValue = (PreviousRawDatum >> - (BitGranularity - ObjDesc->Field.BitOffset)) & Mask; - - Status = AcpiAmlWriteFieldDataWithUpdateRule (ObjDesc, Mask, FieldValue, - ThisFieldByteOffset + ByteGranularity, - BitGranularity); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } + /* + * Save the most recent datum since it may contain bits of the *next* + * field datum. Update current byte offset. + */ + PreviousRawDatum = ThisRawDatum; } -Cleanup: - return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/exmisc.c b/sys/contrib/dev/acpica/exmisc.c index 505d9d4..58bc815 100644 --- a/sys/contrib/dev/acpica/exmisc.c +++ b/sys/contrib/dev/acpica/exmisc.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: ammisc - ACPI AML (p-code) execution - specific opcodes - * $Revision: 73 $ + * Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes + * $Revision: 77 $ * *****************************************************************************/ @@ -116,7 +116,7 @@ * *****************************************************************************/ -#define __AMMISC_C__ +#define __EXMISC_C__ #include "acpi.h" #include "acparser.h" @@ -125,13 +125,13 @@ #include "acdispat.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("ammisc") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exmisc") /******************************************************************************* * - * FUNCTION: AcpiAmlExecFatal + * FUNCTION: AcpiExFatal * * PARAMETERS: none * @@ -149,7 +149,7 @@ ******************************************************************************/ ACPI_STATUS -AcpiAmlExecFatal ( +AcpiExFatal ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *TypeDesc; @@ -158,15 +158,15 @@ AcpiAmlExecFatal ( ACPI_STATUS Status; - FUNCTION_TRACE ("AmlExecFatal"); + FUNCTION_TRACE ("ExFatal"); /* Resolve operands */ - Status = AcpiAmlResolveOperands (AML_FATAL_OP, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (AML_FATAL_OP, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (AML_FATAL_OP), - 3, "after AcpiAmlResolveOperands"); + 3, "after AcpiExResolveOperands"); /* Get operands */ @@ -177,19 +177,16 @@ AcpiAmlExecFatal ( { /* Invalid parameters on object stack */ - DEBUG_PRINT (ACPI_ERROR, - ("AcpiAmlExecFatal/AML_FATAL_OP: bad operand(s) (Status=%X)\n", + DEBUG_PRINTP (ACPI_ERROR, ("bad operand(s) (Status=%X)\n", Status)); - goto Cleanup; } /* DefFatal := FatalOp FatalType FatalCode FatalArg */ - - DEBUG_PRINT (ACPI_INFO, - ("FatalOp: Type %x Code %x Arg %x <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", + DEBUG_PRINTP (ACPI_INFO, + ("Type %x Code %x Arg %x <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", TypeDesc->Integer.Value, CodeDesc->Integer.Value, ArgDesc->Integer.Value)); @@ -203,9 +200,9 @@ Cleanup: /* Free the operands */ - AcpiCmRemoveReference (ArgDesc); - AcpiCmRemoveReference (CodeDesc); - AcpiCmRemoveReference (TypeDesc); + AcpiUtRemoveReference (ArgDesc); + AcpiUtRemoveReference (CodeDesc); + AcpiUtRemoveReference (TypeDesc); /* If we get back from the OS call, we might as well keep going. */ @@ -217,7 +214,7 @@ Cleanup: /******************************************************************************* * - * FUNCTION: AcpiAmlExecIndex + * FUNCTION: AcpiExIndex * * PARAMETERS: none * @@ -238,7 +235,7 @@ Cleanup: ******************************************************************************/ ACPI_STATUS -AcpiAmlExecIndex ( +AcpiExIndex ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc) { @@ -250,16 +247,16 @@ AcpiAmlExecIndex ( ACPI_STATUS Status; - FUNCTION_TRACE ("AmlExecIndex"); + FUNCTION_TRACE ("ExIndex"); /* Resolve operands */ /* First operand can be either a package or a buffer */ - Status = AcpiAmlResolveOperands (AML_INDEX_OP, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (AML_INDEX_OP, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (AML_INDEX_OP), - 3, "after AcpiAmlResolveOperands"); + 3, "after AcpiExResolveOperands"); /* Get all operands */ @@ -270,17 +267,15 @@ AcpiAmlExecIndex ( { /* Invalid parameters on object stack */ - DEBUG_PRINT (ACPI_ERROR, - ("AcpiAmlExecIndex/AML_INDEX_OP: bad operand(s) (Status=%X)\n", + DEBUG_PRINTP (ACPI_ERROR, ("bad operand(s) (Status=%X)\n", Status)); - goto Cleanup; } /* Create the internal return object */ - RetDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_REFERENCE); + RetDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_REFERENCE); if (!RetDesc) { Status = AE_NO_MEMORY; @@ -298,14 +293,13 @@ AcpiAmlExecIndex ( if (IdxDesc->Integer.Value >= ObjDesc->Package.Count) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecIndex: Index value out of range\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Index value beyond package end\n")); Status = AE_AML_PACKAGE_LIMIT; goto Cleanup; } if ((ResDesc->Common.Type == INTERNAL_TYPE_REFERENCE) && - (ResDesc->Reference.OpCode == AML_ZERO_OP)) + (ResDesc->Reference.Opcode == AML_ZERO_OP)) { /* * There is no actual result descriptor (the ZeroOp Result @@ -313,7 +307,7 @@ AcpiAmlExecIndex ( * return a reference to the package element */ - AcpiCmRemoveReference (ResDesc); + AcpiUtRemoveReference (ResDesc); } else @@ -324,11 +318,11 @@ AcpiAmlExecIndex ( */ TmpDesc = ObjDesc->Package.Elements[IdxDesc->Integer.Value]; - RetDesc->Reference.OpCode = AML_INDEX_OP; + RetDesc->Reference.Opcode = AML_INDEX_OP; RetDesc->Reference.TargetType = TmpDesc->Common.Type; RetDesc->Reference.Object = TmpDesc; - Status = AcpiAmlExecStore (RetDesc, ResDesc, WalkState); + Status = AcpiExStore (RetDesc, ResDesc, WalkState); RetDesc->Reference.Object = NULL; } @@ -336,7 +330,7 @@ AcpiAmlExecIndex ( * The local return object must always be a reference to the package element, * not the element itself. */ - RetDesc->Reference.OpCode = AML_INDEX_OP; + RetDesc->Reference.Opcode = AML_INDEX_OP; RetDesc->Reference.TargetType = ACPI_TYPE_PACKAGE; RetDesc->Reference.Where = &ObjDesc->Package.Elements[IdxDesc->Integer.Value]; } @@ -347,18 +341,17 @@ AcpiAmlExecIndex ( if (IdxDesc->Integer.Value >= ObjDesc->Buffer.Length) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecIndex: Index value out of range\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Index value beyond end of buffer\n")); Status = AE_AML_BUFFER_LIMIT; goto Cleanup; } - RetDesc->Reference.OpCode = AML_INDEX_OP; + RetDesc->Reference.Opcode = AML_INDEX_OP; RetDesc->Reference.TargetType = ACPI_TYPE_BUFFER_FIELD; RetDesc->Reference.Object = ObjDesc; RetDesc->Reference.Offset = (UINT32) IdxDesc->Integer.Value; - Status = AcpiAmlExecStore (RetDesc, ResDesc, WalkState); + Status = AcpiExStore (RetDesc, ResDesc, WalkState); } @@ -366,18 +359,18 @@ Cleanup: /* Always delete operands */ - AcpiCmRemoveReference (ObjDesc); - AcpiCmRemoveReference (IdxDesc); + AcpiUtRemoveReference (ObjDesc); + AcpiUtRemoveReference (IdxDesc); /* Delete return object on error */ if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ResDesc); + AcpiUtRemoveReference (ResDesc); if (RetDesc) { - AcpiCmRemoveReference (RetDesc); + AcpiUtRemoveReference (RetDesc); RetDesc = NULL; } } @@ -391,7 +384,7 @@ Cleanup: /******************************************************************************* * - * FUNCTION: AcpiAmlExecMatch + * FUNCTION: AcpiExMatch * * PARAMETERS: none * @@ -412,7 +405,7 @@ Cleanup: ******************************************************************************/ ACPI_STATUS -AcpiAmlExecMatch ( +AcpiExMatch ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc) { @@ -428,15 +421,15 @@ AcpiAmlExecMatch ( UINT32 MatchValue = (UINT32) -1; - FUNCTION_TRACE ("AmlExecMatch"); + FUNCTION_TRACE ("ExMatch"); /* Resolve all operands */ - Status = AcpiAmlResolveOperands (AML_MATCH_OP, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (AML_MATCH_OP, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (AML_MATCH_OP), - 6, "after AcpiAmlResolveOperands"); + 6, "after AcpiExResolveOperands"); /* Get all operands */ @@ -451,10 +444,8 @@ AcpiAmlExecMatch ( { /* Invalid parameters on object stack */ - DEBUG_PRINT (ACPI_ERROR, - ("ExecMatch/AML_MATCH_OP: bad operand(s) (Status=%X)\n", + DEBUG_PRINTP (ACPI_ERROR, ("bad operand(s) (Status=%X)\n", Status)); - goto Cleanup; } @@ -463,8 +454,7 @@ AcpiAmlExecMatch ( if ((Op1Desc->Integer.Value > MAX_MATCH_OPERATOR) || (Op2Desc->Integer.Value > MAX_MATCH_OPERATOR)) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMatch: operation encoding out of range\n")); + DEBUG_PRINTP (ACPI_ERROR, ("operation encoding out of range\n")); Status = AE_AML_OPERAND_VALUE; goto Cleanup; } @@ -472,13 +462,12 @@ AcpiAmlExecMatch ( Index = (UINT32) StartDesc->Integer.Value; if (Index >= (UINT32) PkgDesc->Package.Count) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMatch: start position value out of range\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Start position value out of range\n")); Status = AE_AML_PACKAGE_LIMIT; goto Cleanup; } - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { Status = AE_NO_MEMORY; @@ -657,12 +646,12 @@ Cleanup: /* Free the operands */ - AcpiCmRemoveReference (StartDesc); - AcpiCmRemoveReference (V2Desc); - AcpiCmRemoveReference (Op2Desc); - AcpiCmRemoveReference (V1Desc); - AcpiCmRemoveReference (Op1Desc); - AcpiCmRemoveReference (PkgDesc); + AcpiUtRemoveReference (StartDesc); + AcpiUtRemoveReference (V2Desc); + AcpiUtRemoveReference (Op2Desc); + AcpiUtRemoveReference (V1Desc); + AcpiUtRemoveReference (Op1Desc); + AcpiUtRemoveReference (PkgDesc); /* Delete return object on error */ @@ -670,7 +659,7 @@ Cleanup: if (ACPI_FAILURE (Status) && (RetDesc)) { - AcpiCmRemoveReference (RetDesc); + AcpiUtRemoveReference (RetDesc); RetDesc = NULL; } diff --git a/sys/contrib/dev/acpica/exmonad.c b/sys/contrib/dev/acpica/exmonad.c index 394780f..d82b767 100644 --- a/sys/contrib/dev/acpica/exmonad.c +++ b/sys/contrib/dev/acpica/exmonad.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: ammonad - ACPI AML (p-code) execution for monadic operators - * $Revision: 89 $ + * Module Name: exmonad - ACPI AML (p-code) execution for monadic operators + * $Revision: 99 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMMONAD_C__ +#define __EXMONAD_C__ #include "acpi.h" #include "acparser.h" @@ -125,13 +125,13 @@ #include "acnamesp.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("ammonad") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exmonad") /******************************************************************************* * - * FUNCTION: AcpiAmlGetObjectReference + * FUNCTION: AcpiExGetObjectReference * * PARAMETERS: ObjDesc - Create a reference to this object * RetDesc - Where to store the reference @@ -144,7 +144,7 @@ ******************************************************************************/ static ACPI_STATUS -AcpiAmlGetObjectReference ( +AcpiExGetObjectReference ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **RetDesc, ACPI_WALK_STATE *WalkState) @@ -152,7 +152,7 @@ AcpiAmlGetObjectReference ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("AmlGetObjectReference", ObjDesc); + FUNCTION_TRACE_PTR ("ExGetObjectReference", ObjDesc); if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL)) @@ -166,29 +166,21 @@ AcpiAmlGetObjectReference ( /* * Not a Name -- an indirect name pointer would have - * been converted to a direct name pointer in AcpiAmlResolveOperands + * been converted to a direct name pointer in AcpiExResolveOperands */ - switch (ObjDesc->Reference.OpCode) + switch (ObjDesc->Reference.Opcode) { case AML_LOCAL_OP: - - *RetDesc = (void *) AcpiDsMethodDataGetNte (MTH_TYPE_LOCAL, - (ObjDesc->Reference.Offset), WalkState); - break; - - case AML_ARG_OP: - *RetDesc = (void *) AcpiDsMethodDataGetNte (MTH_TYPE_ARG, - (ObjDesc->Reference.Offset), WalkState); + *RetDesc = (void *) AcpiDsMethodDataGetNode (ObjDesc->Reference.Opcode, + ObjDesc->Reference.Offset, WalkState); break; - default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlGetObjectReference: (Internal) Unknown Ref subtype %02x\n", - ObjDesc->Reference.OpCode)); + DEBUG_PRINTP (ACPI_ERROR, ("(Internal) Unknown Ref subtype %02x\n", + ObjDesc->Reference.Opcode)); *RetDesc = NULL; Status = AE_AML_INTERNAL; goto Cleanup; @@ -212,15 +204,14 @@ AcpiAmlGetObjectReference ( Cleanup: - DEBUG_PRINT (TRACE_EXEC, - ("AmlGetObjectReference: Obj=%p Ref=%p\n", ObjDesc, *RetDesc)); + DEBUG_PRINTP (TRACE_EXEC, ("Obj=%p Ref=%p\n", ObjDesc, *RetDesc)); return_ACPI_STATUS (Status); } /******************************************************************************* * - * FUNCTION: AcpiAmlExecMonadic1 + * FUNCTION: AcpiExMonadic1 * * PARAMETERS: Opcode - The opcode to be executed * @@ -232,7 +223,7 @@ Cleanup: ******************************************************************************/ ACPI_STATUS -AcpiAmlExecMonadic1 ( +AcpiExMonadic1 ( UINT16 Opcode, ACPI_WALK_STATE *WalkState) { @@ -240,24 +231,23 @@ AcpiAmlExecMonadic1 ( ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("AmlExecMonadic1", WALK_OPERANDS); + FUNCTION_TRACE_PTR ("ExMonadic1", WALK_OPERANDS); /* Resolve all operands */ - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Opcode, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 1, "after AcpiAmlResolveOperands"); + 1, "after AcpiExResolveOperands"); /* Get all operands */ Status |= AcpiDsObjStackPopObject (&ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("ExecMonadic1/%s: bad operand(s) (Status=%s)\n", - AcpiPsGetOpcodeName (Opcode), AcpiCmFormatException(Status))); + DEBUG_PRINTP (ACPI_ERROR, ("bad operand(s) %s\n", + AcpiPsGetOpcodeName (Opcode), AcpiUtFormatException(Status))); goto Cleanup; } @@ -272,7 +262,7 @@ AcpiAmlExecMonadic1 ( case AML_RELEASE_OP: - Status = AcpiAmlSystemReleaseMutex (ObjDesc); + Status = AcpiExReleaseMutex (ObjDesc, WalkState); break; @@ -280,7 +270,7 @@ AcpiAmlExecMonadic1 ( case AML_RESET_OP: - Status = AcpiAmlSystemResetEvent (ObjDesc); + Status = AcpiExSystemResetEvent (ObjDesc); break; @@ -288,7 +278,7 @@ AcpiAmlExecMonadic1 ( case AML_SIGNAL_OP: - Status = AcpiAmlSystemSignalEvent (ObjDesc); + Status = AcpiExSystemSignalEvent (ObjDesc); break; @@ -296,7 +286,7 @@ AcpiAmlExecMonadic1 ( case AML_SLEEP_OP: - AcpiAmlSystemDoSuspend ((UINT32) ObjDesc->Integer.Value); + AcpiExSystemDoSuspend ((UINT32) ObjDesc->Integer.Value); break; @@ -304,7 +294,7 @@ AcpiAmlExecMonadic1 ( case AML_STALL_OP: - AcpiAmlSystemDoStall ((UINT32) ObjDesc->Integer.Value); + AcpiExSystemDoStall ((UINT32) ObjDesc->Integer.Value); break; @@ -312,7 +302,7 @@ AcpiAmlExecMonadic1 ( default: - REPORT_ERROR (("AcpiAmlExecMonadic1: Unknown monadic opcode %X\n", + REPORT_ERROR (("AcpiExMonadic1: Unknown monadic opcode %X\n", Opcode)); Status = AE_AML_BAD_OPCODE; break; @@ -324,7 +314,7 @@ Cleanup: /* Always delete the operand */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (AE_OK); } @@ -332,7 +322,7 @@ Cleanup: /******************************************************************************* * - * FUNCTION: AcpiAmlExecMonadic2R + * FUNCTION: AcpiExMonadic2R * * PARAMETERS: Opcode - The opcode to be executed * @@ -344,7 +334,7 @@ Cleanup: ******************************************************************************/ ACPI_STATUS -AcpiAmlExecMonadic2R ( +AcpiExMonadic2R ( UINT16 Opcode, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc) @@ -360,15 +350,15 @@ AcpiAmlExecMonadic2R ( ACPI_INTEGER Digit; - FUNCTION_TRACE_PTR ("AmlExecMonadic2R", WALK_OPERANDS); + FUNCTION_TRACE_PTR ("ExMonadic2R", WALK_OPERANDS); /* Resolve all operands */ - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Opcode, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 2, "after AcpiAmlResolveOperands"); + 2, "after AcpiExResolveOperands"); /* Get all operands */ @@ -376,9 +366,8 @@ AcpiAmlExecMonadic2R ( Status |= AcpiDsObjStackPopObject (&ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("ExecMonadic2R/%s: bad operand(s) (Status=%s)\n", - AcpiPsGetOpcodeName (Opcode), AcpiCmFormatException(Status))); + DEBUG_PRINTP (ACPI_ERROR, ("bad operand(s) %s\n", + AcpiPsGetOpcodeName (Opcode), AcpiUtFormatException(Status))); goto Cleanup; } @@ -395,7 +384,7 @@ AcpiAmlExecMonadic2R ( case AML_TO_BCD_OP: case AML_COND_REF_OF_OP: - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { Status = AE_NO_MEMORY; @@ -424,7 +413,7 @@ AcpiAmlExecMonadic2R ( /* * Acpi specification describes Integer type as a little - * endian unsigned value, so this boundry condition is valid. + * endian unsigned value, so this boundary condition is valid. */ for (ResVal = 0; RetDesc->Integer.Value && ResVal < ACPI_INTEGER_BIT_SIZE; ++ResVal) { @@ -443,7 +432,7 @@ AcpiAmlExecMonadic2R ( /* * Acpi specification describes Integer type as a little - * endian unsigned value, so this boundry condition is valid. + * endian unsigned value, so this boundary condition is valid. */ for (ResVal = 0; RetDesc->Integer.Value && ResVal < ACPI_INTEGER_BIT_SIZE; ++ResVal) { @@ -474,8 +463,7 @@ AcpiAmlExecMonadic2R ( if (Digit > 9) { - DEBUG_PRINT (ACPI_ERROR, - ("Monadic2R/FromBCDOp: BCD digit too large: \n", + DEBUG_PRINTP (ACPI_ERROR, ("BCD digit too large: \n", Digit)); Status = AE_AML_NUMERIC_OVERFLOW; goto Cleanup; @@ -503,7 +491,7 @@ AcpiAmlExecMonadic2R ( if (ObjDesc->Integer.Value > ACPI_MAX_BCD_VALUE) { - DEBUG_PRINT (ACPI_ERROR, ("Monadic2R/ToBCDOp: BCD overflow: %d\n", + DEBUG_PRINTP (ACPI_ERROR, ("BCD overflow: %d\n", ObjDesc->Integer.Value)); Status = AE_AML_NUMERIC_OVERFLOW; goto Cleanup; @@ -554,19 +542,19 @@ AcpiAmlExecMonadic2R ( * being returned */ - AcpiCmRemoveReference (ResDesc); + AcpiUtRemoveReference (ResDesc); goto Cleanup; } /* Get the object reference and store it */ - Status = AcpiAmlGetObjectReference (ObjDesc, &RetDesc2, WalkState); + Status = AcpiExGetObjectReference (ObjDesc, &RetDesc2, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } - Status = AcpiAmlExecStore (RetDesc2, ResDesc, WalkState); + Status = AcpiExStore (RetDesc2, ResDesc, WalkState); /* The object exists in the namespace, return TRUE */ @@ -587,12 +575,12 @@ AcpiAmlExecMonadic2R ( * since the object itself may have been stored. */ - Status = AcpiAmlExecStore (ObjDesc, ResDesc, WalkState); + Status = AcpiExStore (ObjDesc, ResDesc, WalkState); if (ACPI_FAILURE (Status)) { /* On failure, just delete the ObjDesc */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); } else @@ -616,8 +604,7 @@ AcpiAmlExecMonadic2R ( /* Reference, returning an Reference */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMonadic2R: DebugOp should never get here!\n")); + DEBUG_PRINTP (ACPI_ERROR, ("DebugOp should never get here!\n")); return_ACPI_STATUS (AE_OK); break; @@ -632,7 +619,7 @@ AcpiAmlExecMonadic2R ( case AML_SHIFT_LEFT_BIT_OP: case AML_SHIFT_RIGHT_BIT_OP: - DEBUG_PRINT (ACPI_ERROR, ("AmlExecMonadic2R: %s unimplemented\n", + DEBUG_PRINTP (ACPI_ERROR, ("%s is unimplemented\n", AcpiPsGetOpcodeName (Opcode))); Status = AE_SUPPORT; goto Cleanup; @@ -641,29 +628,29 @@ AcpiAmlExecMonadic2R ( default: - REPORT_ERROR (("AcpiAmlExecMonadic2R: Unknown monadic opcode %X\n", + REPORT_ERROR (("AcpiExMonadic2R: Unknown monadic opcode %X\n", Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } - Status = AcpiAmlExecStore (RetDesc, ResDesc, WalkState); + Status = AcpiExStore (RetDesc, ResDesc, WalkState); Cleanup: /* Always delete the operand object */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); /* Delete return object(s) on error */ if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ResDesc); /* Result descriptor */ + AcpiUtRemoveReference (ResDesc); /* Result descriptor */ if (RetDesc) { - AcpiCmRemoveReference (RetDesc); + AcpiUtRemoveReference (RetDesc); RetDesc = NULL; } } @@ -677,7 +664,7 @@ Cleanup: /******************************************************************************* * - * FUNCTION: AcpiAmlExecMonadic2 + * FUNCTION: AcpiExMonadic2 * * PARAMETERS: Opcode - The opcode to be executed * @@ -690,7 +677,7 @@ Cleanup: ******************************************************************************/ ACPI_STATUS -AcpiAmlExecMonadic2 ( +AcpiExMonadic2 ( UINT16 Opcode, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc) @@ -704,37 +691,34 @@ AcpiAmlExecMonadic2 ( ACPI_INTEGER Value; - FUNCTION_TRACE_PTR ("AmlExecMonadic2", WALK_OPERANDS); + FUNCTION_TRACE_PTR ("ExMonadic2", WALK_OPERANDS); /* Attempt to resolve the operands */ - ResolveStatus = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); + ResolveStatus = AcpiExResolveOperands (Opcode, WALK_OPERANDS, WalkState); DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 1, "after AcpiAmlResolveOperands"); + 1, "after AcpiExResolveOperands"); /* Always get all operands */ Status = AcpiDsObjStackPopObject (&ObjDesc, WalkState); - /* Now we can check the status codes */ if (ACPI_FAILURE (ResolveStatus)) { - DEBUG_PRINT (ACPI_ERROR, - ("ExecMonadic2[%s]: Could not resolve operands, %s\n", - AcpiPsGetOpcodeName (Opcode), AcpiCmFormatException (ResolveStatus))); + DEBUG_PRINTP (ACPI_ERROR, ("[%s]: Could not resolve operands, %s\n", + AcpiPsGetOpcodeName (Opcode), AcpiUtFormatException (ResolveStatus))); goto Cleanup; } if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("ExecMonadic2[%s]: Bad operand(s), %s\n", - AcpiPsGetOpcodeName (Opcode), AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, ("[%s]: Bad operand(s), %s\n", + AcpiPsGetOpcodeName (Opcode), AcpiUtFormatException (Status))); goto Cleanup; } @@ -750,7 +734,7 @@ AcpiAmlExecMonadic2 ( case AML_LNOT_OP: - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { Status = AE_NO_MEMORY; @@ -775,26 +759,26 @@ AcpiAmlExecMonadic2 ( * an Reference is expected!! 10/99 */ - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) - { - RetDesc = ObjDesc; - } + if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) + { + RetDesc = ObjDesc; + } - else - { + else + { /* * Duplicate the Reference in a new object so that we can resolve it * without destroying the original Reference object */ - RetDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_REFERENCE); + RetDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_REFERENCE); if (!RetDesc) { - Status = AE_NO_MEMORY; - goto Cleanup; + Status = AE_NO_MEMORY; + goto Cleanup; } - RetDesc->Reference.OpCode = ObjDesc->Reference.OpCode; + RetDesc->Reference.Opcode = ObjDesc->Reference.Opcode; RetDesc->Reference.Offset = ObjDesc->Reference.Offset; RetDesc->Reference.Object = ObjDesc->Reference.Object; } @@ -805,12 +789,11 @@ AcpiAmlExecMonadic2 ( * (This deletes the original RetDesc) */ - Status = AcpiAmlResolveOperands (AML_LNOT_OP, &RetDesc, WalkState); + Status = AcpiExResolveOperands (AML_LNOT_OP, &RetDesc, WalkState); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("ExecMonadic2/%s: bad operand(s) (Status=%s)\n", - AcpiPsGetOpcodeName (Opcode), AcpiCmFormatException(Status))); + DEBUG_PRINTP (ACPI_ERROR, ("%s: bad operand(s) %s\n", + AcpiPsGetOpcodeName (Opcode), AcpiUtFormatException(Status))); goto Cleanup; } @@ -828,7 +811,7 @@ AcpiAmlExecMonadic2 ( /* Store the result back in the original descriptor */ - Status = AcpiAmlExecStore (RetDesc, ObjDesc, WalkState); + Status = AcpiExStore (RetDesc, ObjDesc, WalkState); /* Objdesc was just deleted (because it is an Reference) */ @@ -847,7 +830,7 @@ AcpiAmlExecMonadic2 ( * Not a Name -- an indirect name pointer would have * been converted to a direct name pointer in ResolveOperands */ - switch (ObjDesc->Reference.OpCode) + switch (ObjDesc->Reference.Opcode) { case AML_ZERO_OP: case AML_ONE_OP: @@ -886,23 +869,17 @@ AcpiAmlExecMonadic2 ( case AML_LOCAL_OP: - - Type = AcpiDsMethodDataGetType (MTH_TYPE_LOCAL, - (ObjDesc->Reference.Offset), WalkState); - break; - - case AML_ARG_OP: - Type = AcpiDsMethodDataGetType (MTH_TYPE_ARG, - (ObjDesc->Reference.Offset), WalkState); + Type = AcpiDsMethodDataGetType (ObjDesc->Reference.Opcode, + ObjDesc->Reference.Offset, WalkState); break; default: - REPORT_ERROR (("AcpiAmlExecMonadic2/TypeOp: Internal error - Unknown Reference subtype %X\n", - ObjDesc->Reference.OpCode)); + REPORT_ERROR (("AcpiExMonadic2/TypeOp: Internal error - Unknown Reference subtype %X\n", + ObjDesc->Reference.Opcode)); Status = AE_AML_INTERNAL; goto Cleanup; } @@ -913,12 +890,24 @@ AcpiAmlExecMonadic2 ( /* * It's not a Reference, so it must be a direct name pointer. */ - Type = AcpiNsGetType ((ACPI_HANDLE) ObjDesc); + Type = AcpiNsGetType ((ACPI_NAMESPACE_NODE *) ObjDesc); + + /* Convert internal types to external types */ + + switch (Type) + { + case INTERNAL_TYPE_REGION_FIELD: + case INTERNAL_TYPE_BANK_FIELD: + case INTERNAL_TYPE_INDEX_FIELD: + + Type = ACPI_TYPE_FIELD_UNIT; + } + } /* Allocate a descriptor to hold the type. */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { Status = AE_NO_MEMORY; @@ -935,7 +924,7 @@ AcpiAmlExecMonadic2 ( if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) { - ObjDesc = AcpiNsGetAttachedObject (ObjDesc); + ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); } if (!ObjDesc) @@ -972,8 +961,7 @@ AcpiAmlExecMonadic2 ( default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMonadic2: Not Buf/Str/Pkg - found type %X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Not Buf/Str/Pkg - found type %X\n", ObjDesc->Common.Type)); Status = AE_AML_OPERAND_TYPE; goto Cleanup; @@ -985,7 +973,7 @@ AcpiAmlExecMonadic2 ( * object to hold the value */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { Status = AE_NO_MEMORY; @@ -1000,7 +988,7 @@ AcpiAmlExecMonadic2 ( case AML_REF_OF_OP: - Status = AcpiAmlGetObjectReference (ObjDesc, &RetDesc, WalkState); + Status = AcpiExGetObjectReference (ObjDesc, &RetDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -1020,34 +1008,21 @@ AcpiAmlExecMonadic2 ( /* * Must resolve/dereference the local/arg reference first */ - switch (ObjDesc->Reference.OpCode) + switch (ObjDesc->Reference.Opcode) { /* Set ObjDesc to the value of the local/arg */ case AML_LOCAL_OP: - - AcpiDsMethodDataGetValue (MTH_TYPE_LOCAL, - (ObjDesc->Reference.Offset), WalkState, &TmpDesc); - - /* - * Delete our reference to the input object and - * point to the object just retrieved - */ - AcpiCmRemoveReference (ObjDesc); - ObjDesc = TmpDesc; - break; - - case AML_ARG_OP: - AcpiDsMethodDataGetValue (MTH_TYPE_ARG, - (ObjDesc->Reference.Offset), WalkState, &TmpDesc); + AcpiDsMethodDataGetValue (ObjDesc->Reference.Opcode, + ObjDesc->Reference.Offset, WalkState, &TmpDesc); /* * Delete our reference to the input object and * point to the object just retrieved */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); ObjDesc = TmpDesc; break; @@ -1069,7 +1044,7 @@ AcpiAmlExecMonadic2 ( /* Returning a pointer to the object, add another reference! */ - AcpiCmAddReference (RetDesc); + AcpiUtAddReference (RetDesc); } else @@ -1079,19 +1054,18 @@ AcpiAmlExecMonadic2 ( * ASL operation -- check internal opcode */ - if ((ObjDesc->Reference.OpCode != AML_INDEX_OP) && - (ObjDesc->Reference.OpCode != AML_REF_OF_OP)) + if ((ObjDesc->Reference.Opcode != AML_INDEX_OP) && + (ObjDesc->Reference.Opcode != AML_REF_OF_OP)) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMonadic2: DerefOf, invalid obj ref %p\n", - ObjDesc)); + DEBUG_PRINTP (ACPI_ERROR, ("Unknown opcode in ref(%p) - %X\n", + ObjDesc, ObjDesc->Reference.Opcode)); Status = AE_TYPE; goto Cleanup; } - switch (ObjDesc->Reference.OpCode) + switch (ObjDesc->Reference.Opcode) { case AML_INDEX_OP: @@ -1112,7 +1086,7 @@ AcpiAmlExecMonadic2 ( * sub-buffer of the main buffer, it is only a pointer to a * single element (byte) of the buffer! */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { Status = AE_NO_MEMORY; @@ -1145,20 +1119,18 @@ AcpiAmlExecMonadic2 ( * severe error. */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMonadic2: DerefOf, NULL package element obj %p\n", + DEBUG_PRINTP (ACPI_ERROR, ("NULL package element obj %p\n", ObjDesc)); Status = AE_AML_UNINITIALIZED_ELEMENT; goto Cleanup; } - AcpiCmAddReference (RetDesc); + AcpiUtAddReference (RetDesc); } else { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMonadic2: DerefOf, Unknown TargetType %X in obj %p\n", + DEBUG_PRINTP (ACPI_ERROR, ("Unknown TargetType %X in obj %p\n", ObjDesc->Reference.TargetType, ObjDesc)); Status = AE_AML_OPERAND_TYPE; goto Cleanup; @@ -1173,7 +1145,7 @@ AcpiAmlExecMonadic2 ( /* Add another reference to the object! */ - AcpiCmAddReference (RetDesc); + AcpiUtAddReference (RetDesc); break; } } @@ -1183,7 +1155,7 @@ AcpiAmlExecMonadic2 ( default: - REPORT_ERROR (("AcpiAmlExecMonadic2: Unknown monadic opcode %X\n", + REPORT_ERROR (("AcpiExMonadic2: Unknown monadic opcode %X\n", Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; @@ -1194,7 +1166,7 @@ Cleanup: if (ObjDesc) { - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); } /* Delete return object on error */ @@ -1202,7 +1174,7 @@ Cleanup: if (ACPI_FAILURE (Status) && (RetDesc)) { - AcpiCmRemoveReference (RetDesc); + AcpiUtRemoveReference (RetDesc); RetDesc = NULL; } diff --git a/sys/contrib/dev/acpica/exnames.c b/sys/contrib/dev/acpica/exnames.c index 9054e2e..f0ac7e9 100644 --- a/sys/contrib/dev/acpica/exnames.c +++ b/sys/contrib/dev/acpica/exnames.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amnames - interpreter/scanner name load/execute - * $Revision: 73 $ + * Module Name: exnames - interpreter/scanner name load/execute + * $Revision: 79 $ * *****************************************************************************/ @@ -115,15 +115,15 @@ * *****************************************************************************/ -#define __AMNAMES_C__ +#define __EXNAMES_C__ #include "acpi.h" #include "acinterp.h" #include "amlcode.h" #include "acnamesp.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amnames") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exnames") /* AML Package Length encodings */ @@ -136,7 +136,7 @@ /******************************************************************************* * - * FUNCTION: AcpiAmlAllocateNameString + * FUNCTION: AcpiExAllocateNameString * * PARAMETERS: PrefixCount - Count of parent levels. Special cases: * (-1) = root, 0 = none @@ -151,7 +151,7 @@ ******************************************************************************/ NATIVE_CHAR * -AcpiAmlAllocateNameString ( +AcpiExAllocateNameString ( UINT32 PrefixCount, UINT32 NumNameSegs) { @@ -159,7 +159,7 @@ AcpiAmlAllocateNameString ( NATIVE_CHAR *NameString; UINT32 SizeNeeded; - FUNCTION_TRACE ("AmlAllocateNameString"); + FUNCTION_TRACE ("ExAllocateNameString"); /* @@ -184,10 +184,10 @@ AcpiAmlAllocateNameString ( * This buffer must be deleted by the caller! */ - NameString = AcpiCmAllocate (SizeNeeded); + NameString = AcpiUtAllocate (SizeNeeded); if (!NameString) { - REPORT_ERROR (("AmlAllocateNameString: name allocation failure\n")); + REPORT_ERROR (("ExAllocateNameString: name allocation failure\n")); return_PTR (NULL); } @@ -227,7 +227,7 @@ AcpiAmlAllocateNameString ( } /* - * Terminate string following prefixes. AcpiAmlExecNameSegment() will + * Terminate string following prefixes. AcpiExNameSegment() will * append the segment(s) */ @@ -238,7 +238,7 @@ AcpiAmlAllocateNameString ( /******************************************************************************* * - * FUNCTION: AcpiAmlExecNameSegment + * FUNCTION: AcpiExNameSegment * * PARAMETERS: InterpreterMode - Current running mode (load1/Load2/Exec) * @@ -249,7 +249,7 @@ AcpiAmlAllocateNameString ( ******************************************************************************/ ACPI_STATUS -AcpiAmlExecNameSegment ( +AcpiExNameSegment ( UINT8 **InAmlAddress, NATIVE_CHAR *NameString) { @@ -259,27 +259,25 @@ AcpiAmlExecNameSegment ( NATIVE_CHAR CharBuf[5]; - FUNCTION_TRACE ("AmlExecNameSegment"); + 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') { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecNameSegment: leading digit: %c\n", CharBuf[0])); + DEBUG_PRINTP (ACPI_ERROR, ("leading digit: %c\n", CharBuf[0])); return_ACPI_STATUS (AE_CTRL_PENDING); } - DEBUG_PRINT (TRACE_LOAD, ("AmlExecNameSegment: Bytes from stream:\n")); + DEBUG_PRINTP (TRACE_LOAD, ("Bytes from stream:\n")); for (Index = 4; - (Index > 0) && (AcpiCmValidAcpiCharacter (*AmlAddress)); + (Index > 0) && (AcpiUtValidAcpiCharacter (*AmlAddress)); --Index) { CharBuf[4 - Index] = *AmlAddress++; @@ -298,14 +296,14 @@ AcpiAmlExecNameSegment ( if (NameString) { STRCAT (NameString, CharBuf); - DEBUG_PRINT (TRACE_NAMES, - ("AmlExecNameSegment: Appended to - %s \n", NameString)); + DEBUG_PRINTP (TRACE_NAMES, + ("Appended to - %s \n", NameString)); } else { - DEBUG_PRINT (TRACE_NAMES, - ("AmlExecNameSegment: No Name string - %s \n", CharBuf)); + DEBUG_PRINTP (TRACE_NAMES, + ("No Name string - %s \n", CharBuf)); } } @@ -315,8 +313,8 @@ AcpiAmlExecNameSegment ( * First character was not a valid name character, * so we are looking at something other than a name. */ - DEBUG_PRINT (ACPI_INFO, - ("AmlExecNameSegment: Leading INT8 not alpha: %02Xh (not a name)\n", + DEBUG_PRINTP (ACPI_INFO, + ("Leading character is not alpha: %02Xh (not a name)\n", CharBuf[0])); Status = AE_CTRL_PENDING; } @@ -326,23 +324,18 @@ AcpiAmlExecNameSegment ( /* Segment started with one or more valid characters, but fewer than 4 */ Status = AE_AML_BAD_NAME; - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecNameSegment: Bad INT8 %02x in name, at %p\n", + DEBUG_PRINTP (ACPI_ERROR, ("Bad character %02x in name, at %p\n", *AmlAddress, AmlAddress)); } - DEBUG_PRINT (TRACE_EXEC, ("Leave AcpiAmlExecNameSegment %s \n", - AcpiCmFormatException (Status))); - *InAmlAddress = AmlAddress; - return_ACPI_STATUS (Status); } /******************************************************************************* * - * FUNCTION: AcpiAmlGetNameString + * FUNCTION: AcpiExGetNameString * * PARAMETERS: DataType - Data type to be associated with this name * @@ -354,8 +347,8 @@ AcpiAmlExecNameSegment ( ACPI_STATUS -AcpiAmlGetNameString ( - OBJECT_TYPE_INTERNAL DataType, +AcpiExGetNameString ( + ACPI_OBJECT_TYPE8 DataType, UINT8 *InAmlAddress, NATIVE_CHAR **OutNameString, UINT32 *OutNameLength) @@ -369,23 +362,23 @@ AcpiAmlGetNameString ( BOOLEAN HasPrefix = FALSE; - FUNCTION_TRACE_PTR ("AmlGetNameString", AmlAddress); + FUNCTION_TRACE_PTR ("ExGetNameString", AmlAddress); - if (INTERNAL_TYPE_DEF_FIELD == DataType || - INTERNAL_TYPE_BANK_FIELD == DataType || + if (INTERNAL_TYPE_REGION_FIELD == DataType || + INTERNAL_TYPE_BANK_FIELD == DataType || INTERNAL_TYPE_INDEX_FIELD == DataType) { - /* Disallow prefixes for types associated with field names */ + /* Disallow prefixes for types associated with FieldUnit names */ - NameString = AcpiAmlAllocateNameString (0, 1); + NameString = AcpiExAllocateNameString (0, 1); if (!NameString) { Status = AE_NO_MEMORY; } else { - Status = AcpiAmlExecNameSegment (&AmlAddress, NameString); + Status = AcpiExNameSegment (&AmlAddress, NameString); } } @@ -406,7 +399,7 @@ AcpiAmlGetNameString ( /* * Remember that we have a RootPrefix -- - * see comment in AcpiAmlAllocateNameString() + * see comment in AcpiExAllocateNameString() */ PrefixCount = (UINT32) -1; HasPrefix = TRUE; @@ -445,7 +438,7 @@ AcpiAmlGetNameString ( Prefix = *AmlAddress++; DEBUG_PRINT (TRACE_LOAD, ("DualNamePrefix: %x\n", Prefix)); - NameString = AcpiAmlAllocateNameString (PrefixCount, 2); + NameString = AcpiExAllocateNameString (PrefixCount, 2); if (!NameString) { Status = AE_NO_MEMORY; @@ -455,10 +448,10 @@ AcpiAmlGetNameString ( /* Indicate that we processed a prefix */ HasPrefix = TRUE; - Status = AcpiAmlExecNameSegment (&AmlAddress, NameString); + Status = AcpiExNameSegment (&AmlAddress, NameString); if (ACPI_SUCCESS (Status)) { - Status = AcpiAmlExecNameSegment (&AmlAddress, NameString); + Status = AcpiExNameSegment (&AmlAddress, NameString); } break; @@ -472,7 +465,7 @@ AcpiAmlGetNameString ( NumSegments = *AmlAddress++; - NameString = AcpiAmlAllocateNameString (PrefixCount, NumSegments); + NameString = AcpiExAllocateNameString (PrefixCount, NumSegments); if (!NameString) { Status = AE_NO_MEMORY; @@ -483,7 +476,7 @@ AcpiAmlGetNameString ( HasPrefix = TRUE; while (NumSegments && - (Status = AcpiAmlExecNameSegment (&AmlAddress, NameString)) == AE_OK) + (Status = AcpiExNameSegment (&AmlAddress, NameString)) == AE_OK) { --NumSegments; } @@ -497,14 +490,13 @@ AcpiAmlGetNameString ( if (-1 == PrefixCount) { - DEBUG_PRINT (TRACE_EXEC, - ("AmlDoName: NameSeg is \"\\\" followed by NULL\n")); + DEBUG_PRINTP (TRACE_EXEC, ("NameSeg is \"\\\" followed by NULL\n")); } /* Consume the NULL byte */ AmlAddress++; - NameString = AcpiAmlAllocateNameString (PrefixCount, 0); + NameString = AcpiExAllocateNameString (PrefixCount, 0); if (!NameString) { Status = AE_NO_MEMORY; @@ -518,14 +510,14 @@ AcpiAmlGetNameString ( /* Name segment string */ - NameString = AcpiAmlAllocateNameString (PrefixCount, 1); + NameString = AcpiExAllocateNameString (PrefixCount, 1); if (!NameString) { Status = AE_NO_MEMORY; break; } - Status = AcpiAmlExecNameSegment (&AmlAddress, NameString); + Status = AcpiExNameSegment (&AmlAddress, NameString); break; } /* Switch (PeekOp ()) */ @@ -537,7 +529,7 @@ AcpiAmlGetNameString ( /* Ran out of segments after processing a prefix */ REPORT_ERROR ( - ("AmlDoName: Malformed Name at %p\n", NameString)); + ("ExDoName: Malformed Name at %p\n", NameString)); Status = AE_AML_BAD_NAME; } diff --git a/sys/contrib/dev/acpica/exprep.c b/sys/contrib/dev/acpica/exprep.c index 13c7d04..951901c 100644 --- a/sys/contrib/dev/acpica/exprep.c +++ b/sys/contrib/dev/acpica/exprep.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amprep - ACPI AML (p-code) execution - field prep utilities - * $Revision: 73 $ + * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities + * $Revision: 89 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMPREP_C__ +#define __EXPREP_C__ #include "acpi.h" #include "acinterp.h" @@ -124,15 +124,16 @@ #include "acparser.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amprep") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exprep") /******************************************************************************* * - * FUNCTION: AcpiAmlDecodeFieldAccessType + * FUNCTION: AcpiExDecodeFieldAccessType * * PARAMETERS: Access - Encoded field access bits + * Length - Field length. * * RETURN: Field granularity (8, 16, or 32) * @@ -141,7 +142,7 @@ ******************************************************************************/ static UINT32 -AcpiAmlDecodeFieldAccessType ( +AcpiExDecodeFieldAccessType ( UINT32 Access, UINT16 Length) { @@ -149,6 +150,9 @@ AcpiAmlDecodeFieldAccessType ( switch (Access) { case ACCESS_ANY_ACC: + + /* Use the length to set the access type */ + if (Length <= 8) { return (8); @@ -161,10 +165,14 @@ AcpiAmlDecodeFieldAccessType ( { return (32); } - else + else if (Length <= 64) { - return (8); + return (64); } + + /* Default is 8 (byte) */ + + return (8); break; case ACCESS_BYTE_ACC: @@ -179,11 +187,15 @@ AcpiAmlDecodeFieldAccessType ( return (32); break; + case ACCESS_QWORD_ACC: /* ACPI 2.0 */ + return (64); + break; + default: /* Invalid field access type */ DEBUG_PRINT (ACPI_ERROR, - ("AmlDecodeFieldAccessType: Unknown field access type %x\n", + ("ExDecodeFieldAccessType: Unknown field access type %x\n", Access)); return (0); } @@ -192,14 +204,14 @@ AcpiAmlDecodeFieldAccessType ( /******************************************************************************* * - * FUNCTION: AcpiAmlPrepCommonFieldObjec + * FUNCTION: AcpiExPrepCommonFieldObject * * PARAMETERS: ObjDesc - The field object - * FieldFlags - Access, LockRule, or UpdateRule. + * FieldFlags - Access, LockRule, and UpdateRule. * The format of a FieldFlag is described * in the ACPI specification - * FieldPosition - Field position - * FieldLength - Field length + * FieldBitPosition - Field start position + * FieldBitLength - Field length in number of bits * * RETURN: Status * @@ -208,54 +220,102 @@ AcpiAmlDecodeFieldAccessType ( * ******************************************************************************/ -static ACPI_STATUS -AcpiAmlPrepCommonFieldObject ( +ACPI_STATUS +AcpiExPrepCommonFieldObject ( ACPI_OPERAND_OBJECT *ObjDesc, UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength) + UINT32 FieldBitPosition, + UINT32 FieldBitLength) { - UINT32 Granularity; + UINT32 AccessBitWidth; + UINT32 NearestByteAddress; - FUNCTION_TRACE ("AmlPrepCommonFieldObject"); + FUNCTION_TRACE ("ExPrepCommonFieldObject"); /* * Note: the structure being initialized is the - * ACPI_COMMON_FIELD_INFO; Therefore, we can just use the Field union to - * access this common area. No structure fields outside of the common area + * ACPI_COMMON_FIELD_INFO; No structure fields outside of the common area * are initialized by this procedure. */ - /* Decode the FieldFlags */ + /* Demultiplex the FieldFlags byte */ - ObjDesc->Field.Access = (UINT8) ((FieldFlags & ACCESS_TYPE_MASK) - >> ACCESS_TYPE_SHIFT); - ObjDesc->Field.LockRule = (UINT8) ((FieldFlags & LOCK_RULE_MASK) + ObjDesc->CommonField.LockRule = (UINT8) ((FieldFlags & LOCK_RULE_MASK) >> LOCK_RULE_SHIFT); - ObjDesc->Field.UpdateRule = (UINT8) ((FieldFlags & UPDATE_RULE_MASK) + ObjDesc->CommonField.UpdateRule = (UINT8) ((FieldFlags & UPDATE_RULE_MASK) >> UPDATE_RULE_SHIFT); - /* Other misc fields */ - ObjDesc->Field.Length = (UINT16) FieldLength; - ObjDesc->Field.AccessAttribute = FieldAttribute; + ObjDesc->CommonField.BitLength = (UINT16) FieldBitLength; /* Decode the access type so we can compute offsets */ - Granularity = AcpiAmlDecodeFieldAccessType (ObjDesc->Field.Access, ObjDesc->Field.Length); - if (!Granularity) + AccessBitWidth = AcpiExDecodeFieldAccessType ( + ((FieldFlags & ACCESS_TYPE_MASK) >> ACCESS_TYPE_SHIFT), + ObjDesc->Field.BitLength); + if (!AccessBitWidth) { return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } - /* Access granularity based fields */ + /* Setup granularity-based fields */ - ObjDesc->Field.Granularity = (UINT8) Granularity; - ObjDesc->Field.BitOffset = (UINT8) (FieldPosition % Granularity); - ObjDesc->Field.Offset = (UINT32) FieldPosition / Granularity; + ObjDesc->CommonField.AccessBitWidth = (UINT8) AccessBitWidth; /* 8, 16, 32, 64 */ + ObjDesc->CommonField.AccessByteWidth = (UINT8) DIV_8 (AccessBitWidth); /* 1, 2, 4, 8 */ + + if (ObjDesc->Common.Type == ACPI_TYPE_BUFFER_FIELD) + { + /* + * BufferField access can be on any byte boundary, so the + * granularity is always 8 + */ + AccessBitWidth = 8; + } + + /* + * 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.) + */ + NearestByteAddress = ROUND_BITS_DOWN_TO_BYTES (FieldBitPosition); + ObjDesc->CommonField.BaseByteOffset = ROUND_DOWN (NearestByteAddress, + ObjDesc->CommonField.AccessByteWidth); + + /* + * StartFieldBitOffset is the offset of the first bit of the field within a field datum. + * This is calculated as the number of bits from the BaseByteOffset. In other words, + * the start of the field is relative to a byte address, regardless of the access type + * of the field. + */ + ObjDesc->CommonField.StartFieldBitOffset = (UINT8) (MOD_8 (FieldBitPosition)); + + /* + * DatumValidBits is the number of valid field bits in the first field datum. + */ + ObjDesc->CommonField.DatumValidBits = (UINT8) (AccessBitWidth - + ObjDesc->CommonField.StartFieldBitOffset); + + /* + * Valid bits -- the number of bits that compose a partial datum, + * 1) At the end of the field within the region (arbitrary starting bit offset) + * 2) At the end of a buffer used to contain the field (starting offset always zero) + */ + ObjDesc->CommonField.EndFieldValidBits = (UINT8) ((ObjDesc->CommonField.StartFieldBitOffset + + FieldBitLength) % AccessBitWidth); + ObjDesc->CommonField.EndBufferValidBits = (UINT8) (FieldBitLength % AccessBitWidth); /* StartBufferBitOffset always = 0 */ + + + /* + * Does the entire field fit within a single field access element + * (datum)? (without crossing a datum boundary) + */ + if ((ObjDesc->CommonField.StartFieldBitOffset + ObjDesc->CommonField.BitLength) <= + (UINT16) ObjDesc->CommonField.AccessBitWidth) + { + ObjDesc->CommonField.AccessFlags |= AFIELD_SINGLE_DATUM; + } return_ACPI_STATUS (AE_OK); @@ -264,15 +324,13 @@ AcpiAmlPrepCommonFieldObject ( /******************************************************************************* * - * FUNCTION: AcpiAmlPrepDefFieldValue + * FUNCTION: AcpiExPrepRegionFieldValue * - * PARAMETERS: Node - Owning Node - * Region - Region in which field is being defined - * FieldFlags - Access, LockRule, or UpdateRule. - * The format of a FieldFlag is described - * in the ACPI specification - * FieldPosition - Field position - * FieldLength - Field length + * PARAMETERS: Node - Owning Node + * RegionNode - Region in which field is being defined + * FieldFlags - Access, LockRule, and UpdateRule. + * FieldBitPosition - Field start position + * FieldBitLength - Field length in number of bits * * RETURN: Status * @@ -282,42 +340,40 @@ AcpiAmlPrepCommonFieldObject ( ******************************************************************************/ ACPI_STATUS -AcpiAmlPrepDefFieldValue ( +AcpiExPrepRegionFieldValue ( ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE Region, + ACPI_HANDLE RegionNode, UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength) + UINT32 FieldBitPosition, + UINT32 FieldBitLength) { ACPI_OPERAND_OBJECT *ObjDesc; UINT32 Type; ACPI_STATUS Status; - FUNCTION_TRACE ("AmlPrepDefFieldValue"); + FUNCTION_TRACE ("ExPrepRegionFieldValue"); /* Parameter validation */ - if (!Region) + if (!RegionNode) { - DEBUG_PRINT (ACPI_ERROR, ("AmlPrepDefFieldValue: null Region\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Null RegionNode\n")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } - Type = AcpiNsGetType (Region); + Type = AcpiNsGetType (RegionNode); if (Type != ACPI_TYPE_REGION) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlPrepDefFieldValue: Needed Region, found type %X %s\n", - Type, AcpiCmGetTypeName (Type))); + DEBUG_PRINTP (ACPI_ERROR, ("Needed Region, found type %X %s\n", + Type, AcpiUtGetTypeName (Type))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* Allocate a new object */ - ObjDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_DEF_FIELD); + ObjDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_REGION_FIELD); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -327,14 +383,14 @@ AcpiAmlPrepDefFieldValue ( /* ObjDesc and Region valid */ DUMP_OPERANDS ((ACPI_OPERAND_OBJECT **) &Node, IMODE_EXECUTE, - "AmlPrepDefFieldValue", 1, "case DefField"); - DUMP_OPERANDS ((ACPI_OPERAND_OBJECT **) &Region, IMODE_EXECUTE, - "AmlPrepDefFieldValue", 1, "case DefField"); + "ExPrepRegionFieldValue", 1, "case RegionField"); + DUMP_OPERANDS ((ACPI_OPERAND_OBJECT **) &RegionNode, IMODE_EXECUTE, + "ExPrepRegionFieldValue", 1, "case RegionField"); /* Initialize areas of the object that are common to all fields */ - Status = AcpiAmlPrepCommonFieldObject (ObjDesc, FieldFlags, FieldAttribute, - FieldPosition, FieldLength); + Status = AcpiExPrepCommonFieldObject (ObjDesc, FieldFlags, + FieldBitPosition, FieldBitLength); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -342,103 +398,88 @@ AcpiAmlPrepDefFieldValue ( /* Initialize areas of the object that are specific to this field type */ - ObjDesc->Field.Container = AcpiNsGetAttachedObject (Region); + ObjDesc->Field.RegionObj = AcpiNsGetAttachedObject (RegionNode); /* An additional reference for the container */ - AcpiCmAddReference (ObjDesc->Field.Container); + AcpiUtAddReference (ObjDesc->Field.RegionObj); /* Debug info */ - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepDefFieldValue: bitoff=%X off=%X gran=%X\n", - ObjDesc->Field.BitOffset, ObjDesc->Field.Offset, - ObjDesc->Field.Granularity)); + DEBUG_PRINTP (ACPI_INFO, ("Bitoff=%X Off=%X Gran=%X Region %p\n", + ObjDesc->Field.StartFieldBitOffset, ObjDesc->Field.BaseByteOffset, + ObjDesc->Field.AccessBitWidth, ObjDesc->Field.RegionObj)); - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepDefFieldValue: set NamedObj %p (%4.4s) val = %p\n", + DEBUG_PRINTP (ACPI_INFO, ("set NamedObj %p (%4.4s) val = %p\n", Node, &(Node->Name), ObjDesc)); - DUMP_STACK_ENTRY (ObjDesc); - DUMP_ENTRY (Region, ACPI_INFO); - DEBUG_PRINT (ACPI_INFO, ("\t%p \n", ObjDesc->Field.Container)); - if (ObjDesc->Field.Container) - { - DUMP_STACK_ENTRY (ObjDesc->Field.Container); - } - DEBUG_PRINT (ACPI_INFO, - ("============================================================\n")); /* - * Store the constructed descriptor (ObjDesc) into the NamedObj whose - * handle is on TOS, preserving the current type of that NamedObj. + * Store the constructed descriptor (ObjDesc) into the parent Node, + * preserving the current type of that NamedObj. */ - Status = AcpiNsAttachObject ((ACPI_HANDLE) Node, ObjDesc, - (UINT8) AcpiNsGetType ((ACPI_HANDLE) Node)); - + Status = AcpiNsAttachObject (Node, ObjDesc, (UINT8) AcpiNsGetType (Node)); return_ACPI_STATUS (Status); } /******************************************************************************* * - * FUNCTION: AcpiAmlPrepBankFieldValue + * FUNCTION: AcpiExPrepBankFieldValue * - * PARAMETERS: Node - Owning Node - * Region - Region in which field is being defined - * BankReg - Bank selection register + * PARAMETERS: Node - Owning Node + * RegionNode - Region in which field is being defined + * BankRegisterNode - Bank selection register node * BankVal - Value to store in selection register - * FieldFlags - Access, LockRule, or UpdateRule - * FieldPosition - Field position - * FieldLength - Field length + * FieldFlags - Access, LockRule, and UpdateRule + * FieldBitPosition - Field start position + * FieldBitLength - Field length in number of bits * * RETURN: Status * - * DESCRIPTION: Construct an ACPI_OPERAND_OBJECT of type BankField and - * connect it to the parent Node. + * DESCRIPTION: Construct an object of type BankField and attach it to the + * parent Node. * ******************************************************************************/ ACPI_STATUS -AcpiAmlPrepBankFieldValue ( +AcpiExPrepBankFieldValue ( ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE Region, - ACPI_HANDLE BankReg, + ACPI_NAMESPACE_NODE *RegionNode, + ACPI_NAMESPACE_NODE *BankRegisterNode, UINT32 BankVal, UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength) + UINT32 FieldBitPosition, + UINT32 FieldBitLength) { ACPI_OPERAND_OBJECT *ObjDesc; UINT32 Type; ACPI_STATUS Status; - FUNCTION_TRACE ("AmlPrepBankFieldValue"); + FUNCTION_TRACE ("ExPrepBankFieldValue"); /* Parameter validation */ - if (!Region) + if (!RegionNode) { - DEBUG_PRINT (ACPI_ERROR, ("AmlPrepBankFieldValue: null Region\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Null RegionNode\n")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } - Type = AcpiNsGetType (Region); + Type = AcpiNsGetType (RegionNode); if (Type != ACPI_TYPE_REGION) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlPrepBankFieldValue: Needed Region, found type %X %s\n", - Type, AcpiCmGetTypeName (Type))); + DEBUG_PRINTP (ACPI_ERROR, ("Needed Region, found type %X %s\n", + Type, AcpiUtGetTypeName (Type))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* Allocate a new object */ - ObjDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_BANK_FIELD); + ObjDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_BANK_FIELD); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -447,14 +488,14 @@ AcpiAmlPrepBankFieldValue ( /* ObjDesc and Region valid */ DUMP_OPERANDS ((ACPI_OPERAND_OBJECT **) &Node, IMODE_EXECUTE, - "AmlPrepBankFieldValue", 1, "case BankField"); - DUMP_OPERANDS ((ACPI_OPERAND_OBJECT **) &Region, IMODE_EXECUTE, - "AmlPrepBankFieldValue", 1, "case BankField"); + "ExPrepBankFieldValue", 1, "case BankField"); + DUMP_OPERANDS ((ACPI_OPERAND_OBJECT **) &RegionNode, IMODE_EXECUTE, + "ExPrepBankFieldValue", 1, "case BankField"); /* Initialize areas of the object that are common to all fields */ - Status = AcpiAmlPrepCommonFieldObject (ObjDesc, FieldFlags, FieldAttribute, - FieldPosition, FieldLength); + Status = AcpiExPrepCommonFieldObject (ObjDesc, FieldFlags, + FieldBitPosition, FieldBitLength); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -462,54 +503,45 @@ AcpiAmlPrepBankFieldValue ( /* Initialize areas of the object that are specific to this field type */ - ObjDesc->BankField.Value = BankVal; - ObjDesc->BankField.Container = AcpiNsGetAttachedObject (Region); - ObjDesc->BankField.BankSelect = AcpiNsGetAttachedObject (BankReg); + ObjDesc->BankField.Value = BankVal; + ObjDesc->BankField.RegionObj = AcpiNsGetAttachedObject (RegionNode); + ObjDesc->BankField.BankRegisterObj = AcpiNsGetAttachedObject (BankRegisterNode); - /* An additional reference for the container and bank select */ - /* TBD: [Restructure] is "BankSelect" ever a real internal object?? */ + /* An additional reference for the attached objects */ - AcpiCmAddReference (ObjDesc->BankField.Container); - AcpiCmAddReference (ObjDesc->BankField.BankSelect); + AcpiUtAddReference (ObjDesc->BankField.RegionObj); + AcpiUtAddReference (ObjDesc->BankField.BankRegisterObj); /* Debug info */ - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepBankFieldValue: bitoff=%X off=%X gran=%X\n", - ObjDesc->BankField.BitOffset, ObjDesc->BankField.Offset, - ObjDesc->Field.Granularity)); + DEBUG_PRINTP (ACPI_INFO, ("BitOff=%X Off=%X Gran=%X Region %p BankReg %p\n", + ObjDesc->BankField.StartFieldBitOffset, ObjDesc->BankField.BaseByteOffset, + ObjDesc->Field.AccessBitWidth, ObjDesc->BankField.RegionObj, + ObjDesc->BankField.BankRegisterObj)); - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepBankFieldValue: set NamedObj %p (%4.4s) val = %p\n", + DEBUG_PRINTP (ACPI_INFO, ("Set NamedObj %p (%4.4s) val=%p\n", Node, &(Node->Name), ObjDesc)); - DUMP_STACK_ENTRY (ObjDesc); - DUMP_ENTRY (Region, ACPI_INFO); - DUMP_ENTRY (BankReg, ACPI_INFO); - DEBUG_PRINT (ACPI_INFO, - ("============================================================\n")); /* - * Store the constructed descriptor (ObjDesc) into the NamedObj whose - * handle is on TOS, preserving the current type of that NamedObj. + * Store the constructed descriptor (ObjDesc) into the parent Node, + * preserving the current type of that NamedObj. */ - Status = AcpiNsAttachObject ((ACPI_HANDLE) Node, ObjDesc, - (UINT8) AcpiNsGetType ((ACPI_HANDLE) Node)); - + Status = AcpiNsAttachObject (Node, ObjDesc, (UINT8) AcpiNsGetType (Node)); return_ACPI_STATUS (Status); } /******************************************************************************* * - * FUNCTION: AcpiAmlPrepIndexFieldValue + * FUNCTION: AcpiExPrepIndexFieldValue * - * PARAMETERS: Node - Owning Node + * PARAMETERS: Node - Owning Node * IndexReg - Index register * DataReg - Data register - * FieldFlags - Access, LockRule, or UpdateRule - * FieldPosition - Field position - * FieldLength - Field length + * FieldFlags - Access, LockRule, and UpdateRule + * FieldBitPosition - Field start position + * FieldBitLength - Field length in number of bits * * RETURN: Status * @@ -519,33 +551,32 @@ AcpiAmlPrepBankFieldValue ( ******************************************************************************/ ACPI_STATUS -AcpiAmlPrepIndexFieldValue ( +AcpiExPrepIndexFieldValue ( ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE IndexReg, - ACPI_HANDLE DataReg, + ACPI_NAMESPACE_NODE *IndexReg, + ACPI_NAMESPACE_NODE *DataReg, UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength) + UINT32 FieldBitPosition, + UINT32 FieldBitLength) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; - FUNCTION_TRACE ("AmlPrepIndexFieldValue"); + FUNCTION_TRACE ("ExPrepIndexFieldValue"); /* Parameter validation */ if (!IndexReg || !DataReg) { - DEBUG_PRINT (ACPI_ERROR, ("AmlPrepIndexFieldValue: null handle\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Null handle\n")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* Allocate a new object descriptor */ - ObjDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_INDEX_FIELD); + ObjDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_INDEX_FIELD); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -553,8 +584,8 @@ AcpiAmlPrepIndexFieldValue ( /* Initialize areas of the object that are common to all fields */ - Status = AcpiAmlPrepCommonFieldObject (ObjDesc, FieldFlags, FieldAttribute, - FieldPosition, FieldLength); + Status = AcpiExPrepCommonFieldObject (ObjDesc, FieldFlags, + FieldBitPosition, FieldBitLength); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -562,35 +593,32 @@ AcpiAmlPrepIndexFieldValue ( /* Initialize areas of the object that are specific to this field type */ - ObjDesc->IndexField.Value = (UINT32) (FieldPosition / - ObjDesc->Field.Granularity); - ObjDesc->IndexField.Index = IndexReg; - ObjDesc->IndexField.Data = DataReg; + ObjDesc->IndexField.DataObj = AcpiNsGetAttachedObject (DataReg); + ObjDesc->IndexField.IndexObj = AcpiNsGetAttachedObject (IndexReg); + ObjDesc->IndexField.Value = (UINT32) (FieldBitPosition / + ObjDesc->Field.AccessBitWidth); + + /* An additional reference for the attached objects */ + + AcpiUtAddReference (ObjDesc->IndexField.DataObj); + AcpiUtAddReference (ObjDesc->IndexField.IndexObj); /* Debug info */ - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepIndexFieldValue: bitoff=%X off=%X gran=%X\n", - ObjDesc->IndexField.BitOffset, ObjDesc->IndexField.Offset, - ObjDesc->Field.Granularity)); + DEBUG_PRINTP (ACPI_INFO, ("bitoff=%X off=%X gran=%X Index %p Data %p\n", + ObjDesc->IndexField.StartFieldBitOffset, ObjDesc->IndexField.BaseByteOffset, + ObjDesc->Field.AccessBitWidth, ObjDesc->IndexField.IndexObj, + ObjDesc->IndexField.DataObj)); - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepIndexFieldValue: set NamedObj %p (%4.4s) val = %p\n", + DEBUG_PRINTP (ACPI_INFO, ("set NamedObj %p (%4.4s) val = %p\n", Node, &(Node->Name), ObjDesc)); - DUMP_STACK_ENTRY (ObjDesc); - DUMP_ENTRY (IndexReg, ACPI_INFO); - DUMP_ENTRY (DataReg, ACPI_INFO); - DEBUG_PRINT (ACPI_INFO, - ("============================================================\n")); /* - * Store the constructed descriptor (ObjDesc) into the NamedObj whose - * handle is on TOS, preserving the current type of that NamedObj. + * Store the constructed descriptor (ObjDesc) into the parent Node, + * preserving the current type of that NamedObj. */ - Status = AcpiNsAttachObject ((ACPI_HANDLE) Node, ObjDesc, - (UINT8) AcpiNsGetType ((ACPI_HANDLE) Node)); - + Status = AcpiNsAttachObject (Node, ObjDesc, (UINT8) AcpiNsGetType (Node)); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/exregion.c b/sys/contrib/dev/acpica/exregion.c index ca01974..74894f5 100644 --- a/sys/contrib/dev/acpica/exregion.c +++ b/sys/contrib/dev/acpica/exregion.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amregion - ACPI default OpRegion (address space) handlers - * $Revision: 44 $ + * Module Name: exregion - ACPI default OpRegion (address space) handlers + * $Revision: 48 $ * *****************************************************************************/ @@ -116,7 +116,7 @@ *****************************************************************************/ -#define __AMREGION_C__ +#define __EXREGION_C__ #include "acpi.h" #include "acinterp.h" @@ -126,13 +126,13 @@ #include "acevents.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amregion") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exregion") /******************************************************************************* * - * FUNCTION: AcpiAmlSystemMemorySpaceHandler + * FUNCTION: AcpiExSystemMemorySpaceHandler * * PARAMETERS: Function - Read or Write operation * Address - Where in the space to read or write @@ -149,7 +149,7 @@ ******************************************************************************/ ACPI_STATUS -AcpiAmlSystemMemorySpaceHandler ( +AcpiExSystemMemorySpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, @@ -159,11 +159,11 @@ AcpiAmlSystemMemorySpaceHandler ( { ACPI_STATUS Status = AE_OK; void *LogicalAddrPtr = NULL; - MEM_HANDLER_CONTEXT *MemInfo = RegionContext; + ACPI_MEM_SPACE_CONTEXT *MemInfo = RegionContext; UINT32 Length; - FUNCTION_TRACE ("AmlSystemMemorySpaceHandler"); + FUNCTION_TRACE ("ExSystemMemorySpaceHandler"); /* Validate and translate the bit width */ @@ -183,8 +183,7 @@ AcpiAmlSystemMemorySpaceHandler ( break; default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlSystemMemorySpaceHandler: Invalid SystemMemory width %d\n", + DEBUG_PRINTP (ACPI_ERROR, ("Invalid SystemMemory width %d\n", BitWidth)); return_ACPI_STATUS (AE_AML_OPERAND_VALUE); break; @@ -247,7 +246,7 @@ AcpiAmlSystemMemorySpaceHandler ( switch (Function) { - case ADDRESS_SPACE_READ: + case ACPI_READ_ADR_SPACE: DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), ("Read (%d width) Address=%p\n", BitWidth, Address)); @@ -270,7 +269,7 @@ AcpiAmlSystemMemorySpaceHandler ( break; - case ADDRESS_SPACE_WRITE: + case ACPI_WRITE_ADR_SPACE: DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), ("Write (%d width) Address=%p Value %X\n", @@ -305,7 +304,7 @@ AcpiAmlSystemMemorySpaceHandler ( /******************************************************************************* * - * FUNCTION: AcpiAmlSystemIoSpaceHandler + * FUNCTION: AcpiExSystemIoSpaceHandler * * PARAMETERS: Function - Read or Write operation * Address - Where in the space to read or write @@ -322,7 +321,7 @@ AcpiAmlSystemMemorySpaceHandler ( ******************************************************************************/ ACPI_STATUS -AcpiAmlSystemIoSpaceHandler ( +AcpiExSystemIoSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, @@ -333,7 +332,7 @@ AcpiAmlSystemIoSpaceHandler ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("AmlSystemIoSpaceHandler"); + FUNCTION_TRACE ("ExSystemIoSpaceHandler"); /* Decode the function parameter */ @@ -341,7 +340,7 @@ AcpiAmlSystemIoSpaceHandler ( switch (Function) { - case ADDRESS_SPACE_READ: + case ACPI_READ_ADR_SPACE: DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), ("Read(%d width) Address=%p\n", BitWidth, Address)); @@ -363,8 +362,7 @@ AcpiAmlSystemIoSpaceHandler ( break; default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlSystemIoSpaceHandler: Invalid SystemIO width %d\n", + DEBUG_PRINTP (ACPI_ERROR, ("Invalid SystemIO width %d\n", BitWidth)); Status = AE_AML_OPERAND_VALUE; } @@ -372,7 +370,7 @@ AcpiAmlSystemIoSpaceHandler ( break; - case ADDRESS_SPACE_WRITE: + case ACPI_WRITE_ADR_SPACE: DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), ("Write(%d width) Address=%p Value %X\n", @@ -394,8 +392,7 @@ AcpiAmlSystemIoSpaceHandler ( break; default: - DEBUG_PRINT (ACPI_ERROR, ( - "AmlSystemIoSpaceHandler: Invalid SystemIO width %d\n", + DEBUG_PRINTP (ACPI_ERROR, ("Invalid SystemIO width %d\n", BitWidth)); Status = AE_AML_OPERAND_VALUE; } @@ -413,7 +410,7 @@ AcpiAmlSystemIoSpaceHandler ( /******************************************************************************* * - * FUNCTION: AcpiAmlPciConfigSpaceHandler + * FUNCTION: AcpiExPciConfigSpaceHandler * * PARAMETERS: Function - Read or Write operation * Address - Where in the space to read or write @@ -430,7 +427,7 @@ AcpiAmlSystemIoSpaceHandler ( ******************************************************************************/ ACPI_STATUS -AcpiAmlPciConfigSpaceHandler ( +AcpiExPciConfigSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, @@ -442,10 +439,10 @@ AcpiAmlPciConfigSpaceHandler ( UINT32 PciBus; UINT32 DevFunc; UINT8 PciReg; - PCI_HANDLER_CONTEXT *PCIContext; + ACPI_PCI_SPACE_CONTEXT *PCIContext; - FUNCTION_TRACE ("AmlPciConfigSpaceHandler"); + FUNCTION_TRACE ("ExPciConfigSpaceHandler"); /* * The arguments to AcpiOs(Read|Write)PciCfg(Byte|Word|Dword) are: @@ -462,10 +459,10 @@ AcpiAmlPciConfigSpaceHandler ( * */ - PCIContext = (PCI_HANDLER_CONTEXT *) RegionContext; + PCIContext = (ACPI_PCI_SPACE_CONTEXT *) RegionContext; - PciBus = LOWORD(PCIContext->Seg) << 16; - PciBus |= LOWORD(PCIContext->Bus); + PciBus = LOWORD (PCIContext->Seg) << 16; + PciBus |= LOWORD (PCIContext->Bus); DevFunc = PCIContext->DevFunc; @@ -474,7 +471,7 @@ AcpiAmlPciConfigSpaceHandler ( switch (Function) { - case ADDRESS_SPACE_READ: + case ACPI_READ_ADR_SPACE: DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), ("R%d S(%04x) B(%04x) DF(%08x) R(%04x)\n", BitWidth, @@ -502,8 +499,7 @@ AcpiAmlPciConfigSpaceHandler ( break; default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlPciConfigSpaceHandler: Invalid PCIConfig width %d\n", + DEBUG_PRINTP (ACPI_ERROR, ("Invalid PCIConfig width %d\n", BitWidth)); Status = AE_AML_OPERAND_VALUE; @@ -512,7 +508,7 @@ AcpiAmlPciConfigSpaceHandler ( break; - case ADDRESS_SPACE_WRITE: + case ACPI_WRITE_ADR_SPACE: DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), ("W%d S(%04x) B(%04x) DF(%08x) R(%04x) D(%08x)\n", BitWidth, @@ -539,8 +535,7 @@ AcpiAmlPciConfigSpaceHandler ( break; default: - DEBUG_PRINT (ACPI_ERROR, ( - "AmlPciConfigSpaceHandler: Invalid PCIConfig width %d\n", + DEBUG_PRINTP (ACPI_ERROR, ("Invalid PCIConfig width %d\n", BitWidth)); Status = AE_AML_OPERAND_VALUE; diff --git a/sys/contrib/dev/acpica/exresnte.c b/sys/contrib/dev/acpica/exresnte.c index 659d6f6..c819a13 100644 --- a/sys/contrib/dev/acpica/exresnte.c +++ b/sys/contrib/dev/acpica/exresnte.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amresnte - AML Interpreter object resolution - * $Revision: 27 $ + * Module Name: exresnte - AML Interpreter object resolution + * $Revision: 37 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMRESNTE_C__ +#define __EXRESNTE_C__ #include "acpi.h" #include "amlcode.h" @@ -127,21 +127,22 @@ #include "acevents.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amresnte") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exresnte") /******************************************************************************* * - * FUNCTION: AcpiAmlResolveNodeToValue + * FUNCTION: AcpiExResolveNodeToValue * * PARAMETERS: StackPtr - Pointer to a location on a stack that contains - * a pointer to an Node + * a pointer to a Node + * WalkState - Current state * * RETURN: Status * - * DESCRIPTION: Resolve a ACPI_NAMESPACE_NODE (Node, - * A.K.A. a "direct name pointer") + * DESCRIPTION: Resolve a Namespace node (AKA a "direct name pointer") 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 @@ -156,40 +157,35 @@ ******************************************************************************/ ACPI_STATUS -AcpiAmlResolveNodeToValue ( +AcpiExResolveNodeToValue ( ACPI_NAMESPACE_NODE **StackPtr, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ValDesc = NULL; + ACPI_OPERAND_OBJECT *ValDesc; ACPI_OPERAND_OBJECT *ObjDesc = NULL; ACPI_NAMESPACE_NODE *Node; UINT8 *AmlPointer = NULL; - OBJECT_TYPE_INTERNAL EntryType; - BOOLEAN Locked; + ACPI_OBJECT_TYPE8 EntryType; + ACPI_INTEGER TempVal; BOOLEAN AttachedAmlPointer = FALSE; UINT8 AmlOpcode = 0; - ACPI_INTEGER TempVal; - OBJECT_TYPE_INTERNAL ObjectType; - - FUNCTION_TRACE ("AmlResolveEntryToValue"); - Node = *StackPtr; + FUNCTION_TRACE ("ExResolveNodeToValue"); /* - * The stack pointer is a "Direct name ptr", and points to a - * a ACPI_NAMESPACE_NODE (Node). Get the pointer that is attached to - * the Node. + * The stack pointer points to a ACPI_NAMESPACE_NODE (Node). Get the + * object that is attached to the Node. */ - ValDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Node); - EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); + Node = *StackPtr; + ValDesc = AcpiNsGetAttachedObject (Node); + EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); - DEBUG_PRINT (TRACE_EXEC, - ("AmlResolveEntryToValue: Entry=%p ValDesc=%p Type=%X\n", + DEBUG_PRINTP (TRACE_EXEC, ("Entry=%p ValDesc=%p Type=%X\n", Node, ValDesc, EntryType)); /* @@ -200,12 +196,13 @@ AcpiAmlResolveNodeToValue ( if (AcpiTbSystemTablePointer (ValDesc)) { + /* CAN THIS EVERY HAPPEN NOW? TBD!!! */ + AttachedAmlPointer = TRUE; - AmlOpcode = *((UINT8 *) ValDesc); - AmlPointer = ((UINT8 *) ValDesc) + 1; + AmlOpcode = *((UINT8 *) ValDesc); + AmlPointer = ((UINT8 *) ValDesc) + 1; - DEBUG_PRINT (TRACE_EXEC, - ("AmlResolveEntryToValue: Unparsed AML: %p Len=%X\n", + DEBUG_PRINTP (TRACE_EXEC, ("Unparsed AML: %p Len=%X\n", AmlOpcode, AmlPointer)); } @@ -225,8 +222,7 @@ AcpiAmlResolveNodeToValue ( if (!ValDesc) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: No object attached to node %p\n", + DEBUG_PRINTP (ACPI_ERROR, ("No object attached to node %p\n", Node)); return_ACPI_STATUS (AE_AML_NO_OPERAND); } @@ -246,8 +242,7 @@ AcpiAmlResolveNodeToValue ( * This means that the package initialization is not parsed * -- should not happen */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Unparsed Packages not supported!\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Unparsed Packages not supported!\n")); return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } @@ -255,8 +250,7 @@ AcpiAmlResolveNodeToValue ( if (ACPI_TYPE_PACKAGE != ValDesc->Common.Type) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Object not a package, type %X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Object not a package, type %X\n", ValDesc->Common.Type)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -264,7 +258,7 @@ AcpiAmlResolveNodeToValue ( /* Return an additional reference to the object */ ObjDesc = ValDesc; - AcpiCmAddReference (ObjDesc); + AcpiUtAddReference (ObjDesc); break; @@ -276,8 +270,7 @@ AcpiAmlResolveNodeToValue ( * This means that the buffer initialization is not parsed * -- should not happen */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Unparsed Buffers not supported!\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Unparsed Buffers not supported!\n")); return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } @@ -285,8 +278,7 @@ AcpiAmlResolveNodeToValue ( if (ACPI_TYPE_BUFFER != ValDesc->Common.Type) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Object not a buffer, type %X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Object not a buffer, type %X\n", ValDesc->Common.Type)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -294,7 +286,7 @@ AcpiAmlResolveNodeToValue ( /* Return an additional reference to the object */ ObjDesc = ValDesc; - AcpiCmAddReference (ObjDesc); + AcpiUtAddReference (ObjDesc); break; @@ -304,7 +296,7 @@ AcpiAmlResolveNodeToValue ( { /* Allocate a new string object */ - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_STRING); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_STRING); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -320,8 +312,7 @@ AcpiAmlResolveNodeToValue ( { if (ACPI_TYPE_STRING != ValDesc->Common.Type) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Object not a string, type %X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Object not a string, type %X\n", ValDesc->Common.Type)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -329,7 +320,7 @@ AcpiAmlResolveNodeToValue ( /* Return an additional reference to the object */ ObjDesc = ValDesc; - AcpiCmAddReference (ObjDesc); + AcpiUtAddReference (ObjDesc); } break; @@ -337,7 +328,7 @@ AcpiAmlResolveNodeToValue ( case ACPI_TYPE_INTEGER: - DEBUG_PRINT (TRACE_EXEC, ("AmlResolveEntryToValue: case Number \n")); + DEBUG_PRINTP (TRACE_EXEC, ("case Integer \n")); /* * The Node has an attached internal object, make sure that it's a @@ -346,8 +337,7 @@ AcpiAmlResolveNodeToValue ( if (ACPI_TYPE_INTEGER != ValDesc->Common.Type) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveToValue: Object not a Number, type %X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Object not a Number, type %X\n", ValDesc->Common.Type)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -355,237 +345,19 @@ AcpiAmlResolveNodeToValue ( /* Return an additional reference to the object */ ObjDesc = ValDesc; - AcpiCmAddReference (ObjDesc); - break; - - - case INTERNAL_TYPE_DEF_FIELD: - - /* - * TBD: [Investigate] Is this the correct solution? - * - * This section was extended to convert to generic buffer if - * the return length is greater than 32 bits, but still allows - * for returning a type Number for smaller values because the - * caller can then apply arithmetic operators on those fields. - * - * XXX - Implementation limitation: Fields are implemented as type - * XXX - Number, but they really are supposed to be type Buffer. - * XXX - The two are interchangeable only for lengths <= 32 bits. - */ - if(ValDesc->Field.Length > 32) - { - ObjectType = ACPI_TYPE_BUFFER; - } - else - { - ObjectType = ACPI_TYPE_INTEGER; - } - - /* - * Create the destination buffer object and the buffer space. - */ - ObjDesc = AcpiCmCreateInternalObject (ObjectType); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * Fill in the object specific details - */ - if (ACPI_TYPE_BUFFER == ObjectType) - { - ObjDesc->Buffer.Pointer = AcpiCmCallocate (ValDesc->Field.Length); - if (!ObjDesc->Buffer.Pointer) - { - AcpiCmRemoveReference(ObjDesc); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjDesc->Buffer.Length = ValDesc->Field.Length; - - Status = AcpiAmlAccessNamedField (ACPI_READ, (ACPI_HANDLE) Node, - ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - else - { - Status = AcpiAmlAccessNamedField (ACPI_READ, (ACPI_HANDLE) Node, - &TempVal, sizeof (TempVal)); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ObjDesc->Integer.Value = TempVal; - } - - - DEBUG_PRINT (TRACE_EXEC, - ("AmlResolveEntryToValue: DefField Entry=%p ValDesc=%p Type=%X\n", - Node, ValDesc, EntryType)); + AcpiUtAddReference (ObjDesc); break; + case ACPI_TYPE_BUFFER_FIELD: + case INTERNAL_TYPE_REGION_FIELD: case INTERNAL_TYPE_BANK_FIELD: - - if (AttachedAmlPointer) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: BankField cannot be an Aml ptr\n")); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - if (INTERNAL_TYPE_BANK_FIELD != ValDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, ( - "AmlResolveToValue: Object not a BankField, type %X\n", - ValDesc->Common.Type)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - - /* Get the global lock if needed */ - - ObjDesc = (ACPI_OPERAND_OBJECT *) *StackPtr; - Locked = AcpiAmlAcquireGlobalLock (ObjDesc->FieldUnit.LockRule); - - /* Set Index value to select proper Data register */ - /* perform the update */ - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - ValDesc->BankField.BankSelect, &ValDesc->BankField.Value, - sizeof (ValDesc->BankField.Value)); - - AcpiAmlReleaseGlobalLock (Locked); - - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Read Data value */ - - Status = AcpiAmlAccessNamedField (ACPI_READ, - (ACPI_HANDLE) ValDesc->BankField.Container, - &TempVal, sizeof (TempVal)); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Create an object for the result */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjDesc->Integer.Value = TempVal; - break; - - case INTERNAL_TYPE_INDEX_FIELD: - if (AttachedAmlPointer) - { - DEBUG_PRINT (ACPI_ERROR, ("AmlResolveEntryToValue: Internal - IndexField cannot be an Aml ptr\n")); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - if (INTERNAL_TYPE_INDEX_FIELD != ValDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, ( - "AmlResolveToValue: Object not an IndexField, type %X\n", - ValDesc->Common.Type)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - - /* Set Index value to select proper Data register */ - /* Get the global lock if needed */ - - ObjDesc = (ACPI_OPERAND_OBJECT *) *StackPtr; - Locked = AcpiAmlAcquireGlobalLock (ObjDesc->FieldUnit.LockRule); - - /* Perform the update */ - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - ValDesc->IndexField.Index, &ValDesc->IndexField.Value, - sizeof (ValDesc->IndexField.Value)); - - AcpiAmlReleaseGlobalLock (Locked); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Read Data value */ - - Status = AcpiAmlAccessNamedField (ACPI_READ, ValDesc->IndexField.Data, - &TempVal, sizeof (TempVal)); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Create an object for the result */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjDesc->Integer.Value = TempVal; - break; - - - case ACPI_TYPE_FIELD_UNIT: - - if (AttachedAmlPointer) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: FieldUnit cannot be an Aml ptr\n")); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - if (ValDesc->Common.Type != (UINT8) EntryType) - { - DEBUG_PRINT (ACPI_ERROR, ( - "AmlResolveToValue: Object type %X not same as EntryType %X\n", - ValDesc->Common.Type, EntryType)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - break; - } - - /* Create object for result */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_ANY); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiAmlGetFieldUnitValue (ValDesc, ObjDesc); - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); - } + DEBUG_PRINTP (TRACE_EXEC, ("FieldRead Node=%p ValDesc=%p Type=%X\n", + Node, ValDesc, EntryType)); + Status = AcpiExReadDataFromField (ValDesc, &ObjDesc); break; @@ -605,7 +377,7 @@ AcpiAmlResolveNodeToValue ( /* Return an additional reference to the object */ ObjDesc = ValDesc; - AcpiCmAddReference (ObjDesc); + AcpiUtAddReference (ObjDesc); break; @@ -613,8 +385,7 @@ AcpiAmlResolveNodeToValue ( case ACPI_TYPE_ANY: - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Untyped entry %p, no attached object!\n", + DEBUG_PRINTP (ACPI_ERROR, ("Untyped entry %p, no attached object!\n", Node)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); /* Cannot be AE_TYPE */ @@ -623,12 +394,11 @@ AcpiAmlResolveNodeToValue ( /* * The only named references allowed are named constants - * - * e.g. Name (\OSFL, Ones) + * e.g. -- Name (\OSFL, Ones) */ case INTERNAL_TYPE_REFERENCE: - switch (ValDesc->Reference.OpCode) + switch (ValDesc->Reference.Opcode) { case AML_ZERO_OP: @@ -636,31 +406,27 @@ AcpiAmlResolveNodeToValue ( TempVal = 0; break; - case AML_ONE_OP: TempVal = 1; break; - case AML_ONES_OP: TempVal = ACPI_INTEGER_MAX; break; - default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveToValue/Number: Unsupported reference opcode %X\n", - ValDesc->Reference.OpCode)); + DEBUG_PRINTP (ACPI_ERROR, ("Unsupported reference opcode %X\n", + ValDesc->Reference.Opcode)); return_ACPI_STATUS (AE_AML_BAD_OPCODE); } /* Create object for result */ - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -670,7 +436,7 @@ AcpiAmlResolveNodeToValue ( /* Truncate value if we are executing from a 32-bit ACPI table */ - AcpiAmlTruncateFor32bitTable (ObjDesc, WalkState); + AcpiExTruncateFor32bitTable (ObjDesc, WalkState); break; @@ -678,8 +444,7 @@ AcpiAmlResolveNodeToValue ( default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Node %p - Unknown object type %X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Node %p - Unknown object type %X\n", Node, EntryType)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -690,7 +455,6 @@ AcpiAmlResolveNodeToValue ( /* Put the object descriptor on the stack */ *StackPtr = (void *) ObjDesc; - return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/exresolv.c b/sys/contrib/dev/acpica/exresolv.c index 26ecd31..9dfa569 100644 --- a/sys/contrib/dev/acpica/exresolv.c +++ b/sys/contrib/dev/acpica/exresolv.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amresolv - AML Interpreter object resolution - * $Revision: 81 $ + * Module Name: exresolv - AML Interpreter object resolution + * $Revision: 95 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMRESOLV_C__ +#define __EXRESOLV_C__ #include "acpi.h" #include "amlcode.h" @@ -127,90 +127,78 @@ #include "acevents.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amresolv") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exresolv") /******************************************************************************* * - * FUNCTION: AcpiAmlGetFieldUnitValue + * FUNCTION: AcpiExGetBufferFieldValue * - * PARAMETERS: *FieldDesc - Pointer to a FieldUnit - * *ResultDesc - Pointer to an empty descriptor - * which will become a Number - * containing the field's value. + * PARAMETERS: *ObjDesc - Pointer to a BufferField + * *ResultDesc - Pointer to an empty descriptor which will + * become an Integer with the field's value * * RETURN: Status * - * DESCRIPTION: Retrieve the value from a FieldUnit + * DESCRIPTION: Retrieve the value from a BufferField * ******************************************************************************/ ACPI_STATUS -AcpiAmlGetFieldUnitValue ( - ACPI_OPERAND_OBJECT *FieldDesc, +AcpiExGetBufferFieldValue ( + ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *ResultDesc) { - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; UINT32 Mask; - UINT8 *Location = NULL; - BOOLEAN Locked = FALSE; + UINT8 *Location; - FUNCTION_TRACE ("AmlGetFieldUnitValue"); + FUNCTION_TRACE ("ExGetBufferFieldValue"); - if (!FieldDesc) + /* + * Parameter validation + */ + if (!ObjDesc) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlGetFieldUnitValue: Internal error - null field pointer\n")); - Status = AE_AML_NO_OPERAND; + DEBUG_PRINTP (ACPI_ERROR, ("Internal - null field pointer\n")); + return_ACPI_STATUS (AE_AML_NO_OPERAND); } - if (!(FieldDesc->Common.Flags & AOPOBJ_DATA_VALID)) + if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) { - Status = AcpiDsGetFieldUnitArguments (FieldDesc); + Status = AcpiDsGetBufferFieldArguments (ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } - if (!FieldDesc->FieldUnit.Container) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlGetFieldUnitValue: Internal error - null container pointer\n")); - Status = AE_AML_INTERNAL; - } - - else if (ACPI_TYPE_BUFFER != FieldDesc->FieldUnit.Container->Common.Type) + if (!ObjDesc->BufferField.BufferObj) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlGetFieldUnitValue: Internal error - container is not a Buffer\n")); - Status = AE_AML_OPERAND_TYPE; + DEBUG_PRINTP (ACPI_ERROR, ("Internal - null container pointer\n")); + return_ACPI_STATUS (AE_AML_INTERNAL); } - else if (!ResultDesc) + if (ACPI_TYPE_BUFFER != ObjDesc->BufferField.BufferObj->Common.Type) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlGetFieldUnitValue: Internal error - null result pointer\n")); - Status = AE_AML_INTERNAL; + DEBUG_PRINTP (ACPI_ERROR, ("Internal - container is not a Buffer\n")); + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } - if (ACPI_FAILURE (Status)) + if (!ResultDesc) { - return_ACPI_STATUS (Status); + DEBUG_PRINTP (ACPI_ERROR, ("Internal - null result pointer\n")); + return_ACPI_STATUS (AE_AML_INTERNAL); } - /* Get the global lock if needed */ - - Locked = AcpiAmlAcquireGlobalLock (FieldDesc->FieldUnit.LockRule); - /* Field location is (base of buffer) + (byte offset) */ - Location = FieldDesc->FieldUnit.Container->Buffer.Pointer - + FieldDesc->FieldUnit.Offset; + Location = ObjDesc->BufferField.BufferObj->Buffer.Pointer + + ObjDesc->BufferField.BaseByteOffset; /* * Construct Mask with as many 1 bits as the field width @@ -218,12 +206,11 @@ AcpiAmlGetFieldUnitValue ( * NOTE: Only the bottom 5 bits are valid for a shift operation, so * special care must be taken for any shift greater than 31 bits. * - * TBD: [Unhandled] Fields greater than 32-bits will not work. + * TBD: [Unhandled] Fields greater than 32 bits will not work. */ - - if (FieldDesc->FieldUnit.Length < 32) + if (ObjDesc->BufferField.BitLength < 32) { - Mask = ((UINT32) 1 << FieldDesc->FieldUnit.Length) - (UINT32) 1; + Mask = ((UINT32) 1 << ObjDesc->BufferField.BitLength) - (UINT32) 1; } else { @@ -240,33 +227,29 @@ AcpiAmlGetFieldUnitValue ( * Shift the 32-bit word containing the field, and mask off the * resulting value */ - ResultDesc->Integer.Value = - (ResultDesc->Integer.Value >> FieldDesc->FieldUnit.BitOffset) & Mask; + (ResultDesc->Integer.Value >> ObjDesc->BufferField.StartFieldBitOffset) & Mask; DEBUG_PRINT (ACPI_INFO, ("** Read from buffer %p byte %ld bit %d width %d addr %p mask %08lx val %08lx\n", - FieldDesc->FieldUnit.Container->Buffer.Pointer, - FieldDesc->FieldUnit.Offset, - FieldDesc->FieldUnit.BitOffset, - FieldDesc->FieldUnit.Length, + ObjDesc->BufferField.BufferObj->Buffer.Pointer, + ObjDesc->BufferField.BaseByteOffset, + ObjDesc->BufferField.StartFieldBitOffset, + ObjDesc->BufferField.BitLength, Location, Mask, ResultDesc->Integer.Value)); - /* Release global lock if we acquired it earlier */ - - AcpiAmlReleaseGlobalLock (Locked); - - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_OK); } /******************************************************************************* * - * FUNCTION: AcpiAmlResolveToValue + * FUNCTION: AcpiExResolveToValue * * PARAMETERS: **StackPtr - Points to entry on ObjStack, which can - * be either an (ACPI_OPERAND_OBJECT *) + * be either an (ACPI_OPERAND_OBJECT *) * or an ACPI_HANDLE. + * WalkState - Current method state * * RETURN: Status * @@ -275,20 +258,19 @@ AcpiAmlGetFieldUnitValue ( ******************************************************************************/ ACPI_STATUS -AcpiAmlResolveToValue ( +AcpiExResolveToValue ( ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState) { - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("AmlResolveToValue", StackPtr); + FUNCTION_TRACE_PTR ("ExResolveToValue", StackPtr); if (!StackPtr || !*StackPtr) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveToValue: Internal error - null pointer\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Internal - null pointer\n")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } @@ -298,11 +280,9 @@ AcpiAmlResolveToValue ( * 1) A valid ACPI_OPERAND_OBJECT, or * 2) A ACPI_NAMESPACE_NODE (NamedObj) */ - if (VALID_DESCRIPTOR_TYPE (*StackPtr, ACPI_DESC_TYPE_INTERNAL)) { - - Status = AcpiAmlResolveObjectToValue (StackPtr, WalkState); + Status = AcpiExResolveObjectToValue (StackPtr, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -310,29 +290,32 @@ AcpiAmlResolveToValue ( } /* - * Object on the stack may have changed if AcpiAmlResolveObjectToValue() + * Object on the stack may have changed if AcpiExResolveObjectToValue() * was called (i.e., we can't use an _else_ here.) */ - if (VALID_DESCRIPTOR_TYPE (*StackPtr, ACPI_DESC_TYPE_NAMED)) { - Status = AcpiAmlResolveNodeToValue ((ACPI_NAMESPACE_NODE **) StackPtr, WalkState); + Status = AcpiExResolveNodeToValue ((ACPI_NAMESPACE_NODE **) StackPtr, + WalkState); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } } - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveToValue: Returning resolved object %p\n", *StackPtr)); - - return_ACPI_STATUS (Status); + DEBUG_PRINTP (ACPI_INFO, ("Resolved object %p\n", *StackPtr)); + return_ACPI_STATUS (AE_OK); } /******************************************************************************* * - * FUNCTION: AcpiAmlResolveObjectToValue + * FUNCTION: AcpiExResolveObjectToValue * * PARAMETERS: StackPtr - Pointer to a stack location that contains a * ptr to an internal object. + * WalkState - Current method state * * RETURN: Status * @@ -342,19 +325,18 @@ AcpiAmlResolveToValue ( ******************************************************************************/ ACPI_STATUS -AcpiAmlResolveObjectToValue ( +AcpiExResolveObjectToValue ( ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState) { - ACPI_OPERAND_OBJECT *StackDesc; ACPI_STATUS Status = AE_OK; - ACPI_HANDLE TempHandle = NULL; - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - UINT32 Index = 0; + ACPI_OPERAND_OBJECT *StackDesc; + void *TempNode; + ACPI_OPERAND_OBJECT *ObjDesc; UINT16 Opcode; - FUNCTION_TRACE ("AmlResolveObjectToValue"); + FUNCTION_TRACE ("ExResolveObjectToValue"); StackDesc = *StackPtr; @@ -366,7 +348,7 @@ AcpiAmlResolveObjectToValue ( case INTERNAL_TYPE_REFERENCE: - Opcode = StackDesc->Reference.OpCode; + Opcode = StackDesc->Reference.Opcode; switch (Opcode) { @@ -375,74 +357,29 @@ AcpiAmlResolveObjectToValue ( /* * Convert indirect name ptr to a direct name ptr. - * Then, AcpiAmlResolveNodeToValue can be used to get the value + * Then, AcpiExResolveNodeToValue can be used to get the value */ - - TempHandle = StackDesc->Reference.Object; + TempNode = StackDesc->Reference.Object; /* Delete the Reference Object */ - AcpiCmRemoveReference (StackDesc); + AcpiUtRemoveReference (StackDesc); /* Put direct name pointer onto stack and exit */ - (*StackPtr) = TempHandle; - Status = AE_OK; + (*StackPtr) = TempNode; break; case AML_LOCAL_OP: - - Index = StackDesc->Reference.Offset; + case AML_ARG_OP: /* * Get the local from the method's state info * Note: this increments the local's object reference count */ - - Status = AcpiDsMethodDataGetValue (MTH_TYPE_LOCAL, Index, - WalkState, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Now we can delete the original Reference Object and - * replace it with the resolve value - */ - - AcpiCmRemoveReference (StackDesc); - *StackPtr = ObjDesc; - - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveObjectToValue: [Local%d] ValueObj is %p\n", - Index, ObjDesc)); - - if (ACPI_TYPE_INTEGER == ObjDesc->Common.Type) - { - /* Value is a Number */ - - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveObjectToValue: [Local%d] value=%X \n", - Index, ObjDesc->Integer.Value)); - } - - break; - - - case AML_ARG_OP: - - Index = StackDesc->Reference.Offset; - - - /* - * Get the argument from the method's state info - * Note: this increments the object reference count - */ - - Status = AcpiDsMethodDataGetValue (MTH_TYPE_ARG, Index, - WalkState, &ObjDesc); + Status = AcpiDsMethodDataGetValue (Opcode, + StackDesc->Reference.Offset, WalkState, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -452,23 +389,11 @@ AcpiAmlResolveObjectToValue ( * Now we can delete the original Reference Object and * replace it with the resolve value */ - - AcpiCmRemoveReference (StackDesc); + AcpiUtRemoveReference (StackDesc); *StackPtr = ObjDesc; - DEBUG_PRINT (TRACE_EXEC, - ("AmlResolveObjectToValue: [Arg%d] ValueObj is %p\n", - Index, ObjDesc)); - - if (ACPI_TYPE_INTEGER == ObjDesc->Common.Type) - { - /* Value is a Number */ - - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveObjectToValue: [Arg%d] value=%X\n", - Index, ObjDesc->Integer.Value)); - } - + DEBUG_PRINTP (ACPI_INFO, ("[Arg/Local %d] ValueObj is %p\n", + StackDesc->Reference.Offset, ObjDesc)); break; @@ -476,7 +401,6 @@ AcpiAmlResolveObjectToValue ( * TBD: [Restructure] These next three opcodes change the type of * the object, which is actually a no-no. */ - case AML_ZERO_OP: StackDesc->Common.Type = (UINT8) ACPI_TYPE_INTEGER; @@ -498,7 +422,7 @@ AcpiAmlResolveObjectToValue ( /* Truncate value if we are executing from a 32-bit ACPI table */ - AcpiAmlTruncateFor32bitTable (StackDesc, WalkState); + AcpiExTruncateFor32bitTable (StackDesc, WalkState); break; @@ -521,8 +445,8 @@ AcpiAmlResolveObjectToValue ( * (i.e., dereference the package index) * Delete the ref object, increment the returned object */ - AcpiCmRemoveReference (StackDesc); - AcpiCmAddReference (ObjDesc); + AcpiUtRemoveReference (StackDesc); + AcpiUtAddReference (ObjDesc); *StackPtr = ObjDesc; } @@ -530,20 +454,20 @@ AcpiAmlResolveObjectToValue ( { /* * A NULL object descriptor means an unitialized element of - * the package, can't deref it + * the package, can't dereference it */ - - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveObjectToValue: Attempt to deref an Index to NULL pkg element Idx=%p\n", StackDesc)); + DEBUG_PRINTP (ACPI_ERROR, + ("Attempt to deref an Index to NULL pkg element Idx=%p\n", + StackDesc)); Status = AE_AML_UNINITIALIZED_ELEMENT; } break; default: - /* Invalid reference OBJ*/ + /* Invalid reference object */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveObjectToValue: Unknown TargetType %X in Index/Reference obj %p\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Unknown TargetType %X in Index/Reference obj %p\n", StackDesc->Reference.TargetType, StackDesc)); Status = AE_AML_INTERNAL; break; @@ -560,36 +484,28 @@ AcpiAmlResolveObjectToValue ( default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveObjectToValue: Unknown Reference object subtype %02X in %p\n", + DEBUG_PRINTP (ACPI_ERROR, ("Unknown Reference object subtype %02X in %p\n", Opcode, StackDesc)); Status = AE_AML_INTERNAL; + break; } /* switch (Opcode) */ - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - break; /* case INTERNAL_TYPE_REFERENCE */ - case ACPI_TYPE_FIELD_UNIT: + case ACPI_TYPE_BUFFER_FIELD: - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_ANY); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_ANY); if (!ObjDesc) { - /* Descriptor allocation failure */ - return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiAmlGetFieldUnitValue (StackDesc, ObjDesc); + Status = AcpiExGetBufferFieldValue (StackDesc, ObjDesc); if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); ObjDesc = NULL; } @@ -599,18 +515,18 @@ AcpiAmlResolveObjectToValue ( case INTERNAL_TYPE_BANK_FIELD: - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_ANY); + ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_ANY); if (!ObjDesc) { - /* Descriptor allocation failure */ - return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiAmlGetFieldUnitValue (StackDesc, ObjDesc); + /* TBD: WRONG! */ + + Status = AcpiExGetBufferFieldValue (StackDesc, ObjDesc); if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); ObjDesc = NULL; } diff --git a/sys/contrib/dev/acpica/exresop.c b/sys/contrib/dev/acpica/exresop.c index d57d2fb..fb93f70 100644 --- a/sys/contrib/dev/acpica/exresop.c +++ b/sys/contrib/dev/acpica/exresop.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amresop - AML Interpreter operand/object resolution - * $Revision: 22 $ + * Module Name: exresop - AML Interpreter operand/object resolution + * $Revision: 29 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMRESOP_C__ +#define __EXRESOP_C__ #include "acpi.h" #include "amlcode.h" @@ -127,13 +127,13 @@ #include "acevents.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amresop") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exresop") /******************************************************************************* * - * FUNCTION: AcpiAmlCheckObjectType + * FUNCTION: AcpiExCheckObjectType * * PARAMETERS: TypeNeeded Object type needed * ThisType Actual object type @@ -146,7 +146,7 @@ ******************************************************************************/ ACPI_STATUS -AcpiAmlCheckObjectType ( +AcpiExCheckObjectType ( ACPI_OBJECT_TYPE TypeNeeded, ACPI_OBJECT_TYPE ThisType, void *Object) @@ -160,25 +160,23 @@ AcpiAmlCheckObjectType ( return (AE_OK); } - if (TypeNeeded != ThisType) { DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [%s], found [%s] %p\n", - AcpiCmGetTypeName (TypeNeeded), - AcpiCmGetTypeName (ThisType), Object)); + ("ExCheckObjectType: Needed [%s], found [%s] %p\n", + AcpiUtGetTypeName (TypeNeeded), + AcpiUtGetTypeName (ThisType), Object)); return (AE_AML_OPERAND_TYPE); } - return (AE_OK); } /******************************************************************************* * - * FUNCTION: AcpiAmlResolveOperands + * FUNCTION: AcpiExResolveOperands * * PARAMETERS: Opcode Opcode being interpreted * StackPtr Top of operand stack @@ -196,7 +194,7 @@ AcpiAmlCheckObjectType ( ******************************************************************************/ ACPI_STATUS -AcpiAmlResolveOperands ( +AcpiExResolveOperands ( UINT16 Opcode, ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState) @@ -204,14 +202,14 @@ AcpiAmlResolveOperands ( ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status = AE_OK; UINT8 ObjectType; - ACPI_HANDLE TempHandle; + void *TempNode; UINT32 ArgTypes; ACPI_OPCODE_INFO *OpInfo; UINT32 ThisArgType; ACPI_OBJECT_TYPE TypeNeeded; - FUNCTION_TRACE_U32 ("AmlResolveOperands", Opcode); + FUNCTION_TRACE_U32 ("ExResolveOperands", Opcode); OpInfo = AcpiPsGetOpcodeInfo (Opcode); @@ -224,31 +222,30 @@ AcpiAmlResolveOperands ( ArgTypes = OpInfo->RuntimeArgs; if (ArgTypes == ARGI_INVALID_OPCODE) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveOperands: Internal error - %X is not a valid AML opcode\n", Opcode)); + DEBUG_PRINTP (ACPI_ERROR, ("Internal - %X is not a valid AML opcode\n", + Opcode)); return_ACPI_STATUS (AE_AML_INTERNAL); } - DEBUG_PRINT (TRACE_EXEC, - ("AmlResolveOperands: Opcode %X OperandTypes=%X \n", + DEBUG_PRINTP (TRACE_EXEC, ("Opcode %X OperandTypes=%X \n", Opcode, ArgTypes)); - /* - * Normal exit is with *Types == '\0' at end of string. + /* + * 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, and cannot be converted - * to, the required type; if stack underflows; or upon - * finding a NULL stack entry (which "should never happen"). + * 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) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveOperands: Internal error - null stack entry at %X\n", StackPtr)); + DEBUG_PRINTP (ACPI_ERROR, ("Internal - null stack entry at %X\n", + StackPtr)); return_ACPI_STATUS (AE_AML_INTERNAL); } @@ -274,10 +271,9 @@ AcpiAmlResolveOperands ( /* Check for bad ACPI_OBJECT_TYPE */ - if (!AcpiAmlValidateObjectType (ObjectType)) + if (!AcpiExValidateObjectType (ObjectType)) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveOperands: Bad operand object type [%X]\n", + DEBUG_PRINTP (ACPI_ERROR, ("Bad operand object type [%X]\n", ObjectType)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -296,7 +292,7 @@ AcpiAmlResolveOperands ( } - switch (ObjDesc->Reference.OpCode) + switch (ObjDesc->Reference.Opcode) { case AML_ZERO_OP: case AML_ONE_OP: @@ -314,7 +310,7 @@ AcpiAmlResolveOperands ( default: DEBUG_PRINT (ACPI_INFO, ("Reference Opcode: Unknown [%02x]\n", - ObjDesc->Reference.OpCode)); + ObjDesc->Reference.Opcode)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); break; @@ -365,7 +361,7 @@ AcpiAmlResolveOperands ( goto NextOperand; } - Status = AcpiAmlCheckObjectType (INTERNAL_TYPE_REFERENCE, + Status = AcpiExCheckObjectType (INTERNAL_TYPE_REFERENCE, ObjectType, ObjDesc); if (ACPI_FAILURE (Status)) { @@ -373,16 +369,16 @@ AcpiAmlResolveOperands ( } - if (AML_NAME_OP == ObjDesc->Reference.OpCode) + if (AML_NAME_OP == ObjDesc->Reference.Opcode) { /* * Convert an indirect name ptr to direct name ptr and put * it on the stack */ - TempHandle = ObjDesc->Reference.Object; - AcpiCmRemoveReference (ObjDesc); - (*StackPtr) = TempHandle; + TempNode = ObjDesc->Reference.Object; + AcpiUtRemoveReference (ObjDesc); + (*StackPtr) = TempNode; } goto NextOperand; @@ -400,7 +396,7 @@ AcpiAmlResolveOperands ( if ((Opcode == AML_STORE_OP) && ((*StackPtr)->Common.Type == INTERNAL_TYPE_REFERENCE) && - ((*StackPtr)->Reference.OpCode == AML_INDEX_OP)) + ((*StackPtr)->Reference.Opcode == AML_INDEX_OP)) { goto NextOperand; } @@ -412,7 +408,7 @@ AcpiAmlResolveOperands ( * Resolve this object to a value */ - Status = AcpiAmlResolveToValue (StackPtr, WalkState); + Status = AcpiExResolveToValue (StackPtr, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -481,14 +477,14 @@ AcpiAmlResolveOperands ( * Need an operand of type ACPI_TYPE_INTEGER, * But we can implicitly convert from a STRING or BUFFER */ - Status = AcpiAmlConvertToInteger (StackPtr, WalkState); + Status = AcpiExConvertToInteger (StackPtr, WalkState); if (ACPI_FAILURE (Status)) { if (Status == AE_TYPE) { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Integer/String/Buffer], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); + DEBUG_PRINTP (ACPI_INFO, + ("Needed [Integer/String/Buffer], found [%s] %p\n", + AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -506,14 +502,14 @@ AcpiAmlResolveOperands ( * Need an operand of type ACPI_TYPE_BUFFER, * But we can implicitly convert from a STRING or INTEGER */ - Status = AcpiAmlConvertToBuffer (StackPtr, WalkState); + Status = AcpiExConvertToBuffer (StackPtr, WalkState); if (ACPI_FAILURE (Status)) { if (Status == AE_TYPE) { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Integer/String/Buffer], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); + DEBUG_PRINTP (ACPI_INFO, + ("Needed [Integer/String/Buffer], found [%s] %p\n", + AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -531,14 +527,14 @@ AcpiAmlResolveOperands ( * Need an operand of type ACPI_TYPE_STRING, * But we can implicitly convert from a BUFFER or INTEGER */ - Status = AcpiAmlConvertToString (StackPtr, WalkState); + Status = AcpiExConvertToString (StackPtr, WalkState); if (ACPI_FAILURE (Status)) { if (Status == AE_TYPE) { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Integer/String/Buffer], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); + DEBUG_PRINTP (ACPI_INFO, + ("Needed [Integer/String/Buffer], found [%s] %p\n", + AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -558,9 +554,9 @@ AcpiAmlResolveOperands ( (ACPI_TYPE_STRING != (*StackPtr)->Common.Type) && (ACPI_TYPE_BUFFER != (*StackPtr)->Common.Type)) { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Integer/String/Buffer], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); + DEBUG_PRINTP (ACPI_INFO, + ("Needed [Integer/String/Buffer], found [%s] %p\n", + AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -585,9 +581,9 @@ AcpiAmlResolveOperands ( ((*StackPtr)->Common.Type != ACPI_TYPE_PACKAGE) && ((*StackPtr)->Common.Type != INTERNAL_TYPE_REFERENCE)) { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Buf/Str/Pkg/Ref], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); + DEBUG_PRINTP (ACPI_INFO, + ("Needed [Buf/Str/Pkg/Ref], found [%s] %p\n", + AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -599,8 +595,8 @@ AcpiAmlResolveOperands ( { if (!(*StackPtr)->Reference.Node) { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Node Reference], found [%p]\n", + DEBUG_PRINTP (ACPI_INFO, + ("Needed [Node Reference], found [%p]\n", *StackPtr)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -612,14 +608,15 @@ AcpiAmlResolveOperands ( case ARGI_COMPLEXOBJ: - /* Need a buffer or package */ + /* Need a buffer or package or (ACPI 2.0) String */ if (((*StackPtr)->Common.Type != ACPI_TYPE_BUFFER) && + ((*StackPtr)->Common.Type != ACPI_TYPE_STRING) && ((*StackPtr)->Common.Type != ACPI_TYPE_PACKAGE)) { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Buf/Pkg], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); + DEBUG_PRINTP (ACPI_INFO, + ("Needed [Buf/Pkg], found [%s] %p\n", + AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -631,8 +628,8 @@ AcpiAmlResolveOperands ( /* Unknown type */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveOperands: Internal error - Unknown ARGI type %X\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Internal - Unknown ARGI type %X\n", ThisArgType)); return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -643,7 +640,7 @@ AcpiAmlResolveOperands ( * Make sure that the original object was resolved to the * required object type (Simple cases only). */ - Status = AcpiAmlCheckObjectType (TypeNeeded, + Status = AcpiExCheckObjectType (TypeNeeded, (*StackPtr)->Common.Type, *StackPtr); if (ACPI_FAILURE (Status)) { diff --git a/sys/contrib/dev/acpica/exstore.c b/sys/contrib/dev/acpica/exstore.c index c2c29d71..91bd16c 100644 --- a/sys/contrib/dev/acpica/exstore.c +++ b/sys/contrib/dev/acpica/exstore.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amstore - AML Interpreter object store support - * $Revision: 123 $ + * Module Name: exstore - AML Interpreter object store support + * $Revision: 139 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMSTORE_C__ +#define __EXSTORE_C__ #include "acpi.h" #include "acparser.h" @@ -126,21 +126,17 @@ #include "actables.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amstore") - - - - +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exstore") /******************************************************************************* * - * FUNCTION: AcpiAmlExecStore + * FUNCTION: AcpiExStore * * PARAMETERS: *ValDesc - Value to be stored - * *DestDesc - Where to store it 0 Must be (ACPI_HANDLE) - * or an ACPI_OPERAND_OBJECT of type + * *DestDesc - Where to store it. Must be an NS node + * or an ACPI_OPERAND_OBJECT of type * Reference; if the latter the descriptor * will be either reused or deleted. * @@ -154,7 +150,7 @@ ******************************************************************************/ ACPI_STATUS -AcpiAmlExecStore ( +AcpiExStore ( ACPI_OPERAND_OBJECT *ValDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState) @@ -163,15 +159,14 @@ AcpiAmlExecStore ( ACPI_OPERAND_OBJECT *RefDesc = DestDesc; - FUNCTION_TRACE_PTR ("AmlExecStore", DestDesc); + FUNCTION_TRACE_PTR ("ExStore", DestDesc); /* Validate parameters */ if (!ValDesc || !DestDesc) { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStore: Internal error - null pointer\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Internal - null pointer\n")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } @@ -179,11 +174,11 @@ AcpiAmlExecStore ( if (VALID_DESCRIPTOR_TYPE (DestDesc, ACPI_DESC_TYPE_NAMED)) { - /* + /* * Dest is a namespace node, - * Storing an object into a Name "container" + * Storing an object into a Name "container" */ - Status = AcpiAmlStoreObjectToNode (ValDesc, + Status = AcpiExStoreObjectToNode (ValDesc, (ACPI_NAMESPACE_NODE *) DestDesc, WalkState); /* All done, that's it */ @@ -198,19 +193,19 @@ AcpiAmlExecStore ( { /* Destination is not an Reference */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStore: Destination is not a ReferenceObj [%p]\n", DestDesc)); + DEBUG_PRINTP (ACPI_ERROR, + ("Destination is not a ReferenceObj [%p]\n", DestDesc)); DUMP_STACK_ENTRY (ValDesc); DUMP_STACK_ENTRY (DestDesc); - DUMP_OPERANDS (&DestDesc, IMODE_EXECUTE, "AmlExecStore", + DUMP_OPERANDS (&DestDesc, IMODE_EXECUTE, "ExStore", 2, "Target is not a ReferenceObj"); 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) @@ -220,14 +215,14 @@ AcpiAmlExecStore ( * 5) Store to a constant -- a noop */ - switch (RefDesc->Reference.OpCode) + switch (RefDesc->Reference.Opcode) { case AML_NAME_OP: /* Storing an object into a Name "container" */ - Status = AcpiAmlStoreObjectToNode (ValDesc, RefDesc->Reference.Object, + Status = AcpiExStoreObjectToNode (ValDesc, RefDesc->Reference.Object, WalkState); break; @@ -236,21 +231,17 @@ AcpiAmlExecStore ( /* Storing to an Index (pointer into a packager or buffer) */ - Status = AcpiAmlStoreObjectToIndex (ValDesc, RefDesc, WalkState); + Status = AcpiExStoreObjectToIndex (ValDesc, RefDesc, WalkState); break; case AML_LOCAL_OP: - - Status = AcpiDsMethodDataSetValue (MTH_TYPE_LOCAL, - (RefDesc->Reference.Offset), ValDesc, WalkState); - break; - - case AML_ARG_OP: - Status = AcpiDsMethodDataSetValue (MTH_TYPE_ARG, - (RefDesc->Reference.Offset), ValDesc, WalkState); + /* Store to a method local/arg */ + + Status = AcpiDsStoreObjectToLocal (RefDesc->Reference.Opcode, + RefDesc->Reference.Offset, ValDesc, WalkState); break; @@ -259,18 +250,45 @@ AcpiAmlExecStore ( /* * Storing to the Debug object causes the value stored to be * displayed and otherwise has no effect -- see ACPI Specification - * - * TBD: print known object types "prettier". */ DEBUG_PRINT (ACPI_INFO, ("**** Write to Debug Object: ****: \n")); - - if (ValDesc->Common.Type == ACPI_TYPE_STRING) - { - DEBUG_PRINT (ACPI_INFO, ("%s\n", ValDesc->String.Pointer)); - } - else + + DEBUG_PRINT_RAW (ACPI_DEBUG_OBJECT, ("[ACPI Debug] %s: ", + AcpiUtGetTypeName (ValDesc->Common.Type))); + + switch (ValDesc->Common.Type) { - DUMP_STACK_ENTRY (ValDesc); + case ACPI_TYPE_INTEGER: + + DEBUG_PRINT_RAW (ACPI_DEBUG_OBJECT, ("0x%X (%d)\n", + (UINT32) ValDesc->Integer.Value, (UINT32) ValDesc->Integer.Value)); + break; + + + case ACPI_TYPE_BUFFER: + + DEBUG_PRINT_RAW (ACPI_DEBUG_OBJECT, ("Length 0x%X\n", + (UINT32) ValDesc->Buffer.Length)); + break; + + + case ACPI_TYPE_STRING: + + DEBUG_PRINT_RAW (ACPI_DEBUG_OBJECT, ("%s\n", ValDesc->String.Pointer)); + break; + + + case ACPI_TYPE_PACKAGE: + + DEBUG_PRINT_RAW (ACPI_DEBUG_OBJECT, ("Elements - 0x%X\n", + (UINT32) ValDesc->Package.Elements)); + break; + + + default: + + DEBUG_PRINT_RAW (ACPI_DEBUG_OBJECT, ("@0x%p\n", ValDesc)); + break; } break; @@ -289,9 +307,8 @@ AcpiAmlExecStore ( default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStore: Internal error - Unknown Reference subtype %02x\n", - RefDesc->Reference.OpCode)); + DEBUG_PRINTP (ACPI_ERROR, ("Internal - Unknown Reference subtype %02x\n", + RefDesc->Reference.Opcode)); /* TBD: [Restructure] use object dump routine !! */ @@ -300,15 +317,14 @@ AcpiAmlExecStore ( Status = AE_AML_INTERNAL; break; - } /* switch (RefDesc->Reference.OpCode) */ - + } /* switch (RefDesc->Reference.Opcode) */ /* Always delete the reference descriptor object */ if (RefDesc) { - AcpiCmRemoveReference (RefDesc); + AcpiUtRemoveReference (RefDesc); } return_ACPI_STATUS (Status); @@ -317,10 +333,10 @@ AcpiAmlExecStore ( /******************************************************************************* * - * FUNCTION: AcpiAmlStoreObjectToIndex + * FUNCTION: AcpiExStoreObjectToIndex * * PARAMETERS: *ValDesc - Value to be stored - * *Node - Named object to recieve the value + * *Node - Named object to receive the value * * RETURN: Status * @@ -329,7 +345,7 @@ AcpiAmlExecStore ( ******************************************************************************/ ACPI_STATUS -AcpiAmlStoreObjectToIndex ( +AcpiExStoreObjectToIndex ( ACPI_OPERAND_OBJECT *ValDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState) @@ -341,7 +357,7 @@ AcpiAmlStoreObjectToIndex ( UINT8 Value = 0; - FUNCTION_TRACE ("AcpiAmlStoreObjectToIndex"); + FUNCTION_TRACE ("AcpiExStoreObjectToIndex"); /* @@ -381,8 +397,8 @@ AcpiAmlStoreObjectToIndex ( * Take away the reference for being part of a package and * delete */ - AcpiCmRemoveReference (ObjDesc); - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); ObjDesc = NULL; } @@ -392,11 +408,11 @@ AcpiAmlStoreObjectToIndex ( { /* * If the ObjDesc is NULL, it means that an uninitialized package - * element has been used as a destination (this is OK), therefore, - * we must create the destination element to match the type of the + * element has been used as a destination (this is OK), therefore, + * we must create the destination element to match the type of the * source element NOTE: ValDesc can be of any type. */ - ObjDesc = AcpiCmCreateInternalObject (ValDesc->Common.Type); + ObjDesc = AcpiUtCreateInternalObject (ValDesc->Common.Type); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -407,10 +423,10 @@ AcpiAmlStoreObjectToIndex ( */ if (ACPI_TYPE_PACKAGE == ObjDesc->Common.Type) { - Status = AcpiCmCopyIpackageToIpackage (ValDesc, ObjDesc, WalkState); + Status = AcpiUtCopyIpackageToIpackage (ValDesc, ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } } @@ -422,7 +438,7 @@ AcpiAmlStoreObjectToIndex ( */ *(DestDesc->Reference.Where) = ObjDesc; - AcpiCmAddReference (ObjDesc); + AcpiUtAddReference (ObjDesc); } if (ACPI_TYPE_PACKAGE != ObjDesc->Common.Type) @@ -432,7 +448,7 @@ AcpiAmlStoreObjectToIndex ( * convert the contents of the source (ValDesc) and copy into * the destination (ObjDesc) */ - Status = AcpiAmlStoreObjectToObject (ValDesc, ObjDesc, + Status = AcpiExStoreObjectToObject (ValDesc, ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { @@ -440,8 +456,8 @@ AcpiAmlStoreObjectToIndex ( * An error occurrered when copying the internal object * so delete the reference. */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStore/Index: Unable to copy the internal object\n")); + DEBUG_PRINTP (ACPI_ERROR, + ("Unable to copy the internal object\n")); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } } @@ -450,6 +466,10 @@ AcpiAmlStoreObjectToIndex ( case ACPI_TYPE_BUFFER_FIELD: + + + /* TBD: can probably call the generic Buffer/Field routines */ + /* * Storing into a buffer at a location defined by an Index. * @@ -473,12 +493,12 @@ AcpiAmlStoreObjectToIndex ( switch (ValDesc->Common.Type) { - /* - * If the type is Integer, assign bytewise - * This loop to assign each of the elements is somewhat - * backward because of the Big Endian-ness of IA-64 - */ case ACPI_TYPE_INTEGER: + /* + * Type is Integer, assign bytewise + * This loop to assign each of the elements is somewhat + * backward because of the Big Endian-ness of IA-64 + */ Length = sizeof (ACPI_INTEGER); for (i = Length; i != 0; i--) { @@ -487,11 +507,12 @@ AcpiAmlStoreObjectToIndex ( } break; - /* - * If the type is Buffer, the Length is in the structure. - * Just loop through the elements and assign each one in turn. - */ + case ACPI_TYPE_BUFFER: + /* + * Type is Buffer, the Length is in the structure. + * Just loop through the elements and assign each one in turn. + */ Length = ValDesc->Buffer.Length; for (i = 0; i < Length; i++) { @@ -500,11 +521,12 @@ AcpiAmlStoreObjectToIndex ( } break; - /* - * If the type is String, the Length is in the structure. - * Just loop through the elements and assign each one in turn. - */ + case ACPI_TYPE_STRING: + /* + * Type is String, the Length is in the structure. + * Just loop through the elements and assign each one in turn. + */ Length = ValDesc->String.Length; for (i = 0; i < Length; i++) { @@ -513,12 +535,13 @@ AcpiAmlStoreObjectToIndex ( } break; - /* - * If source is not a valid type so return an error. - */ + default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStore/Index: Source must be Number/Buffer/String type, not %X\n", + + /* Other types are invalid */ + + DEBUG_PRINTP (ACPI_ERROR, + ("Source must be Number/Buffer/String type, not %X\n", ValDesc->Common.Type)); Status = AE_AML_OPERAND_TYPE; break; @@ -527,8 +550,7 @@ AcpiAmlStoreObjectToIndex ( default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStoreIndex: Target is not a Package or BufferField\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Target is not a Package or BufferField\n")); Status = AE_AML_OPERAND_TYPE; break; } @@ -538,15 +560,12 @@ AcpiAmlStoreObjectToIndex ( } - - - /******************************************************************************* * - * FUNCTION: AcpiAmlStoreObjectToNode + * FUNCTION: AcpiExStoreObjectToNode * * PARAMETERS: *SourceDesc - Value to be stored - * *Node - Named object to recieve the value + * *Node - Named object to receive the value * * RETURN: Status * @@ -569,17 +588,17 @@ AcpiAmlStoreObjectToIndex ( ******************************************************************************/ ACPI_STATUS -AcpiAmlStoreObjectToNode ( +AcpiExStoreObjectToNode ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *TargetDesc; - OBJECT_TYPE_INTERNAL TargetType = ACPI_TYPE_ANY; + ACPI_OBJECT_TYPE8 TargetType = ACPI_TYPE_ANY; - FUNCTION_TRACE ("AmlStoreObjectToNode"); + FUNCTION_TRACE ("ExStoreObjectToNode"); /* * Assuming the parameters were already validated @@ -593,16 +612,16 @@ AcpiAmlStoreObjectToNode ( TargetType = AcpiNsGetType (Node); TargetDesc = AcpiNsGetAttachedObject (Node); - DEBUG_PRINT (ACPI_INFO, ("AmlStoreObjectToNode: Storing %p(%s) into node %p(%s)\n", - Node, AcpiCmGetTypeName (SourceDesc->Common.Type), - SourceDesc, AcpiCmGetTypeName (TargetType))); + DEBUG_PRINTP (ACPI_INFO, ("Storing %p(%s) into node %p(%s)\n", + Node, AcpiUtGetTypeName (SourceDesc->Common.Type), + SourceDesc, AcpiUtGetTypeName (TargetType))); /* * Resolve the source object to an actual value - * (If it is a reference object) + * (If it is a reference object) */ - Status = AcpiAmlResolveObject (&SourceDesc, TargetType, WalkState); + Status = AcpiExResolveObject (&SourceDesc, TargetType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -610,32 +629,33 @@ AcpiAmlStoreObjectToNode ( /* - * Do the actual store operation + * Do the actual store operation */ switch (TargetType) { - case INTERNAL_TYPE_DEF_FIELD: - - /* Raw data copy for target types Integer/String/Buffer */ + case ACPI_TYPE_BUFFER_FIELD: + case INTERNAL_TYPE_REGION_FIELD: + case INTERNAL_TYPE_BANK_FIELD: + case INTERNAL_TYPE_INDEX_FIELD: - Status = AcpiAmlCopyDataToNamedField (SourceDesc, Node); + /* + * For fields, copy the source data to the target field. + */ + Status = AcpiExWriteDataToField (SourceDesc, TargetDesc); break; case ACPI_TYPE_INTEGER: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: - case INTERNAL_TYPE_BANK_FIELD: - case INTERNAL_TYPE_INDEX_FIELD: - case ACPI_TYPE_FIELD_UNIT: - /* + /* * 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 + * + * Copy and/or convert the source object to a new target object */ - Status = AcpiAmlStoreObject (SourceDesc, TargetType, &TargetDesc, WalkState); + Status = AcpiExStoreObject (SourceDesc, TargetType, &TargetDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -647,23 +667,23 @@ AcpiAmlStoreObjectToNode ( * SourceDesc reference count is incremented by AttachObject. */ Status = AcpiNsAttachObject (Node, TargetDesc, TargetType); - DEBUG_PRINT (ACPI_INFO, - ("AmlStoreObjectToNode: Store %s into %s via Convert/Attach\n", - AcpiCmGetTypeName (TargetDesc->Common.Type), - AcpiCmGetTypeName (TargetType))); + DEBUG_PRINTP (ACPI_INFO, + ("Store %s into %s via Convert/Attach\n", + AcpiUtGetTypeName (TargetDesc->Common.Type), + AcpiUtGetTypeName (TargetType))); break; - + default: /* No conversions for all other types. Just attach the source object */ Status = AcpiNsAttachObject (Node, SourceDesc, SourceDesc->Common.Type); - - DEBUG_PRINT (ACPI_INFO, - ("AmlStoreObjectToNode: Store %s into %s via Attach only\n", - AcpiCmGetTypeName (SourceDesc->Common.Type), - AcpiCmGetTypeName (SourceDesc->Common.Type))); + + DEBUG_PRINTP (ACPI_INFO, + ("Store %s into %s via Attach only\n", + AcpiUtGetTypeName (SourceDesc->Common.Type), + AcpiUtGetTypeName (SourceDesc->Common.Type))); break; } @@ -672,10 +692,9 @@ AcpiAmlStoreObjectToNode ( } - /******************************************************************************* * - * FUNCTION: AcpiAmlStoreObjectToObject + * FUNCTION: AcpiExStoreObjectToObject * * PARAMETERS: *SourceDesc - Value to be stored * *DestDesc - Object to receive the value @@ -700,16 +719,16 @@ AcpiAmlStoreObjectToNode ( ******************************************************************************/ ACPI_STATUS -AcpiAmlStoreObjectToObject ( +AcpiExStoreObjectToObject ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; - OBJECT_TYPE_INTERNAL DestinationType = DestDesc->Common.Type; + ACPI_OBJECT_TYPE8 DestinationType = DestDesc->Common.Type; - FUNCTION_TRACE ("AmlStoreObjectToObject"); + FUNCTION_TRACE ("ExStoreObjectToObject"); /* @@ -717,9 +736,9 @@ AcpiAmlStoreObjectToObject ( */ ACPI_ASSERT((DestDesc) && (SourceDesc)); - DEBUG_PRINT (ACPI_INFO, ("AmlStoreObjectToObject: Storing %p(%s) to %p(%s)\n", - SourceDesc, AcpiCmGetTypeName (SourceDesc->Common.Type), - DestDesc, AcpiCmGetTypeName (DestDesc->Common.Type))); + DEBUG_PRINTP (ACPI_INFO, ("Storing %p(%s) to %p(%s)\n", + SourceDesc, AcpiUtGetTypeName (SourceDesc->Common.Type), + DestDesc, AcpiUtGetTypeName (DestDesc->Common.Type))); /* @@ -733,20 +752,18 @@ AcpiAmlStoreObjectToObject ( break; default: - DEBUG_PRINT (ACPI_WARN, - ("AmlStoreObjectToObject: Store into %s not implemented\n", - AcpiCmGetTypeName (DestDesc->Common.Type))); + DEBUG_PRINTP (ACPI_WARN, ("Store into %s not implemented\n", + AcpiUtGetTypeName (DestDesc->Common.Type))); return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } - /* * Resolve the source object to an actual value - * (If it is a reference object) + * (If it is a reference object) */ - Status = AcpiAmlResolveObject (&SourceDesc, DestinationType, WalkState); + Status = AcpiExResolveObject (&SourceDesc, DestinationType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -754,9 +771,9 @@ AcpiAmlStoreObjectToObject ( /* - * Copy and/or convert the source object to the destination object + * Copy and/or convert the source object to the destination object */ - Status = AcpiAmlStoreObject (SourceDesc, DestinationType, &DestDesc, WalkState); + Status = AcpiExStoreObject (SourceDesc, DestinationType, &DestDesc, WalkState); return_ACPI_STATUS (Status); diff --git a/sys/contrib/dev/acpica/exstoren.c b/sys/contrib/dev/acpica/exstoren.c index b6bd010..d7b72d1 100644 --- a/sys/contrib/dev/acpica/exstoren.c +++ b/sys/contrib/dev/acpica/exstoren.c @@ -1,9 +1,9 @@ /****************************************************************************** * - * Module Name: amstoren - AML Interpreter object store support, + * Module Name: exstoren - AML Interpreter object store support, * Store to Node (namespace object) - * $Revision: 28 $ + * $Revision: 38 $ * *****************************************************************************/ @@ -116,7 +116,7 @@ * *****************************************************************************/ -#define __AMSTOREN_C__ +#define __EXSTOREN_C__ #include "acpi.h" #include "acparser.h" @@ -127,15 +127,13 @@ #include "actables.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amstoren") - - +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exstoren") /******************************************************************************* * - * FUNCTION: AcpiAmlResolveObject + * FUNCTION: AcpiExResolveObject * * PARAMETERS: SourceDescPtr - Pointer to the source object * TargetType - Current type of the target @@ -143,22 +141,22 @@ * * RETURN: Status, resolved object in SourceDescPtr. * - * DESCRIPTION: Resolve an object. If the object is a reference, dereference + * DESCRIPTION: Resolve an object. If the object is a reference, dereference * it and return the actual object in the SourceDescPtr. * ******************************************************************************/ ACPI_STATUS -AcpiAmlResolveObject ( +AcpiExResolveObject ( ACPI_OPERAND_OBJECT **SourceDescPtr, - OBJECT_TYPE_INTERNAL TargetType, + ACPI_OBJECT_TYPE8 TargetType, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *SourceDesc = *SourceDescPtr; ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("AmlResolveObject"); + FUNCTION_TRACE ("ExResolveObject"); /* @@ -173,18 +171,21 @@ AcpiAmlResolveObject ( * These cases all require only Integers or values that * can be converted to Integers (Strings or Buffers) */ - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_FIELD_UNIT: + case ACPI_TYPE_BUFFER_FIELD: + case INTERNAL_TYPE_REGION_FIELD: case INTERNAL_TYPE_BANK_FIELD: case INTERNAL_TYPE_INDEX_FIELD: /* - * Stores into a Field/Region or into a Buffer/String + * Stores into a Field/Region or into a Buffer/String * are all essentially the same. */ + case ACPI_TYPE_INTEGER: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: - case INTERNAL_TYPE_DEF_FIELD: + + + /* TBD: FIX - check for source==REF, resolve, then check type */ /* * If SourceDesc is not a valid type, try to resolve it to one. @@ -196,7 +197,7 @@ AcpiAmlResolveObject ( /* * Initially not a valid type, convert */ - Status = AcpiAmlResolveToValue (SourceDescPtr, WalkState); + Status = AcpiExResolveToValue (SourceDescPtr, WalkState); if (ACPI_SUCCESS (Status) && (SourceDesc->Common.Type != ACPI_TYPE_INTEGER) && (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) && @@ -205,10 +206,10 @@ AcpiAmlResolveObject ( /* * Conversion successful but still not a valid type */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveObject: Cannot assign type %s to %s (must be type Int/Str/Buf)\n", - AcpiCmGetTypeName ((*SourceDescPtr)->Common.Type), - AcpiCmGetTypeName (TargetType))); + DEBUG_PRINTP (ACPI_ERROR, + ("Cannot assign type %s to %s (must be type Int/Str/Buf)\n", + AcpiUtGetTypeName ((*SourceDescPtr)->Common.Type), + AcpiUtGetTypeName (TargetType))); Status = AE_AML_OPERAND_TYPE; } } @@ -218,11 +219,9 @@ AcpiAmlResolveObject ( case INTERNAL_TYPE_ALIAS: /* - * Aliases are resolved by AcpiAmlPrepOperands + * Aliases are resolved by AcpiExPrepOperands */ - DEBUG_PRINT (ACPI_WARN, - ("AmlResolveObject: Store into Alias - should never happen\n")); - + DEBUG_PRINTP (ACPI_WARN, ("Store into Alias - should never happen\n")); Status = AE_AML_INTERNAL; break; @@ -241,11 +240,9 @@ AcpiAmlResolveObject ( } - - /******************************************************************************* * - * FUNCTION: AcpiAmlStoreObject + * FUNCTION: AcpiExStoreObject * * PARAMETERS: SourceDesc - Object to store * TargetType - Current type of the target @@ -254,7 +251,7 @@ AcpiAmlResolveObject ( * * RETURN: Status * - * DESCRIPTION: "Store" an object to another object. This may include + * 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. @@ -262,17 +259,17 @@ AcpiAmlResolveObject ( ******************************************************************************/ ACPI_STATUS -AcpiAmlStoreObject ( +AcpiExStoreObject ( ACPI_OPERAND_OBJECT *SourceDesc, - OBJECT_TYPE_INTERNAL TargetType, + ACPI_OBJECT_TYPE8 TargetType, ACPI_OPERAND_OBJECT **TargetDescPtr, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *TargetDesc = *TargetDescPtr; - ACPI_STATUS Status; + ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("AmlStoreObject"); + FUNCTION_TRACE ("ExStoreObject"); /* @@ -282,13 +279,12 @@ AcpiAmlStoreObject ( * If no conversion performed, SourceDesc is left alone, otherwise it * is updated with a new object. */ - Status = AcpiAmlConvertToTargetType (TargetType, &SourceDesc, WalkState); + Status = AcpiExConvertToTargetType (TargetType, &SourceDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } - /* * We now have two objects of identical types, and we can perform a * copy of the *value* of the source object. @@ -297,8 +293,8 @@ AcpiAmlStoreObject ( { case ACPI_TYPE_ANY: case INTERNAL_TYPE_DEF_ANY: - - /* + + /* * The target namespace node is uninitialized (has no target object), * and will take on the type of the source object */ @@ -313,37 +309,18 @@ AcpiAmlStoreObject ( /* Truncate value if we are executing from a 32-bit ACPI table */ - AcpiAmlTruncateFor32bitTable (TargetDesc, WalkState); - break; - - - case ACPI_TYPE_FIELD_UNIT: - - Status = AcpiAmlCopyIntegerToFieldUnit (SourceDesc, TargetDesc); - break; - - - case INTERNAL_TYPE_BANK_FIELD: - - Status = AcpiAmlCopyIntegerToBankField (SourceDesc, TargetDesc); + AcpiExTruncateFor32bitTable (TargetDesc, WalkState); break; - - case INTERNAL_TYPE_INDEX_FIELD: - - Status = AcpiAmlCopyIntegerToIndexField (SourceDesc, TargetDesc); - break; - - case ACPI_TYPE_STRING: - Status = AcpiAmlCopyStringToString (SourceDesc, TargetDesc); + Status = AcpiExCopyStringToString (SourceDesc, TargetDesc); break; case ACPI_TYPE_BUFFER: - Status = AcpiAmlCopyBufferToBuffer (SourceDesc, TargetDesc); + Status = AcpiExCopyBufferToBuffer (SourceDesc, TargetDesc); break; @@ -361,9 +338,8 @@ AcpiAmlStoreObject ( /* * All other types come here. */ - DEBUG_PRINT (ACPI_WARN, - ("AmlStoreObject: Store into type %s not implemented\n", - AcpiCmGetTypeName (TargetType))); + DEBUG_PRINTP (ACPI_WARN, ("Store into type %s not implemented\n", + AcpiUtGetTypeName (TargetType))); Status = AE_NOT_IMPLEMENTED; break; diff --git a/sys/contrib/dev/acpica/exstorob.c b/sys/contrib/dev/acpica/exstorob.c index a4bd94d..1b27063 100644 --- a/sys/contrib/dev/acpica/exstorob.c +++ b/sys/contrib/dev/acpica/exstorob.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amstorob - AML Interpreter object store support, store to object - * $Revision: 23 $ + * Module Name: exstorob - AML Interpreter object store support, store to object + * $Revision: 32 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMSTOROB_C__ +#define __EXSTOROB_C__ #include "acpi.h" #include "acparser.h" @@ -126,14 +126,13 @@ #include "actables.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amstorob") - +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exstorob") /******************************************************************************* * - * FUNCTION: AcpiAmlCopyBufferToBuffer + * FUNCTION: AcpiExCopyBufferToBuffer * * PARAMETERS: SourceDesc - Source object to copy * TargetDesc - Destination object of the copy @@ -145,14 +144,14 @@ ******************************************************************************/ ACPI_STATUS -AcpiAmlCopyBufferToBuffer ( +AcpiExCopyBufferToBuffer ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc) { UINT32 Length; UINT8 *Buffer; - - + + /* * We know that SourceDesc is a buffer by now */ @@ -165,7 +164,7 @@ AcpiAmlCopyBufferToBuffer ( */ if (TargetDesc->Buffer.Length == 0) { - TargetDesc->Buffer.Pointer = AcpiCmAllocate (Length); + TargetDesc->Buffer.Pointer = AcpiUtAllocate (Length); if (!TargetDesc->Buffer.Pointer) { return (AE_NO_MEMORY); @@ -173,7 +172,7 @@ AcpiAmlCopyBufferToBuffer ( TargetDesc->Buffer.Length = Length; } - + /* * Buffer is a static allocation, * only place what will fit in the buffer. @@ -186,7 +185,7 @@ AcpiAmlCopyBufferToBuffer ( MEMCPY(TargetDesc->Buffer.Pointer, Buffer, Length); } - else + else { /* * Truncate the source, copy only what will fit @@ -194,7 +193,7 @@ AcpiAmlCopyBufferToBuffer ( MEMCPY(TargetDesc->Buffer.Pointer, Buffer, TargetDesc->Buffer.Length); DEBUG_PRINT (ACPI_INFO, - ("AmlCopyBufferToBuffer: Truncating src buffer from %X to %X\n", + ("ExCopyBufferToBuffer: Truncating src buffer from %X to %X\n", Length, TargetDesc->Buffer.Length)); } @@ -202,11 +201,9 @@ AcpiAmlCopyBufferToBuffer ( } - - /******************************************************************************* * - * FUNCTION: AcpiAmlCopyStringToString + * FUNCTION: AcpiExCopyStringToString * * PARAMETERS: SourceDesc - Source object to copy * TargetDesc - Destination object of the copy @@ -218,7 +215,7 @@ AcpiAmlCopyBufferToBuffer ( ******************************************************************************/ ACPI_STATUS -AcpiAmlCopyStringToString ( +AcpiExCopyStringToString ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc) { @@ -255,10 +252,10 @@ AcpiAmlCopyStringToString ( /* * Only free if not a pointer into the DSDT */ - AcpiCmFree(TargetDesc->String.Pointer); + AcpiUtFree(TargetDesc->String.Pointer); } - TargetDesc->String.Pointer = AcpiCmAllocate (Length + 1); + TargetDesc->String.Pointer = AcpiUtAllocate (Length + 1); if (!TargetDesc->String.Pointer) { return (AE_NO_MEMORY); @@ -273,324 +270,3 @@ AcpiAmlCopyStringToString ( } - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCopyIntegerToIndexField - * - * PARAMETERS: SourceDesc - Source object to copy - * TargetDesc - Destination object of the copy - * - * RETURN: Status - * - * DESCRIPTION: Write an Integer to an Index Field - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCopyIntegerToIndexField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc) -{ - ACPI_STATUS Status; - BOOLEAN Locked; - - - /* - * Get the global lock if needed - */ - Locked = AcpiAmlAcquireGlobalLock (TargetDesc->IndexField.LockRule); - - /* - * Set Index value to select proper Data register - * perform the update (Set index) - */ - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - TargetDesc->IndexField.Index, - &TargetDesc->IndexField.Value, - sizeof (TargetDesc->IndexField.Value)); - if (ACPI_SUCCESS (Status)) - { - /* SetIndex was successful, next set Data value */ - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - TargetDesc->IndexField.Data, - &SourceDesc->Integer.Value, - sizeof (SourceDesc->Integer.Value)); - - DEBUG_PRINT (ACPI_INFO, - ("AmlCopyIntegerToIndexField: IndexField: set data returned %s\n", - AcpiCmFormatException (Status))); - } - - else - { - DEBUG_PRINT (ACPI_INFO, - ("AmlCopyIntegerToIndexField: IndexField: set index returned %s\n", - AcpiCmFormatException (Status))); - } - - - /* - * Release global lock if we acquired it earlier - */ - AcpiAmlReleaseGlobalLock (Locked); - - return (Status); -} - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCopyIntegerToBankField - * - * PARAMETERS: SourceDesc - Source object to copy - * TargetDesc - Destination object of the copy - * - * RETURN: Status - * - * DESCRIPTION: Write an Integer to a Bank Field - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCopyIntegerToBankField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc) -{ - ACPI_STATUS Status; - BOOLEAN Locked; - - - /* - * Get the global lock if needed - */ - Locked = AcpiAmlAcquireGlobalLock (TargetDesc->IndexField.LockRule); - - - - /* - * Set Bank value to select proper Bank - * Perform the update (Set Bank Select) - */ - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - TargetDesc->BankField.BankSelect, - &TargetDesc->BankField.Value, - sizeof (TargetDesc->BankField.Value)); - if (ACPI_SUCCESS (Status)) - { - /* Set bank select successful, set data value */ - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - TargetDesc->BankField.BankSelect, - &SourceDesc->BankField.Value, - sizeof (SourceDesc->BankField.Value)); - } - - else - { - DEBUG_PRINT (ACPI_INFO, - ("AmlCopyIntegerToBankField: BankField: set bakn returned %s\n", - AcpiCmFormatException (Status))); - } - - - /* - * Release global lock if we acquired it earlier - */ - AcpiAmlReleaseGlobalLock (Locked); - - return (Status); -} - - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCopyDataToNamedField - * - * PARAMETERS: SourceDesc - Source object to copy - * Node - Destination Namespace node - * - * RETURN: Status - * - * DESCRIPTION: Copy raw data to a Named Field. No implicit conversion - * is performed on the source object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCopyDataToNamedField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_STATUS Status; - BOOLEAN Locked; - UINT32 Length; - UINT8 *Buffer; - - - /* - * Named fields (CreateXxxField) - We don't perform any conversions on the - * source operand, just use the raw data - */ - switch (SourceDesc->Common.Type) - { - case ACPI_TYPE_INTEGER: - Buffer = (UINT8 *) &SourceDesc->Integer.Value; - Length = sizeof (SourceDesc->Integer.Value); - break; - - case ACPI_TYPE_BUFFER: - Buffer = (UINT8 *) SourceDesc->Buffer.Pointer; - Length = SourceDesc->Buffer.Length; - break; - - case ACPI_TYPE_STRING: - Buffer = (UINT8 *) SourceDesc->String.Pointer; - Length = SourceDesc->String.Length; - break; - - default: - return (AE_TYPE); - } - - /* - * Get the global lock if needed before the update - * TBD: not needed! - */ - Locked = AcpiAmlAcquireGlobalLock (SourceDesc->Field.LockRule); - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - Node, Buffer, Length); - - AcpiAmlReleaseGlobalLock (Locked); - - return (Status); -} - - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCopyIntegerToFieldUnit - * - * PARAMETERS: SourceDesc - Source object to copy - * TargetDesc - Destination object of the copy - * - * RETURN: Status - * - * DESCRIPTION: Write an Integer to a Field Unit. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCopyIntegerToFieldUnit ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc) -{ - ACPI_STATUS Status = AE_OK; - UINT8 *Location = NULL; - UINT32 Mask; - UINT32 NewValue; - BOOLEAN Locked = FALSE; - - - - FUNCTION_TRACE ("AmlCopyIntegerToFieldUnit"); - - /* - * If the Field Buffer and Index have not been previously evaluated, - * evaluate them and save the results. - */ - if (!(TargetDesc->Common.Flags & AOPOBJ_DATA_VALID)) - { - Status = AcpiDsGetFieldUnitArguments (TargetDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - if ((!TargetDesc->FieldUnit.Container || - ACPI_TYPE_BUFFER != TargetDesc->FieldUnit.Container->Common.Type)) - { - DEBUG_PRINT (ACPI_ERROR, - ("Null Container or wrong type: %p", TargetDesc->FieldUnit.Container)); - - if (TargetDesc->FieldUnit.Container) - { - DEBUG_PRINT_RAW (ACPI_ERROR, (" Type %X", - TargetDesc->FieldUnit.Container->Common.Type)); - } - DEBUG_PRINT_RAW (ACPI_ERROR, ("\n")); - - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - /* - * Get the global lock if needed - */ - Locked = AcpiAmlAcquireGlobalLock (TargetDesc->FieldUnit.LockRule); - - /* - * TBD: [Unhandled] REMOVE this limitation - * Make sure the operation is within the limits of our implementation - * this is not a Spec limitation!! - */ - if (TargetDesc->FieldUnit.Length + TargetDesc->FieldUnit.BitOffset > 32) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlCopyIntegerToFieldUnit: FieldUnit: Implementation limitation - Field exceeds UINT32\n")); - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - /* Field location is (base of buffer) + (byte offset) */ - - Location = TargetDesc->FieldUnit.Container->Buffer.Pointer - + TargetDesc->FieldUnit.Offset; - - /* - * Construct Mask with 1 bits where the field is, - * 0 bits elsewhere - */ - Mask = ((UINT32) 1 << TargetDesc->FieldUnit.Length) - ((UINT32)1 - << TargetDesc->FieldUnit.BitOffset); - - DEBUG_PRINT (TRACE_EXEC, - ("** Store %lx in buffer %p byte %ld bit %X width %d addr %p mask %08lx\n", - SourceDesc->Integer.Value, - TargetDesc->FieldUnit.Container->Buffer.Pointer, - TargetDesc->FieldUnit.Offset, TargetDesc->FieldUnit.BitOffset, - TargetDesc->FieldUnit.Length,Location, Mask)); - - /* Zero out the field in the buffer */ - - MOVE_UNALIGNED32_TO_32 (&NewValue, Location); - NewValue &= ~Mask; - - /* - * Shift and mask the new value into position, - * and or it into the buffer. - */ - NewValue |= (SourceDesc->Integer.Value << TargetDesc->FieldUnit.BitOffset) & - Mask; - - /* Store back the value */ - - MOVE_UNALIGNED32_TO_32 (Location, &NewValue); - - DEBUG_PRINT (TRACE_EXEC, ("New Field value %08lx\n", NewValue)); - return_ACPI_STATUS (AE_OK); -} - - - - - diff --git a/sys/contrib/dev/acpica/exsystem.c b/sys/contrib/dev/acpica/exsystem.c index e1f64ea..3aca04f 100644 --- a/sys/contrib/dev/acpica/exsystem.c +++ b/sys/contrib/dev/acpica/exsystem.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amsystem - Interface to OS services - * $Revision: 54 $ + * Module Name: exsystem - Interface to OS services + * $Revision: 62 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMSYSTEM_C__ +#define __EXSYSTEM_C__ #include "acpi.h" #include "acinterp.h" @@ -123,34 +123,13 @@ #include "achware.h" #include "acevents.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amsystem") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exsystem") /******************************************************************************* * - * FUNCTION: AcpiAmlSystemThreadId - * - * PARAMETERS: None - * - * RETURN: Current Thread ID (for this implementation a 1 is returned) - * - * DESCRIPTION: An invocation is identified by its Thread ID. In a single - * threaded OS the Thread ID is undefined so a 1 will be - * returned. - * - ******************************************************************************/ - -UINT16 -AcpiAmlSystemThreadId (void) -{ - return (1); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemWaitSemaphore + * FUNCTION: AcpiExSystemWaitSemaphore * * PARAMETERS: Semaphore - OSD semaphore to wait on * Timeout - Max time to wait @@ -164,14 +143,14 @@ AcpiAmlSystemThreadId (void) ******************************************************************************/ ACPI_STATUS -AcpiAmlSystemWaitSemaphore ( +AcpiExSystemWaitSemaphore ( ACPI_HANDLE Semaphore, UINT32 Timeout) { ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiAmlSystemWaitSemaphore"); + FUNCTION_TRACE ("AcpiExSystemWaitSemaphore"); Status = AcpiOsWaitSemaphore (Semaphore, 1, 0); if (ACPI_SUCCESS (Status)) @@ -183,17 +162,22 @@ AcpiAmlSystemWaitSemaphore ( { /* We must wait, so unlock the interpreter */ - AcpiAmlExitInterpreter (); + AcpiExExitInterpreter (); Status = AcpiOsWaitSemaphore (Semaphore, 1, Timeout); + DEBUG_PRINT (TRACE_EXEC, ("*** Thread awake after blocking, %s\n", + AcpiUtFormatException (Status))); + /* Reacquire the interpreter */ - AcpiAmlEnterInterpreter (); + Status = AcpiExEnterInterpreter (); + if (ACPI_SUCCESS (Status)) + { + /* Restore the timeout exception */ - DEBUG_PRINT (TRACE_EXEC, - ("*** Thread awake and inside interpreter after blocking, %s\n", - AcpiCmFormatException (Status))); + Status = AE_TIME; + } } return_ACPI_STATUS (Status); @@ -202,7 +186,7 @@ AcpiAmlSystemWaitSemaphore ( /******************************************************************************* * - * FUNCTION: AcpiAmlSystemDoStall + * FUNCTION: AcpiExSystemDoStall * * PARAMETERS: HowLong - The amount of time to stall * @@ -213,7 +197,7 @@ AcpiAmlSystemWaitSemaphore ( ******************************************************************************/ void -AcpiAmlSystemDoStall ( +AcpiExSystemDoStall ( UINT32 HowLong) { @@ -221,13 +205,13 @@ AcpiAmlSystemDoStall ( { /* Since this thread will sleep, we must release the interpreter */ - AcpiAmlExitInterpreter (); + AcpiExExitInterpreter (); AcpiOsSleepUsec (HowLong); /* And now we must get the interpreter again */ - AcpiAmlEnterInterpreter (); + AcpiExEnterInterpreter (); } else @@ -239,7 +223,7 @@ AcpiAmlSystemDoStall ( /******************************************************************************* * - * FUNCTION: AcpiAmlSystemDoSuspend + * FUNCTION: AcpiExSystemDoSuspend * * PARAMETERS: HowLong - The amount of time to suspend * @@ -250,25 +234,25 @@ AcpiAmlSystemDoStall ( ******************************************************************************/ void -AcpiAmlSystemDoSuspend ( +AcpiExSystemDoSuspend ( UINT32 HowLong) { /* Since this thread will sleep, we must release the interpreter */ - AcpiAmlExitInterpreter (); + AcpiExExitInterpreter (); AcpiOsSleep ((UINT16) (HowLong / (UINT32) 1000), (UINT16) (HowLong % (UINT32) 1000)); /* And now we must get the interpreter again */ - AcpiAmlEnterInterpreter (); + AcpiExEnterInterpreter (); } /******************************************************************************* * - * FUNCTION: AcpiAmlSystemAcquireMutex + * FUNCTION: AcpiExSystemAcquireMutex * * PARAMETERS: *TimeDesc - The 'time to delay' object descriptor * *ObjDesc - The object descriptor for this op @@ -282,14 +266,14 @@ AcpiAmlSystemDoSuspend ( ******************************************************************************/ ACPI_STATUS -AcpiAmlSystemAcquireMutex ( +AcpiExSystemAcquireMutex ( ACPI_OPERAND_OBJECT *TimeDesc, ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("AcpiAmlSystemAcquireMutex", ObjDesc); + FUNCTION_TRACE_PTR ("AcpiExSystemAcquireMutex", ObjDesc); if (!ObjDesc) { @@ -306,7 +290,7 @@ AcpiAmlSystemAcquireMutex ( return_ACPI_STATUS (Status); } - Status = AcpiAmlSystemWaitSemaphore (ObjDesc->Mutex.Semaphore, + Status = AcpiExSystemWaitSemaphore (ObjDesc->Mutex.Semaphore, (UINT32) TimeDesc->Integer.Value); return_ACPI_STATUS (Status); } @@ -314,7 +298,7 @@ AcpiAmlSystemAcquireMutex ( /******************************************************************************* * - * FUNCTION: AcpiAmlSystemReleaseMutex + * FUNCTION: AcpiExSystemReleaseMutex * * PARAMETERS: *ObjDesc - The object descriptor for this op * @@ -328,13 +312,13 @@ AcpiAmlSystemAcquireMutex ( ******************************************************************************/ ACPI_STATUS -AcpiAmlSystemReleaseMutex ( +AcpiExSystemReleaseMutex ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("AcpiAmlSystemReleaseMutex"); + FUNCTION_TRACE ("AcpiExSystemReleaseMutex"); if (!ObjDesc) @@ -358,7 +342,7 @@ AcpiAmlSystemReleaseMutex ( /******************************************************************************* * - * FUNCTION: AcpiAmlSystemSignalEvent + * FUNCTION: AcpiExSystemSignalEvent * * PARAMETERS: *ObjDesc - The object descriptor for this op * @@ -370,13 +354,13 @@ AcpiAmlSystemReleaseMutex ( ******************************************************************************/ ACPI_STATUS -AcpiAmlSystemSignalEvent ( +AcpiExSystemSignalEvent ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("AcpiAmlSystemSignalEvent"); + FUNCTION_TRACE ("AcpiExSystemSignalEvent"); if (ObjDesc) @@ -390,7 +374,7 @@ AcpiAmlSystemSignalEvent ( /******************************************************************************* * - * FUNCTION: AcpiAmlSystemWaitEvent + * FUNCTION: AcpiExSystemWaitEvent * * PARAMETERS: *TimeDesc - The 'time to delay' object descriptor * *ObjDesc - The object descriptor for this op @@ -404,19 +388,19 @@ AcpiAmlSystemSignalEvent ( ******************************************************************************/ ACPI_STATUS -AcpiAmlSystemWaitEvent ( +AcpiExSystemWaitEvent ( ACPI_OPERAND_OBJECT *TimeDesc, ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("AcpiAmlSystemWaitEvent"); + FUNCTION_TRACE ("AcpiExSystemWaitEvent"); if (ObjDesc) { - Status = AcpiAmlSystemWaitSemaphore (ObjDesc->Event.Semaphore, + Status = AcpiExSystemWaitSemaphore (ObjDesc->Event.Semaphore, (UINT32) TimeDesc->Integer.Value); } @@ -427,19 +411,18 @@ AcpiAmlSystemWaitEvent ( /******************************************************************************* * - * FUNCTION: AcpiAmlSystemResetEvent + * FUNCTION: AcpiExSystemResetEvent * * PARAMETERS: *ObjDesc - The object descriptor for this op * * RETURN: Status * - * DESCRIPTION: Provides an access point to perform synchronization operations - * within the AML. + * DESCRIPTION: Reset an event to a known state. * ******************************************************************************/ ACPI_STATUS -AcpiAmlSystemResetEvent ( +AcpiExSystemResetEvent ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status = AE_OK; @@ -454,8 +437,8 @@ AcpiAmlSystemResetEvent ( Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, &TempSemaphore); if (ACPI_SUCCESS (Status)) { - AcpiOsDeleteSemaphore (ObjDesc->Mutex.Semaphore); - ObjDesc->Mutex.Semaphore = TempSemaphore; + AcpiOsDeleteSemaphore (ObjDesc->Event.Semaphore); + ObjDesc->Event.Semaphore = TempSemaphore; } return (Status); diff --git a/sys/contrib/dev/acpica/exutils.c b/sys/contrib/dev/acpica/exutils.c index 7f17991..1468e84 100644 --- a/sys/contrib/dev/acpica/exutils.c +++ b/sys/contrib/dev/acpica/exutils.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amutils - interpreter/scanner utilities - * $Revision: 69 $ + * Module Name: exutils - interpreter/scanner utilities + * $Revision: 79 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ * *****************************************************************************/ -#define __AMUTILS_C__ +#define __EXUTILS_C__ #include "acpi.h" #include "acparser.h" @@ -124,36 +124,37 @@ #include "acnamesp.h" #include "acevents.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amutils") - +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exutils") /******************************************************************************* * - * FUNCTION: AcpiAmlEnterInterpreter + * FUNCTION: AcpiExEnterInterpreter * * PARAMETERS: None * * DESCRIPTION: Enter the interpreter execution region + * TBD: should be a macro * ******************************************************************************/ -void -AcpiAmlEnterInterpreter (void) +ACPI_STATUS +AcpiExEnterInterpreter (void) { - FUNCTION_TRACE ("AmlEnterInterpreter"); + ACPI_STATUS Status; + FUNCTION_TRACE ("ExEnterInterpreter"); - AcpiCmAcquireMutex (ACPI_MTX_EXECUTE); - return_VOID; + Status = AcpiUtAcquireMutex (ACPI_MTX_EXECUTE); + return_ACPI_STATUS (Status); } /******************************************************************************* * - * FUNCTION: AcpiAmlExitInterpreter + * FUNCTION: AcpiExExitInterpreter * * PARAMETERS: None * @@ -169,15 +170,17 @@ AcpiAmlEnterInterpreter (void) * already executing * 7) About to invoke a user-installed opregion handler * + * TBD: should be a macro + * ******************************************************************************/ void -AcpiAmlExitInterpreter (void) +AcpiExExitInterpreter (void) { - FUNCTION_TRACE ("AmlExitInterpreter"); + FUNCTION_TRACE ("ExExitInterpreter"); - AcpiCmReleaseMutex (ACPI_MTX_EXECUTE); + AcpiUtReleaseMutex (ACPI_MTX_EXECUTE); return_VOID; } @@ -185,7 +188,7 @@ AcpiAmlExitInterpreter (void) /******************************************************************************* * - * FUNCTION: AcpiAmlValidateObjectType + * FUNCTION: AcpiExValidateObjectType * * PARAMETERS: Type Object type to validate * @@ -194,7 +197,7 @@ AcpiAmlExitInterpreter (void) ******************************************************************************/ BOOLEAN -AcpiAmlValidateObjectType ( +AcpiExValidateObjectType ( ACPI_OBJECT_TYPE Type) { @@ -210,7 +213,7 @@ AcpiAmlValidateObjectType ( /******************************************************************************* * - * FUNCTION: AcpiAmlTruncateFor32bitTable + * FUNCTION: AcpiExTruncateFor32bitTable * * PARAMETERS: ObjDesc - Object to be truncated * WalkState - Current walk state @@ -224,7 +227,7 @@ AcpiAmlValidateObjectType ( ******************************************************************************/ void -AcpiAmlTruncateFor32bitTable ( +AcpiExTruncateFor32bitTable ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { @@ -254,7 +257,7 @@ AcpiAmlTruncateFor32bitTable ( /******************************************************************************* * - * FUNCTION: AcpiAmlAcquireGlobalLock + * FUNCTION: AcpiExAcquireGlobalLock * * PARAMETERS: Rule - Lock rule: AlwaysLock, NeverLock * @@ -267,32 +270,32 @@ AcpiAmlTruncateFor32bitTable ( ******************************************************************************/ BOOLEAN -AcpiAmlAcquireGlobalLock ( +AcpiExAcquireGlobalLock ( UINT32 Rule) { BOOLEAN Locked = FALSE; ACPI_STATUS Status; - FUNCTION_TRACE ("AmlAcquireGlobalLock"); + FUNCTION_TRACE ("ExAcquireGlobalLock"); - /* Only attempt lock if the Rule says so */ + /* Only attempt lock if the Rule says so */ if (Rule == (UINT32) GLOCK_ALWAYS_LOCK) { - /* OK to get the lock */ + /* We should attempt to get the lock */ Status = AcpiEvAcquireGlobalLock (); - if (ACPI_FAILURE (Status)) + if (ACPI_SUCCESS (Status)) { - DEBUG_PRINT (ACPI_ERROR, ("Get Global Lock Failed!!\n")); + Locked = TRUE; } - if (ACPI_SUCCESS (Status)) + else { - AcpiGbl_GlobalLockSet = TRUE; - Locked = TRUE; + DEBUG_PRINTP (ACPI_ERROR, ("Could not acquire Global Lock, %s\n", + AcpiUtFormatException (Status))); } } @@ -302,7 +305,7 @@ AcpiAmlAcquireGlobalLock ( /******************************************************************************* * - * FUNCTION: AcpiAmlReleaseGlobalLock + * FUNCTION: AcpiExReleaseGlobalLock * * PARAMETERS: LockedByMe - Return value from corresponding call to * AcquireGlobalLock. @@ -314,31 +317,20 @@ AcpiAmlAcquireGlobalLock ( ******************************************************************************/ ACPI_STATUS -AcpiAmlReleaseGlobalLock ( +AcpiExReleaseGlobalLock ( BOOLEAN LockedByMe) { - FUNCTION_TRACE ("AmlReleaseGlobalLock"); + FUNCTION_TRACE ("ExReleaseGlobalLock"); /* Only attempt unlock if the caller locked it */ if (LockedByMe) { - /* Double check against the global flag */ - - if (AcpiGbl_GlobalLockSet) - { - /* OK, now release the lock */ - - AcpiEvReleaseGlobalLock (); - AcpiGbl_GlobalLockSet = FALSE; - } + /* OK, now release the lock */ - else - { - DEBUG_PRINT (ACPI_ERROR, ("Global lock was not set\n")); - } + AcpiEvReleaseGlobalLock (); } @@ -348,7 +340,7 @@ AcpiAmlReleaseGlobalLock ( /******************************************************************************* * - * FUNCTION: AcpiAmlDigitsNeeded + * FUNCTION: AcpiExDigitsNeeded * * PARAMETERS: val - Value to be represented * base - Base of representation @@ -358,24 +350,27 @@ AcpiAmlReleaseGlobalLock ( ******************************************************************************/ UINT32 -AcpiAmlDigitsNeeded ( +AcpiExDigitsNeeded ( ACPI_INTEGER val, UINT32 base) { UINT32 NumDigits = 0; - FUNCTION_TRACE ("AmlDigitsNeeded"); + FUNCTION_TRACE ("ExDigitsNeeded"); if (base < 1) { - REPORT_ERROR (("AmlDigitsNeeded: Internal error - Invalid base\n")); + REPORT_ERROR (("ExDigitsNeeded: Internal error - Invalid base\n")); } else { - for (NumDigits = 1 + (val < 0); (val = ACPI_DIVIDE (val,base)); ++NumDigits) + /* + * ACPI_INTEGER is unsigned, which is why we don't worry about the '-' + */ + for (NumDigits = 1; (val = ACPI_DIVIDE (val,base)); ++NumDigits) { ; } } @@ -423,7 +418,7 @@ _ntohl ( /******************************************************************************* * - * FUNCTION: AcpiAmlEisaIdToString + * FUNCTION: AcpiExEisaIdToString * * PARAMETERS: NumericId - EISA ID to be converted * OutString - Where to put the converted string (8 bytes) @@ -433,7 +428,7 @@ _ntohl ( ******************************************************************************/ ACPI_STATUS -AcpiAmlEisaIdToString ( +AcpiExEisaIdToString ( UINT32 NumericId, NATIVE_CHAR *OutString) { @@ -458,7 +453,7 @@ AcpiAmlEisaIdToString ( /******************************************************************************* * - * FUNCTION: AcpiAmlUnsignedIntegerToString + * FUNCTION: AcpiExUnsignedIntegerToString * * PARAMETERS: Value - Value to be converted * OutString - Where to put the converted string (8 bytes) @@ -468,7 +463,7 @@ AcpiAmlEisaIdToString ( ******************************************************************************/ ACPI_STATUS -AcpiAmlUnsignedIntegerToString ( +AcpiExUnsignedIntegerToString ( ACPI_INTEGER Value, NATIVE_CHAR *OutString) { @@ -476,7 +471,7 @@ AcpiAmlUnsignedIntegerToString ( UINT32 DigitsNeeded; - DigitsNeeded = AcpiAmlDigitsNeeded (Value, 10); + DigitsNeeded = AcpiExDigitsNeeded (Value, 10); OutString[DigitsNeeded] = '\0'; @@ -490,7 +485,3 @@ AcpiAmlUnsignedIntegerToString ( } - - - - diff --git a/sys/contrib/dev/acpica/exxface.c b/sys/contrib/dev/acpica/exxface.c index 960677e..d34c460 100644 --- a/sys/contrib/dev/acpica/exxface.c +++ b/sys/contrib/dev/acpica/exxface.c @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: amxface - External interpreter interfaces - * $Revision: 24 $ + * Module Name: exxface - External interpreter interfaces + * $Revision: 27 $ * *****************************************************************************/ @@ -115,14 +115,14 @@ * *****************************************************************************/ -#define __AMXFACE_C__ +#define __EXXFACE_C__ #include "acpi.h" #include "acinterp.h" -#define _COMPONENT INTERPRETER - MODULE_NAME ("amxface") +#define _COMPONENT ACPI_EXECUTER + MODULE_NAME ("exxface") /* @@ -147,7 +147,7 @@ /******************************************************************************* * - * FUNCTION: AcpiAmlExecuteMethod + * FUNCTION: AcpiExExecuteMethod * * PARAMETERS: Pcode - Pointer to the pcode stream * PcodeLength - Length of pcode that comprises the method @@ -162,7 +162,7 @@ ******************************************************************************/ ACPI_STATUS -AcpiAmlExecuteMethod ( +AcpiExExecuteMethod ( ACPI_NAMESPACE_NODE *MethodNode, ACPI_OPERAND_OBJECT **Params, ACPI_OPERAND_OBJECT **ReturnObjDesc) @@ -170,7 +170,7 @@ AcpiAmlExecuteMethod ( ACPI_STATUS Status; - FUNCTION_TRACE ("AmlExecuteMethod"); + FUNCTION_TRACE ("ExExecuteMethod"); /* @@ -178,11 +178,15 @@ AcpiAmlExecuteMethod ( * level execute. */ - AcpiAmlEnterInterpreter (); + Status = AcpiExEnterInterpreter (); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } Status = AcpiPsxExecute (MethodNode, Params, ReturnObjDesc); - AcpiAmlExitInterpreter (); + AcpiExExitInterpreter (); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/hwacpi.c b/sys/contrib/dev/acpica/hwacpi.c index d8b5f10..9781d18 100644 --- a/sys/contrib/dev/acpica/hwacpi.c +++ b/sys/contrib/dev/acpica/hwacpi.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface - * $Revision: 36 $ + * $Revision: 40 $ * *****************************************************************************/ @@ -121,7 +121,7 @@ #include "achware.h" -#define _COMPONENT HARDWARE +#define _COMPONENT ACPI_HARDWARE MODULE_NAME ("hwacpi") @@ -154,7 +154,7 @@ AcpiHwInitialize ( { AcpiGbl_RestoreAcpiChipset = FALSE; - DEBUG_PRINT (ACPI_ERROR, ("HwInitialize: No FADT!\n")); + DEBUG_PRINTP (ACPI_ERROR, ("No FADT!\n")); return_ACPI_STATUS (AE_NO_ACPI_TABLES); } @@ -165,8 +165,8 @@ AcpiHwInitialize ( { RestoreAcpiChipset = FALSE; - DEBUG_PRINT (ACPI_ERROR, - ("CmHardwareInitialize: Supported modes uninitialized!\n")); + DEBUG_PRINTP (ACPI_ERROR, + ("Supported modes uninitialized!\n")); return_ACPI_STATUS (AE_ERROR); } @@ -180,14 +180,14 @@ AcpiHwInitialize ( case (SYS_MODE_ACPI): AcpiGbl_OriginalMode = SYS_MODE_ACPI; - DEBUG_PRINT (ACPI_INFO, ("System supports ACPI mode only.\n")); + DEBUG_PRINTP (ACPI_INFO, ("System supports ACPI mode only.\n")); break; case (SYS_MODE_LEGACY): AcpiGbl_OriginalMode = SYS_MODE_LEGACY; - DEBUG_PRINT (ACPI_INFO, + DEBUG_PRINTP (ACPI_INFO, ("Tables loaded from buffer, hardware assumed to support LEGACY mode only.\n")); break; @@ -203,10 +203,10 @@ AcpiHwInitialize ( AcpiGbl_OriginalMode = SYS_MODE_LEGACY; } - DEBUG_PRINT (ACPI_INFO, + DEBUG_PRINTP (ACPI_INFO, ("System supports both ACPI and LEGACY modes.\n")); - DEBUG_PRINT (ACPI_INFO, + DEBUG_PRINTP (ACPI_INFO, ("System is currently in %s mode.\n", (AcpiGbl_OriginalMode == SYS_MODE_ACPI) ? "ACPI" : "LEGACY")); break; @@ -246,7 +246,7 @@ AcpiHwInitialize ( /* GPE0 specified in FADT */ AcpiGbl_Gpe0EnableRegisterSave = - AcpiCmAllocate (DIV_2 (AcpiGbl_FADT->Gpe0BlkLen)); + AcpiUtAllocate (DIV_2 (AcpiGbl_FADT->Gpe0BlkLen)); if (!AcpiGbl_Gpe0EnableRegisterSave) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -272,7 +272,7 @@ AcpiHwInitialize ( /* GPE1 defined */ AcpiGbl_Gpe1EnableRegisterSave = - AcpiCmAllocate (DIV_2 (AcpiGbl_FADT->Gpe1BlkLen)); + AcpiUtAllocate (DIV_2 (AcpiGbl_FADT->Gpe1BlkLen)); if (!AcpiGbl_Gpe1EnableRegisterSave) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -315,7 +315,7 @@ AcpiHwSetMode ( UINT32 Mode) { - ACPI_STATUS Status = AE_ERROR; + ACPI_STATUS Status = AE_NO_HARDWARE_RESPONSE; FUNCTION_TRACE ("HwSetMode"); @@ -325,7 +325,7 @@ AcpiHwSetMode ( /* BIOS should have disabled ALL fixed and GP events */ AcpiOsOut8 (AcpiGbl_FADT->SmiCmd, AcpiGbl_FADT->AcpiEnable); - DEBUG_PRINT (ACPI_INFO, ("Attempting to enable ACPI mode\n")); + DEBUG_PRINTP (ACPI_INFO, ("Attempting to enable ACPI mode\n")); } else if (Mode == SYS_MODE_LEGACY) @@ -336,13 +336,13 @@ AcpiHwSetMode ( */ AcpiOsOut8 (AcpiGbl_FADT->SmiCmd, AcpiGbl_FADT->AcpiDisable); - DEBUG_PRINT (ACPI_INFO, + DEBUG_PRINTP (ACPI_INFO, ("Attempting to enable Legacy (non-ACPI) mode\n")); } if (AcpiHwGetMode () == Mode) { - DEBUG_PRINT (ACPI_INFO, ("Mode %X successfully enabled\n", Mode)); + DEBUG_PRINTP (ACPI_INFO, ("Mode %X successfully enabled\n", Mode)); Status = AE_OK; } diff --git a/sys/contrib/dev/acpica/hwgpe.c b/sys/contrib/dev/acpica/hwgpe.c index 52851fa..7302eb9 100644 --- a/sys/contrib/dev/acpica/hwgpe.c +++ b/sys/contrib/dev/acpica/hwgpe.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: hwgpe - Low level GPE enable/disable/clear functions - * $Revision: 28 $ + * $Revision: 29 $ * *****************************************************************************/ @@ -120,7 +120,7 @@ #include "acnamesp.h" #include "acevents.h" -#define _COMPONENT HARDWARE +#define _COMPONENT ACPI_HARDWARE MODULE_NAME ("hwgpe") diff --git a/sys/contrib/dev/acpica/hwregs.c b/sys/contrib/dev/acpica/hwregs.c index 1c47c67..7f20418 100644 --- a/sys/contrib/dev/acpica/hwregs.c +++ b/sys/contrib/dev/acpica/hwregs.c @@ -3,7 +3,7 @@ * * Module Name: hwregs - Read/write access functions for the various ACPI * control and status registers. - * $Revision: 88 $ + * $Revision: 97 $ * ******************************************************************************/ @@ -122,7 +122,7 @@ #include "achware.h" #include "acnamesp.h" -#define _COMPONENT HARDWARE +#define _COMPONENT ACPI_HARDWARE MODULE_NAME ("hwregs") @@ -184,12 +184,12 @@ AcpiHwClearAcpiStatus (void) FUNCTION_TRACE ("HwClearAcpiStatus"); - DEBUG_PRINT (TRACE_IO, ("About to write %04X to %04X\n", - ALL_FIXED_STS_BITS, - (UINT16) ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1aEvtBlk.Address))); + DEBUG_PRINTP (TRACE_IO, ("About to write %04X to %04X\n", + ALL_FIXED_STS_BITS, + (UINT16) ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1aEvtBlk.Address))); - AcpiCmAcquireMutex (ACPI_MTX_HARDWARE); + AcpiUtAcquireMutex (ACPI_MTX_HARDWARE); AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, PM1_STS, ALL_FIXED_STS_BITS); @@ -197,7 +197,7 @@ AcpiHwClearAcpiStatus (void) if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1bEvtBlk.Address)) { AcpiOsOut16 ((ACPI_IO_ADDRESS) ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1bEvtBlk.Address), - (UINT16) ALL_FIXED_STS_BITS); + (UINT16) ALL_FIXED_STS_BITS); } /* now clear the GPE Bits */ @@ -208,8 +208,9 @@ AcpiHwClearAcpiStatus (void) for (Index = 0; Index < GpeLength; Index++) { - AcpiOsOut8 ((ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) + Index), - (UINT8) 0xff); + AcpiOsOut8 ((ACPI_IO_ADDRESS) ( + ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) + Index), + (UINT8) 0xff); } } @@ -219,12 +220,13 @@ AcpiHwClearAcpiStatus (void) for (Index = 0; Index < GpeLength; Index++) { - AcpiOsOut8 ((ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) + Index), - (UINT8) 0xff); + AcpiOsOut8 ((ACPI_IO_ADDRESS) ( + ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) + Index), + (UINT8) 0xff); } } - AcpiCmReleaseMutex (ACPI_MTX_HARDWARE); + AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); return_VOID; } @@ -289,7 +291,10 @@ AcpiHwObtainSleepTypeRegisterData ( * two elements */ - Status = AcpiCmResolvePackageReferences(ObjDesc); + /* Even though AcpiEvaluateObject resolves package references, + * NsEvaluate dpesn't. So, we do it here. + */ + Status = AcpiUtResolvePackageReferences(ObjDesc); if (ObjDesc->Package.Count < 2) { @@ -323,12 +328,11 @@ AcpiHwObtainSleepTypeRegisterData ( if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("SleepTypeRegisterData: Bad Sleep object %p type %X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Bad Sleep object %p type %X\n", ObjDesc, ObjDesc->Common.Type)); } - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } @@ -361,32 +365,33 @@ AcpiHwRegisterBitAccess ( UINT32 RegisterValue = 0; UINT32 Mask = 0; UINT32 Value = 0; + va_list marker; + FUNCTION_TRACE ("HwRegisterBitAccess"); if (ReadWrite == ACPI_WRITE) { - va_list marker; - va_start (marker, RegisterId); Value = va_arg (marker, UINT32); va_end (marker); } - if (ACPI_MTX_LOCK == UseLock) { - AcpiCmAcquireMutex (ACPI_MTX_HARDWARE); + if (ACPI_MTX_LOCK == UseLock) + { + AcpiUtAcquireMutex (ACPI_MTX_HARDWARE); } /* * Decode the Register ID - * Register id = Register block id | bit 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. + * Check Mask to determine Register offset, and then read-write. */ - switch (REGISTER_BLOCK_ID(RegisterId)) + switch (REGISTER_BLOCK_ID (RegisterId)) { case PM1_STS: @@ -442,8 +447,8 @@ AcpiHwRegisterBitAccess ( if (Value) { - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, PM1_STS, (UINT16) Value); - + AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, PM1_STS, + (UINT16) Value); RegisterValue = 0; } } @@ -552,8 +557,8 @@ AcpiHwRegisterBitAccess ( * because we need to do different things. Yuck. */ - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - RegisterId, (UINT16) RegisterValue); + AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId, + (UINT16) RegisterValue); } break; @@ -574,7 +579,7 @@ AcpiHwRegisterBitAccess ( RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM2_CONTROL); DEBUG_PRINT (TRACE_IO, ("PM2 control: Read %X from %p\n", - RegisterValue, ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address))); + RegisterValue, ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address))); if (ReadWrite == ACPI_WRITE) { @@ -583,8 +588,7 @@ AcpiHwRegisterBitAccess ( Value &= Mask; RegisterValue |= Value; - DEBUG_PRINT (TRACE_IO, - ("About to write %04X to %p\n", RegisterValue, + DEBUG_PRINT (TRACE_IO, ("About to write %04X to %p\n", RegisterValue, AcpiGbl_FADT->XPm2CntBlk.Address)); AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, @@ -599,7 +603,7 @@ AcpiHwRegisterBitAccess ( RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM_TIMER); DEBUG_PRINT (TRACE_IO, ("PM_TIMER: Read %X from %p\n", - RegisterValue, ACPI_GET_ADDRESS (AcpiGbl_FADT->XPmTmrBlk.Address))); + RegisterValue, ACPI_GET_ADDRESS (AcpiGbl_FADT->XPmTmrBlk.Address))); break; @@ -641,7 +645,7 @@ AcpiHwRegisterBitAccess ( RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, RegisterId); DEBUG_PRINT (TRACE_IO, ("GPE Enable bits: Read %X from %X\n", - RegisterValue, RegisterId)); + RegisterValue, RegisterId)); if (ReadWrite == ACPI_WRITE) { @@ -654,17 +658,19 @@ AcpiHwRegisterBitAccess ( /* Enable Register indexed by the value in Mask */ DEBUG_PRINT (TRACE_IO, ("About to write %04X to %04X\n", - RegisterValue, RegisterId)); - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - RegisterId, (UINT8) RegisterValue); - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, RegisterId); + RegisterValue, RegisterId)); + AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId, + (UINT8) RegisterValue); + RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, + RegisterId); } break; case SMI_CMD_BLOCK: case PROCESSOR_BLOCK: - /* not used */ + /* Not used by any callers at this time - therefore, not implemented */ + default: Mask = 0; @@ -672,7 +678,7 @@ AcpiHwRegisterBitAccess ( } if (ACPI_MTX_LOCK == UseLock) { - AcpiCmReleaseMutex (ACPI_MTX_HARDWARE); + AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); } @@ -706,11 +712,13 @@ AcpiHwRegisterRead ( UINT32 Value = 0; UINT32 BankOffset; + FUNCTION_TRACE ("AcpiHwRegisterRead"); + if (ACPI_MTX_LOCK == UseLock) { - AcpiCmAcquireMutex (ACPI_MTX_HARDWARE); + AcpiUtAcquireMutex (ACPI_MTX_HARDWARE); } @@ -790,7 +798,7 @@ AcpiHwRegisterRead ( if (ACPI_MTX_LOCK == UseLock) { - AcpiCmReleaseMutex (ACPI_MTX_HARDWARE); + AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); } return_VALUE (Value); @@ -824,7 +832,7 @@ AcpiHwRegisterWrite ( if (ACPI_MTX_LOCK == UseLock) { - AcpiCmAcquireMutex (ACPI_MTX_HARDWARE); + AcpiUtAcquireMutex (ACPI_MTX_HARDWARE); } @@ -907,7 +915,7 @@ AcpiHwRegisterWrite ( /* For 2.0, SMI_CMD is always in IO space */ /* TBD: what about 1.0? 0.71? */ - AcpiOsOut8 (AcpiGbl_FADT->SmiCmd, (UINT8) Value); + AcpiOsOut8 (AcpiGbl_FADT->SmiCmd, (UINT8) Value); break; @@ -919,7 +927,7 @@ AcpiHwRegisterWrite ( if (ACPI_MTX_LOCK == UseLock) { - AcpiCmReleaseMutex (ACPI_MTX_HARDWARE); + AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); } return_VOID; @@ -943,7 +951,7 @@ AcpiHwRegisterWrite ( UINT32 AcpiHwLowLevelRead ( UINT32 Width, - ACPI_GAS *Reg, + ACPI_GENERIC_ADDRESS *Reg, UINT32 Offset) { UINT32 Value = 0; @@ -971,7 +979,7 @@ AcpiHwLowLevelRead ( switch (Reg->AddressSpaceId) { - case ADDRESS_SPACE_SYSTEM_MEMORY: + case ACPI_ADR_SPACE_SYSTEM_MEMORY: MemAddress = (ACPI_PHYSICAL_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset); @@ -990,7 +998,7 @@ AcpiHwLowLevelRead ( break; - case ADDRESS_SPACE_SYSTEM_IO: + case ACPI_ADR_SPACE_SYSTEM_IO: IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset); @@ -1009,7 +1017,7 @@ AcpiHwLowLevelRead ( break; - case ADDRESS_SPACE_PCI_CONFIG: + case ACPI_ADR_SPACE_PCI_CONFIG: PciDevFunc = ACPI_PCI_DEVFUN (ACPI_GET_ADDRESS (Reg->Address)); PciRegister = ACPI_PCI_REGISTER (ACPI_GET_ADDRESS (Reg->Address)) + Offset; @@ -1053,7 +1061,7 @@ void AcpiHwLowLevelWrite ( UINT32 Width, UINT32 Value, - ACPI_GAS *Reg, + ACPI_GENERIC_ADDRESS *Reg, UINT32 Offset) { ACPI_PHYSICAL_ADDRESS MemAddress; @@ -1080,7 +1088,7 @@ AcpiHwLowLevelWrite ( switch (Reg->AddressSpaceId) { - case ADDRESS_SPACE_SYSTEM_MEMORY: + case ACPI_ADR_SPACE_SYSTEM_MEMORY: MemAddress = (ACPI_PHYSICAL_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset); @@ -1099,7 +1107,7 @@ AcpiHwLowLevelWrite ( break; - case ADDRESS_SPACE_SYSTEM_IO: + case ACPI_ADR_SPACE_SYSTEM_IO: IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset); @@ -1118,7 +1126,7 @@ AcpiHwLowLevelWrite ( break; - case ADDRESS_SPACE_PCI_CONFIG: + case ACPI_ADR_SPACE_PCI_CONFIG: PciDevFunc = ACPI_PCI_DEVFUN (ACPI_GET_ADDRESS (Reg->Address)); PciRegister = ACPI_PCI_REGISTER (ACPI_GET_ADDRESS (Reg->Address)) + Offset; diff --git a/sys/contrib/dev/acpica/hwsleep.c b/sys/contrib/dev/acpica/hwsleep.c index ba7b341..0b29ce0 100644 --- a/sys/contrib/dev/acpica/hwsleep.c +++ b/sys/contrib/dev/acpica/hwsleep.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface - * $Revision: 7 $ + * $Revision: 11 $ * *****************************************************************************/ @@ -119,7 +119,7 @@ #include "acnamesp.h" #include "achware.h" -#define _COMPONENT HARDWARE +#define _COMPONENT ACPI_HARDWARE MODULE_NAME ("hwsleep") @@ -228,30 +228,32 @@ AcpiGetFirmwareWakingVector ( ACPI_STATUS AcpiEnterSleepState ( - UINT8 SleepState) + UINT8 SleepState) { - ACPI_STATUS Status; - ACPI_OBJECT_LIST ArgList; - ACPI_OBJECT Arg; - UINT8 TypeA; - UINT8 TypeB; - UINT16 PM1AControl; - UINT16 PM1BControl; + ACPI_STATUS Status; + ACPI_OBJECT_LIST ArgList; + ACPI_OBJECT Arg; + UINT8 TypeA; + UINT8 TypeB; + UINT16 PM1AControl; + UINT16 PM1BControl; + FUNCTION_TRACE ("AcpiEnterSleepState"); - + + /* * _PSW methods could be run here to enable wake-on keyboard, LAN, etc. */ - Status = AcpiHwObtainSleepTypeRegisterData(SleepState, &TypeA, &TypeB); - - if (!ACPI_SUCCESS(Status)) + Status = AcpiHwObtainSleepTypeRegisterData (SleepState, &TypeA, &TypeB); + if (!ACPI_SUCCESS (Status)) { return Status; } /* run the _PTS and _GTS methods */ + MEMSET(&ArgList, 0, sizeof(ArgList)); ArgList.Count = 1; ArgList.Pointer = &Arg; @@ -262,21 +264,25 @@ AcpiEnterSleepState ( AcpiEvaluateObject(NULL, "\\_PTS", &ArgList, NULL); AcpiEvaluateObject(NULL, "\\_GTS", &ArgList, NULL); - + /* clear wake status */ + AcpiHwRegisterBitAccess(ACPI_WRITE, ACPI_MTX_LOCK, WAK_STS, 1); PM1AControl = (UINT16) AcpiHwRegisterRead(ACPI_MTX_LOCK, PM1_CONTROL); /* mask off SLP_EN and SLP_TYP fields */ + PM1AControl &= 0xC3FF; - + /* mask in SLP_EN */ + PM1AControl |= (1 << AcpiHwGetBitShift (SLP_EN_MASK)); - + PM1BControl = PM1AControl; /* mask in SLP_TYP */ + PM1AControl |= (TypeA << AcpiHwGetBitShift (SLP_TYPE_X_MASK)); PM1BControl |= (TypeB << AcpiHwGetBitShift (SLP_TYPE_X_MASK)); @@ -286,8 +292,10 @@ AcpiEnterSleepState ( AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1A_CONTROL, PM1AControl); AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1B_CONTROL, PM1BControl); - AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1_CONTROL, - (1 << AcpiHwGetBitShift (SLP_EN_MASK))); + + /* one system won't work with this, one won't work without */ + /*AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1_CONTROL, + (1 << AcpiHwGetBitShift (SLP_EN_MASK)));*/ enable(); diff --git a/sys/contrib/dev/acpica/hwtimer.c b/sys/contrib/dev/acpica/hwtimer.c index 52139ed..fbe61d4 100644 --- a/sys/contrib/dev/acpica/hwtimer.c +++ b/sys/contrib/dev/acpica/hwtimer.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: hwtimer.c - ACPI Power Management Timer Interface - * $Revision: 5 $ + * $Revision: 9 $ * *****************************************************************************/ @@ -118,7 +118,7 @@ #include "acpi.h" #include "achware.h" -#define _COMPONENT HARDWARE +#define _COMPONENT ACPI_HARDWARE MODULE_NAME ("hwtimer") @@ -138,8 +138,19 @@ ACPI_STATUS AcpiGetTimerResolution ( UINT32 *Resolution) { + ACPI_STATUS Status; + FUNCTION_TRACE ("AcpiGetTimerResolution"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + if (!Resolution) { return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -174,8 +185,19 @@ ACPI_STATUS AcpiGetTimer ( UINT32 *Ticks) { + ACPI_STATUS Status; + FUNCTION_TRACE ("AcpiGetTimer"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + if (!Ticks) { return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -195,20 +217,20 @@ AcpiGetTimer ( * EndTicks * TimeElapsed * - * RETURN: TimeElapsed + * RETURN: 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 + * 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 accomodates only a single timer + * Note that this function accomodates only a single timer * rollover. Thus for 24-bit timers, this function should only - * be used for calculating durations less than ~4.6 seconds + * be used for calculating durations less than ~4.6 seconds * (~20 hours for 32-bit timers). * ******************************************************************************/ @@ -227,12 +249,12 @@ AcpiGetTimerDuration ( FUNCTION_TRACE ("AcpiGetTimerDuration"); - if (!TimeElapsed) + if (!TimeElapsed) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* + /* * Compute Tick Delta: * ------------------- * Handle (max one) timer rollovers on 24- versus 32-bit timers. @@ -241,7 +263,7 @@ AcpiGetTimerDuration ( { DeltaTicks = EndTicks - StartTicks; } - else if (StartTicks > EndTicks) + else if (StartTicks > EndTicks) { /* 24-bit Timer */ if (0 == AcpiGbl_FADT->TmrValExt) @@ -249,7 +271,7 @@ AcpiGetTimerDuration ( DeltaTicks = (((0x00FFFFFF - StartTicks) + EndTicks) & 0x00FFFFFF); } /* 32-bit Timer */ - else + else { DeltaTicks = (0xFFFFFFFF - StartTicks) + EndTicks; } @@ -260,17 +282,17 @@ AcpiGetTimerDuration ( return_ACPI_STATUS (AE_OK); } - /* + /* * Compute Duration: * ----------------- - * Since certain compilers (gcc/Linux, argh!) don't support 64-bit - * divides in kernel-space we have to do some trickery to preserve + * Since certain compilers (gcc/Linux, argh!) don't support 64-bit + * divides in kernel-space we have to do some trickery to preserve * accuracy while using 32-bit math. * - * TODO: Change to use 64-bit math when supported. - * + * TBD: Change to use 64-bit math when supported. + * * The process is as follows: - * 1. Compute the number of seconds by dividing Delta Ticks by + * 1. Compute the number of seconds by dividing Delta Ticks by * the timer frequency. * 2. Compute the number of milliseconds in the remainder from step #1 * by multiplying by 1000 and then dividing by the timer frequency. @@ -278,7 +300,7 @@ AcpiGetTimerDuration ( * by multiplying by 1000 and then dividing by the timer frequency. * 4. Add the results from steps 1, 2, and 3 to get the total duration. * - * Example: The time elapsed for DeltaTicks = 0xFFFFFFFF should be + * Example: The time elapsed for DeltaTicks = 0xFFFFFFFF should be * 1199864031 microseconds. This is computed as follows: * Step #1: Seconds = 1199; Remainder = 3092840 * Step #2: Milliseconds = 864; Remainder = 113120 diff --git a/sys/contrib/dev/acpica/nsaccess.c b/sys/contrib/dev/acpica/nsaccess.c index 47e7785..965ee3a 100644 --- a/sys/contrib/dev/acpica/nsaccess.c +++ b/sys/contrib/dev/acpica/nsaccess.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsaccess - Top-level functions for accessing ACPI namespace - * $Revision: 119 $ + * $Revision: 126 $ * ******************************************************************************/ @@ -123,7 +123,7 @@ #include "acdispat.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nsaccess") @@ -153,7 +153,7 @@ AcpiNsRootInitialize (void) FUNCTION_TRACE ("NsRootInitialize"); - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); /* * The global root ptr is initially NULL, so a non-NULL value indicates @@ -177,21 +177,19 @@ AcpiNsRootInitialize (void) /* Enter the pre-defined names in the name table */ - DEBUG_PRINT (ACPI_INFO, - ("Entering predefined name table entries into namespace\n")); + DEBUG_PRINTP (ACPI_INFO, ("Entering predefined entries into namespace\n")); for (InitVal = AcpiGbl_PreDefinedNames; InitVal->Name; InitVal++) { - Status = AcpiNsLookup (NULL, InitVal->Name, - (OBJECT_TYPE_INTERNAL) InitVal->Type, + Status = AcpiNsLookup (NULL, InitVal->Name, InitVal->Type, IMODE_LOAD_PASS2, NS_NO_UPSEARCH, NULL, &NewNode); if (ACPI_FAILURE (Status) || (!NewNode)) /* Must be on same line for code converter */ { - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("Could not create predefined name %s, %s\n", - InitVal->Name, AcpiCmFormatException (Status))); + InitVal->Name, AcpiUtFormatException (Status))); } /* @@ -207,9 +205,7 @@ AcpiNsRootInitialize (void) * descriptor for it. */ - ObjDesc = AcpiCmCreateInternalObject ( - (OBJECT_TYPE_INTERNAL) InitVal->Type); - + ObjDesc = AcpiUtCreateInternalObject (InitVal->Type); if (!ObjDesc) { Status = AE_NO_MEMORY; @@ -234,19 +230,18 @@ AcpiNsRootInitialize (void) case ACPI_TYPE_STRING: - ObjDesc->String.Length = - (UINT16) STRLEN (InitVal->Val); + ObjDesc->String.Length = STRLEN (InitVal->Val); /* * Allocate a buffer for the string. All * String.Pointers must be allocated buffers! * (makes deletion simpler) */ - ObjDesc->String.Pointer = AcpiCmAllocate ( + ObjDesc->String.Pointer = AcpiUtAllocate ( (ObjDesc->String.Length + 1)); if (!ObjDesc->String.Pointer) { - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); Status = AE_NO_MEMORY; goto UnlockAndExit; } @@ -258,7 +253,7 @@ AcpiNsRootInitialize (void) case ACPI_TYPE_MUTEX: ObjDesc->Mutex.SyncLevel = - (UINT16) STRTOUL (InitVal->Val, NULL, 10); + (UINT16) STRTOUL (InitVal->Val, NULL, 10); if (STRCMP (InitVal->Name, "_GL_") == 0) { @@ -299,21 +294,20 @@ AcpiNsRootInitialize (void) default: REPORT_ERROR (("Unsupported initial type value %X\n", InitVal->Type)); - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); ObjDesc = NULL; continue; } /* Store pointer to value descriptor in the Node */ - AcpiNsAttachObject (NewNode, ObjDesc, - ObjDesc->Common.Type); + AcpiNsAttachObject (NewNode, ObjDesc, ObjDesc->Common.Type); } } UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -345,7 +339,7 @@ ACPI_STATUS AcpiNsLookup ( ACPI_GENERIC_STATE *ScopeInfo, NATIVE_CHAR *Pathname, - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, OPERATING_MODE InterpreterMode, UINT32 Flags, ACPI_WALK_STATE *WalkState, @@ -359,8 +353,8 @@ AcpiNsLookup ( UINT32 NumSegments; ACPI_NAME SimpleName; BOOLEAN NullNamePath = FALSE; - OBJECT_TYPE_INTERNAL TypeToCheckFor; - OBJECT_TYPE_INTERNAL ThisSearchType; + ACPI_OBJECT_TYPE8 TypeToCheckFor; + ACPI_OBJECT_TYPE8 ThisSearchType; UINT32 LocalFlags = Flags & ~NS_ERROR_IF_FOUND; DEBUG_EXEC (UINT32 i;) @@ -393,8 +387,8 @@ AcpiNsLookup ( if ((!ScopeInfo) || (!ScopeInfo->Scope.Node)) { - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Null scope prefix, using root node (%p)\n", AcpiGbl_RootNode)); + DEBUG_PRINTP (TRACE_NAMES, ("Null scope prefix, using root node (%p)\n", + AcpiGbl_RootNode)); PrefixNode = AcpiGbl_RootNode; } @@ -405,14 +399,14 @@ AcpiNsLookup ( /* - * This check is explicitly split provide relax the TypeToCheckFor + * This check is explicitly split to relax the TypeToCheckFor * conditions for BankFieldDefn. Originally, both BankFieldDefn and * DefFieldDefn caused TypeToCheckFor to be set to ACPI_TYPE_REGION, * but the BankFieldDefn may also check for a Field definition as well * as an OperationRegion. */ - if (INTERNAL_TYPE_DEF_FIELD_DEFN == Type) + if (INTERNAL_TYPE_FIELD_DEFN == Type) { /* DefFieldDefn defines fields in a Region */ @@ -444,8 +438,8 @@ AcpiNsLookup ( NumSegments = 0; ThisNode = AcpiGbl_RootNode; - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Null Pathname (Zero segments), Flags=%x\n", Flags)); + DEBUG_PRINTP (TRACE_NAMES, + ("Null Pathname (Zero segments), Flags=%x\n", Flags)); } else @@ -479,8 +473,7 @@ AcpiNsLookup ( Pathname++; - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Searching from root [%p]\n", + DEBUG_PRINTP (TRACE_NAMES, ("Searching from root [%p]\n", CurrentNode)); /* Direct reference to root, "\" */ @@ -498,8 +491,7 @@ AcpiNsLookup ( CurrentNode = PrefixNode; - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Searching relative to pfx scope [%p]\n", + DEBUG_PRINTP (TRACE_NAMES, ("Searching relative to pfx scope [%p]\n", PrefixNode)); /* @@ -520,7 +512,8 @@ AcpiNsLookup ( { /* Current scope has no parent scope */ - REPORT_ERROR (("Too many parent prefixes (^) - reached root\n")); + REPORT_ERROR ( + ("Too many parent prefixes (^) - reached root\n")); return_ACPI_STATUS (AE_NOT_FOUND); } @@ -542,8 +535,8 @@ AcpiNsLookup ( Pathname++; - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Dual Pathname (2 segments, Flags=%X)\n", Flags)); + DEBUG_PRINTP (TRACE_NAMES, + ("Dual Pathname (2 segments, Flags=%X)\n", Flags)); } else if (*Pathname == AML_MULTI_NAME_PREFIX_OP) @@ -554,8 +547,8 @@ AcpiNsLookup ( Pathname++; - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Multi Pathname (%d Segments, Flags=%X) \n", + DEBUG_PRINTP (TRACE_NAMES, + ("Multi Pathname (%d Segments, Flags=%X) \n", NumSegments, Flags)); } @@ -567,8 +560,8 @@ AcpiNsLookup ( */ NumSegments = 1; - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Simple Pathname (1 segment, Flags=%X)\n", Flags)); + DEBUG_PRINTP (TRACE_NAMES, + ("Simple Pathname (1 segment, Flags=%X)\n", Flags)); } #ifdef ACPI_DEBUG @@ -577,7 +570,7 @@ AcpiNsLookup ( /* Debug only: print the entire name that we are about to lookup */ - DEBUG_PRINT (TRACE_NAMES, ("NsLookup: [")); + DEBUG_PRINTP (TRACE_NAMES, ("[")); for (i = 0; i < NumSegments; i++) { @@ -626,8 +619,8 @@ AcpiNsLookup ( { /* Name not found in ACPI namespace */ - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Name [%4.4s] not found in scope %X\n", + DEBUG_PRINTP (TRACE_NAMES, + ("Name [%4.4s] not found in scope %X\n", &SimpleName, CurrentNode)); } @@ -683,8 +676,7 @@ AcpiNsLookup ( * and the next scope has not been allocated. */ - DEBUG_PRINT (ACPI_INFO, - ("NsLookup: Load mode=%X ThisNode=%X\n", + DEBUG_PRINTP (ACPI_INFO, ("Load mode=%X ThisNode=%X\n", InterpreterMode, ThisNode)); } @@ -731,8 +723,7 @@ CheckForNewScopeAndExit: return_ACPI_STATUS (Status); } - DEBUG_PRINT (ACPI_INFO, - ("NsLookup: Set global scope to %p\n", ScopeToPush)); + DEBUG_PRINTP (ACPI_INFO, ("Set global scope to %p\n", ScopeToPush)); } } diff --git a/sys/contrib/dev/acpica/nsalloc.c b/sys/contrib/dev/acpica/nsalloc.c index 3f90752..baeb2b5 100644 --- a/sys/contrib/dev/acpica/nsalloc.c +++ b/sys/contrib/dev/acpica/nsalloc.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsalloc - Namespace allocation and deletion utilities - * $Revision: 45 $ + * $Revision: 50 $ * ******************************************************************************/ @@ -122,7 +122,7 @@ #include "acinterp.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nsalloc") @@ -147,7 +147,7 @@ AcpiNsCreateNode ( FUNCTION_TRACE ("NsCreateNode"); - Node = AcpiCmCallocate (sizeof (ACPI_NAMESPACE_NODE)); + Node = AcpiUtCallocate (sizeof (ACPI_NAMESPACE_NODE)); if (!Node) { return_PTR (NULL); @@ -222,7 +222,7 @@ AcpiNsDeleteNode ( AcpiNsDetachObject (Node); } - AcpiCmFree (Node); + AcpiUtFree (Node); return_VOID; @@ -249,7 +249,7 @@ AcpiNsInstallNode ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *ParentNode, /* Parent */ ACPI_NAMESPACE_NODE *Node, /* New Child*/ - OBJECT_TYPE_INTERNAL Type) + ACPI_OBJECT_TYPE8 Type) { UINT16 OwnerId = TABLE_ID_DSDT; ACPI_NAMESPACE_NODE *ChildNode; @@ -305,9 +305,8 @@ AcpiNsInstallNode ( * add the region in order to define fields in it, we * have a forward reference. */ - if ((ACPI_TYPE_ANY == Type) || - (INTERNAL_TYPE_DEF_FIELD_DEFN == Type) || + (INTERNAL_TYPE_FIELD_DEFN == Type) || (INTERNAL_TYPE_BANK_FIELD_DEFN == Type)) { /* @@ -315,19 +314,15 @@ AcpiNsInstallNode ( * We will fill in the actual type when the * real definition is found later. */ - - DEBUG_PRINT (ACPI_INFO, - ("NsInstallNode: [%4.4s] is a forward reference\n", + DEBUG_PRINTP (ACPI_INFO, ("[%4.4s] is a forward reference\n", &Node->Name)); - } /* * The DefFieldDefn and BankFieldDefn cases are actually * looking up the Region in which the field will be defined */ - - if ((INTERNAL_TYPE_DEF_FIELD_DEFN == Type) || + if ((INTERNAL_TYPE_FIELD_DEFN == Type) || (INTERNAL_TYPE_BANK_FIELD_DEFN == Type)) { Type = ACPI_TYPE_REGION; @@ -339,7 +334,6 @@ AcpiNsInstallNode ( * being looked up. Save any other value of Type as the type of * the entry. */ - if ((Type != INTERNAL_TYPE_SCOPE) && (Type != INTERNAL_TYPE_DEF_ANY) && (Type != INTERNAL_TYPE_INDEX_FIELD_DEFN)) @@ -347,15 +341,13 @@ AcpiNsInstallNode ( Node->Type = (UINT8) Type; } - DEBUG_PRINT (TRACE_NAMES, - ("NsInstallNode: %4.4s added to %p at %p\n", + DEBUG_PRINTP (TRACE_NAMES, ("%4.4s added to %p at %p\n", &Node->Name, ParentNode, Node)); /* * Increment the reference count(s) of all parents up to * the root! */ - while ((Node = AcpiNsGetParentObject (Node)) != NULL) { Node->ReferenceCount++; @@ -417,8 +409,7 @@ AcpiNsDeleteChildren ( if (ChildNode->Child) { - DEBUG_PRINT (ACPI_ERROR, - ("NsDeleteChildren: Found a grandchild! P=%X C=%X\n", + DEBUG_PRINTP (ACPI_ERROR, ("Found a grandchild! P=%X C=%X\n", ParentNode, ChildNode)); } @@ -426,8 +417,7 @@ AcpiNsDeleteChildren ( DECREMENT_NAME_TABLE_METRICS (sizeof (ACPI_NAMESPACE_NODE)); - DEBUG_PRINT (ACPI_INFO, - ("AcpiNsDeleteChildren: Object %p, Remaining %X\n", + DEBUG_PRINTP (ACPI_INFO, ("Object %p, Remaining %X\n", ChildNode, AcpiGbl_CurrentNodeCount)); /* @@ -439,7 +429,7 @@ AcpiNsDeleteChildren ( AcpiNsDetachObject (ChildNode); } - AcpiCmFree (ChildNode); + AcpiUtFree (ChildNode); /* And move on to the next child in the list */ @@ -515,7 +505,7 @@ AcpiNsDeleteNamespaceSubtree ( if (ObjDesc) { AcpiNsDetachObject (ChildNode); - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); } @@ -672,7 +662,7 @@ AcpiNsDeleteNamespaceByOwner ( if (ObjDesc) { AcpiNsDetachObject (ChildNode); - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); } } diff --git a/sys/contrib/dev/acpica/nsdump.c b/sys/contrib/dev/acpica/nsdump.c index eb907a3..9d7bbc5 100644 --- a/sys/contrib/dev/acpica/nsdump.c +++ b/sys/contrib/dev/acpica/nsdump.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsdump - table dumping routines for debug - * $Revision: 85 $ + * $Revision: 93 $ * *****************************************************************************/ @@ -123,13 +123,13 @@ #include "actables.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nsdump") #if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsDumpPathname * @@ -141,7 +141,7 @@ * DESCRIPTION: Print an object's full namespace pathname * Manages allocation/freeing of a pathname buffer * - ***************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiNsDumpPathname ( @@ -163,7 +163,7 @@ AcpiNsDumpPathname ( return_ACPI_STATUS (AE_OK); } - Buffer = AcpiCmAllocate (PATHNAME_MAX); + Buffer = AcpiUtAllocate (PATHNAME_MAX); if (!Buffer) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -177,13 +177,13 @@ AcpiNsDumpPathname ( AcpiOsPrintf ("%s %s (%p)\n", Msg, Buffer, Handle); } - AcpiCmFree (Buffer); + AcpiUtFree (Buffer); return_ACPI_STATUS (AE_OK); } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsDumpOneObject * @@ -194,7 +194,7 @@ AcpiNsDumpPathname ( * DESCRIPTION: Dump a single Node * This procedure is a UserFunction called by AcpiNsWalkNamespace. * - ***************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiNsDumpOneObject ( @@ -207,8 +207,8 @@ AcpiNsDumpOneObject ( ACPI_NAMESPACE_NODE *ThisNode; UINT8 *Value; ACPI_OPERAND_OBJECT *ObjDesc = NULL; - OBJECT_TYPE_INTERNAL ObjType; - OBJECT_TYPE_INTERNAL Type; + ACPI_OBJECT_TYPE8 ObjType; + ACPI_OBJECT_TYPE8 Type; UINT32 BytesToDump; UINT32 DownstreamSiblingMask = 0; UINT32 LevelTmp; @@ -229,7 +229,7 @@ AcpiNsDumpOneObject ( if (!ObjHandle) { - DEBUG_PRINT (ACPI_INFO, ("Null object handle\n")); + DEBUG_PRINT (ACPI_INFO, ("NsDumpOneObject: Null object handle\n")); return (AE_OK); } @@ -303,7 +303,7 @@ AcpiNsDumpOneObject ( Type = INTERNAL_TYPE_DEF_ANY; /* prints as *ERROR* */ } - if (!AcpiCmValidAcpiName (ThisNode->Name)) + if (!AcpiUtValidAcpiName (ThisNode->Name)) { REPORT_WARNING (("Invalid ACPI Name %08X\n", ThisNode->Name)); } @@ -312,7 +312,7 @@ AcpiNsDumpOneObject ( * Now we can print out the pertinent information */ - DEBUG_PRINT_RAW (TRACE_TABLES, (" %4.4s %-9s ", &ThisNode->Name, AcpiCmGetTypeName (Type))); + DEBUG_PRINT_RAW (TRACE_TABLES, (" %4.4s %-9s ", &ThisNode->Name, AcpiUtGetTypeName (Type))); DEBUG_PRINT_RAW (TRACE_TABLES, ("%p S:%p O:%p", ThisNode, ThisNode->Child, ThisNode->Object)); @@ -416,7 +416,7 @@ AcpiNsDumpOneObject ( else { DEBUG_PRINT_RAW (TRACE_TABLES, ("(Ptr to ACPI Object type %X [%s])\n", - ObjType, AcpiCmGetTypeName (ObjType))); + ObjType, AcpiUtGetTypeName (ObjType))); BytesToDump = sizeof (ACPI_OPERAND_OBJECT); } } @@ -450,6 +450,10 @@ AcpiNsDumpOneObject ( Value = (UINT8 *) ObjDesc->Buffer.Pointer; break; + case ACPI_TYPE_BUFFER_FIELD: + Value = (UINT8 *) ObjDesc->BufferField.BufferObj; + break; + case ACPI_TYPE_PACKAGE: Value = (UINT8 *) ObjDesc->Package.Elements; break; @@ -458,20 +462,16 @@ AcpiNsDumpOneObject ( Value = (UINT8 *) ObjDesc->Method.Pcode; break; - case ACPI_TYPE_FIELD_UNIT: - Value = (UINT8 *) ObjDesc->FieldUnit.Container; - break; - - case INTERNAL_TYPE_DEF_FIELD: - Value = (UINT8 *) ObjDesc->Field.Container; + case INTERNAL_TYPE_REGION_FIELD: + Value = (UINT8 *) ObjDesc->Field.RegionObj; break; case INTERNAL_TYPE_BANK_FIELD: - Value = (UINT8 *) ObjDesc->BankField.Container; + Value = (UINT8 *) ObjDesc->BankField.RegionObj; break; case INTERNAL_TYPE_INDEX_FIELD: - Value = (UINT8 *) ObjDesc->IndexField.Index; + Value = (UINT8 *) ObjDesc->IndexField.IndexObj; break; default: @@ -487,7 +487,7 @@ Cleanup: } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsDumpObjects * @@ -501,11 +501,11 @@ Cleanup: * DESCRIPTION: Dump typed objects within the loaded namespace. * Uses AcpiNsWalkNamespace in conjunction with AcpiNsDumpOneObject. * - ***************************************************************************/ + ******************************************************************************/ void AcpiNsDumpObjects ( - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, UINT32 MaxDepth, UINT32 OwnerId, ACPI_HANDLE StartHandle) @@ -522,7 +522,7 @@ AcpiNsDumpObjects ( #ifndef _ACPI_ASL_COMPILER -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsDumpOneDevice * @@ -533,7 +533,7 @@ AcpiNsDumpObjects ( * DESCRIPTION: Dump a single Node that represents a device * This procedure is a UserFunction called by AcpiNsWalkNamespace. * - ***************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiNsDumpOneDevice ( @@ -565,7 +565,7 @@ AcpiNsDumpOneDevice ( } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsDumpRootDevices * @@ -573,7 +573,7 @@ AcpiNsDumpOneDevice ( * * DESCRIPTION: Dump all objects of type "device" * - ***************************************************************************/ + ******************************************************************************/ void AcpiNsDumpRootDevices (void) @@ -597,7 +597,7 @@ AcpiNsDumpRootDevices (void) #endif -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsDumpTables * @@ -608,7 +608,7 @@ AcpiNsDumpRootDevices (void) * * DESCRIPTION: Dump the name space, or a portion of it. * - ***************************************************************************/ + ******************************************************************************/ void AcpiNsDumpTables ( @@ -627,7 +627,7 @@ AcpiNsDumpTables ( * If the name space has not been initialized, * there is nothing to dump. */ - DEBUG_PRINT (TRACE_TABLES, ("NsDumpTables: name space not initialized!\n")); + DEBUG_PRINTP (TRACE_TABLES, ("name space not initialized!\n")); return_VOID; } @@ -645,7 +645,7 @@ AcpiNsDumpTables ( } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsDumpEntry * @@ -654,7 +654,7 @@ AcpiNsDumpTables ( * * DESCRIPTION: Dump a single Node * - ***************************************************************************/ + ******************************************************************************/ void AcpiNsDumpEntry ( @@ -671,7 +671,6 @@ AcpiNsDumpEntry ( AcpiNsDumpOneObject (Handle, 1, &Info, NULL); - DEBUG_PRINT (TRACE_EXEC, ("leave AcpiNsDumpEntry %p\n", Handle)); return_VOID; } diff --git a/sys/contrib/dev/acpica/nseval.c b/sys/contrib/dev/acpica/nseval.c index 5c34853..e4a35d6 100644 --- a/sys/contrib/dev/acpica/nseval.c +++ b/sys/contrib/dev/acpica/nseval.c @@ -2,7 +2,7 @@ * * Module Name: nseval - Object evaluation interfaces -- includes control * method lookup and execution. - * $Revision: 83 $ + * $Revision: 91 $ * ******************************************************************************/ @@ -125,7 +125,7 @@ #include "acnamesp.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nseval") @@ -186,12 +186,12 @@ AcpiNsEvaluateRelative ( /* Get the prefix handle and Node */ - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); PrefixNode = AcpiNsConvertHandleToEntry (Handle); if (!PrefixNode) { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); Status = AE_BAD_PARAMETER; goto Cleanup; } @@ -203,13 +203,12 @@ AcpiNsEvaluateRelative ( IMODE_EXECUTE, NS_NO_UPSEARCH, NULL, &Node); - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateRelative: Object [%s] not found [%.4X]\n", - Pathname, AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_INFO, ("Object [%s] not found [%s]\n", + Pathname, AcpiUtFormatException (Status))); goto Cleanup; } @@ -218,22 +217,17 @@ AcpiNsEvaluateRelative ( * to evaluate it. */ - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateRelative: %s [%p] Value %p\n", + DEBUG_PRINTP (ACPI_INFO, ("%s [%p] Value %p\n", Pathname, Node, Node->Object)); Status = AcpiNsEvaluateByHandle (Node, Params, ReturnObject); - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateRelative: *** Completed eval of object %s ***\n", + DEBUG_PRINTP (ACPI_INFO, ("*** Completed eval of object %s ***\n", Pathname)); Cleanup: - /* Cleanup */ - - AcpiCmFree (InternalPath); - + AcpiUtFree (InternalPath); return_ACPI_STATUS (Status); } @@ -280,7 +274,7 @@ AcpiNsEvaluateByName ( return_ACPI_STATUS (Status); } - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); /* Lookup the name in the namespace */ @@ -288,12 +282,11 @@ AcpiNsEvaluateByName ( IMODE_EXECUTE, NS_NO_UPSEARCH, NULL, &Node); - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateByName: Object at [%s] was not found, status=%.4X\n", + DEBUG_PRINTP (ACPI_INFO, ("Object at [%s] was not found, status=%.4X\n", Pathname, Status)); goto Cleanup; } @@ -303,14 +296,12 @@ AcpiNsEvaluateByName ( * to evaluate it. */ - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateByName: %s [%p] Value %p\n", + DEBUG_PRINTP (ACPI_INFO, ("%s [%p] Value %p\n", Pathname, Node, Node->Object)); Status = AcpiNsEvaluateByHandle (Node, Params, ReturnObject); - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateByName: *** Completed eval of object %s ***\n", + DEBUG_PRINTP (ACPI_INFO, ("*** Completed eval of object %s ***\n", Pathname)); @@ -320,7 +311,7 @@ Cleanup: if (InternalPath) { - AcpiCmFree (InternalPath); + AcpiUtFree (InternalPath); } return_ACPI_STATUS (Status); @@ -383,12 +374,12 @@ AcpiNsEvaluateByHandle ( /* Get the prefix handle and Node */ - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); Node = AcpiNsConvertHandleToEntry (Handle); if (!Node) { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -491,41 +482,40 @@ AcpiNsExecuteControlMethod ( FUNCTION_TRACE ("NsExecuteControlMethod"); - /* - * Unlock the namespace before execution. This allows namespace access - * via the external Acpi* interfaces while a method is being executed. - * However, 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. - */ - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - /* Verify that there is a method associated with this object */ - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) MethodNode); + ObjDesc = AcpiNsGetAttachedObject (MethodNode); if (!ObjDesc) { - DEBUG_PRINT (ACPI_ERROR, - ("Control method is undefined (nil value)\n")); + DEBUG_PRINTP (ACPI_ERROR, ("No attached method object\n")); + + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (AE_ERROR); } - DEBUG_PRINT (ACPI_INFO, ("Control method at Offset %x Length %lx]\n", - ObjDesc->Method.Pcode + 1, - ObjDesc->Method.PcodeLength - 1)); + DEBUG_PRINTP (ACPI_INFO, ("Control method at Offset %x Length %lx]\n", + ObjDesc->Method.Pcode + 1, ObjDesc->Method.PcodeLength - 1)); DUMP_PATHNAME (MethodNode, "NsExecuteControlMethod: Executing", - TRACE_NAMES, _COMPONENT); + TRACE_NAMES, _COMPONENT); + + DEBUG_PRINTP (TRACE_NAMES, ("At offset %8XH\n", ObjDesc->Method.Pcode + 1)); - DEBUG_PRINT (TRACE_NAMES, - ("At offset %8XH\n", ObjDesc->Method.Pcode + 1)); + + /* + * Unlock the namespace before execution. This allows namespace access + * via the external Acpi* interfaces while a method is being executed. + * However, 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. + */ + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); /* * Execute the method via the interpreter */ - Status = AcpiAmlExecuteMethod (MethodNode, Params, ReturnObjDesc); + Status = AcpiExExecuteMethod (MethodNode, Params, ReturnObjDesc); return_ACPI_STATUS (Status); } @@ -568,7 +558,7 @@ AcpiNsGetObjectValue ( /* * Create a Reference object to contain the object */ - ObjDesc = AcpiCmCreateInternalObject (Node->Type); + ObjDesc = AcpiUtCreateInternalObject (Node->Type); if (!ObjDesc) { Status = AE_NO_MEMORY; @@ -595,6 +585,7 @@ AcpiNsGetObjectValue ( MEMCPY (ObjDesc, ValDesc, sizeof (ACPI_OPERAND_OBJECT)); ObjDesc->Common.ReferenceCount = 1; + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } @@ -606,7 +597,7 @@ AcpiNsGetObjectValue ( { /* Create an Reference object to contain the object */ - ObjDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_REFERENCE); + ObjDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_REFERENCE); if (!ObjDesc) { Status = AE_NO_MEMORY; @@ -615,32 +606,38 @@ AcpiNsGetObjectValue ( /* Construct a descriptor pointing to the name */ - ObjDesc->Reference.OpCode = (UINT8) AML_NAME_OP; + ObjDesc->Reference.Opcode = (UINT8) AML_NAME_OP; ObjDesc->Reference.Object = (void *) Node; /* - * Use AcpiAmlResolveToValue() to get the associated value. - * The call to AcpiAmlResolveToValue causes - * ObjDesc (allocated above) to always be deleted. + * Use ResolveToValue() to get the associated value. This call + * always deletes ObjDesc (allocated above). * * NOTE: we can get away with passing in NULL for a walk state * because ObjDesc is guaranteed to not be a reference to either * a method local or a method argument * - * Even though we do not technically need to use the interpreter - * for this, we must enter it because we could hit an opregion. - * The opregion access code assumes it is in the interpreter. + * Even though we do not directly invoke the interpreter + * for this, we must enter it because we could access an opregion. + * The opregion access code assumes that the interpreter + * is locked. + * + * We must release the namespace lock before entering the + * intepreter. */ - AcpiAmlEnterInterpreter(); - - Status = AcpiAmlResolveToValue (&ObjDesc, NULL); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + Status = AcpiExEnterInterpreter (); + if (ACPI_SUCCESS (Status)) + { + Status = AcpiExResolveToValue (&ObjDesc, NULL); - AcpiAmlExitInterpreter(); + AcpiExExitInterpreter (); + } } /* - * If AcpiAmlResolveToValue() succeeded, the return value was + * If AcpiExResolveToValue() succeeded, the return value was * placed in ObjDesc. */ @@ -649,15 +646,18 @@ AcpiNsGetObjectValue ( Status = AE_CTRL_RETURN_VALUE; *ReturnObjDesc = ObjDesc; - DEBUG_PRINT (ACPI_INFO, - ("NsGetObjectValue: Returning obj %p\n", *ReturnObjDesc)); + DEBUG_PRINTP (ACPI_INFO, ("Returning obj %p\n", *ReturnObjDesc)); } + /* Namespace is unlocked */ + + return_ACPI_STATUS (Status); + UnlockAndExit: /* Unlock the namespace */ - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/nsinit.c b/sys/contrib/dev/acpica/nsinit.c index 672bbeb..3286d69 100644 --- a/sys/contrib/dev/acpica/nsinit.c +++ b/sys/contrib/dev/acpica/nsinit.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsinit - namespace initialization - * $Revision: 15 $ + * $Revision: 25 $ * *****************************************************************************/ @@ -121,7 +121,7 @@ #include "acnamesp.h" #include "acdispat.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nsinit") @@ -149,8 +149,8 @@ AcpiNsInitializeObjects ( FUNCTION_TRACE ("NsInitializeObjects"); - DEBUG_PRINT (TRACE_DISPATCH, - ("NsInitializeObjects: **** Starting initialization of namespace objects ****\n")); + DEBUG_PRINTP (TRACE_DISPATCH, + ("**** Starting initialization of namespace objects ****\n")); DEBUG_PRINT_RAW (ACPI_OK, ("Completing Region and Field initialization:")); @@ -168,23 +168,23 @@ AcpiNsInitializeObjects ( &Info, NULL); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("NsInitializeObjects: WalkNamespace failed! %x\n", Status)); + DEBUG_PRINTP (ACPI_ERROR, ("WalkNamespace failed! %x\n", Status)); } DEBUG_PRINT_RAW (ACPI_OK, ("\n%d/%d Regions, %d/%d Fields initialized (%d nodes total)\n", - Info.OpRegionInit, Info.OpRegionCount, Info.FieldInit, Info.FieldCount, Info.ObjectCount)); - DEBUG_PRINT (TRACE_DISPATCH, - ("NsInitializeObjects: %d Control Methods found\n", Info.MethodCount)); - DEBUG_PRINT (TRACE_DISPATCH, - ("NsInitializeObjects: %d Op Regions found\n", Info.OpRegionCount)); + Info.OpRegionInit, Info.OpRegionCount, Info.FieldInit, + Info.FieldCount, Info.ObjectCount)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("%d Control Methods found\n", Info.MethodCount)); + DEBUG_PRINTP (TRACE_DISPATCH, + ("%d Op Regions found\n", Info.OpRegionCount)); return_ACPI_STATUS (AE_OK); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsInitializeDevices * @@ -195,11 +195,10 @@ AcpiNsInitializeObjects ( * DESCRIPTION: Walk the entire namespace and initialize all ACPI devices. * This means running _INI on all present devices. * - * Also: Install PCI config space handler for all PCI root bridges. - * A PCI root bridge is found by searching for devices containing - * a HID with the value EISAID("PNP0A03") + * Note: We install PCI config space handler on region access, + * not here. * - *****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiNsInitializeDevices ( @@ -219,13 +218,12 @@ AcpiNsInitializeDevices ( DEBUG_PRINT_RAW (ACPI_OK, ("Executing device _INI methods:")); - Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - FALSE, AcpiNsInitOneDevice, &Info, NULL); + Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, + ACPI_UINT32_MAX, FALSE, AcpiNsInitOneDevice, &Info, NULL); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("NsInitializeDevices: WalkNamespace failed! %x\n", Status)); + DEBUG_PRINTP (ACPI_ERROR, ("WalkNamespace failed! %x\n", Status)); } @@ -264,7 +262,7 @@ AcpiNsInitOneObject ( void *Context, void **ReturnValue) { - OBJECT_TYPE_INTERNAL Type; + ACPI_OBJECT_TYPE8 Type; ACPI_STATUS Status; ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context; ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; @@ -299,8 +297,9 @@ AcpiNsInitOneObject ( if (ACPI_FAILURE (Status)) { DEBUG_PRINT_RAW (ACPI_ERROR, ("\n")); - DEBUG_PRINT (ACPI_ERROR, ("%s while getting region arguments [%4.4s]\n", - AcpiCmFormatException (Status), &Node->Name)); + DEBUG_PRINT (ACPI_ERROR, + ("%s while getting region arguments [%4.4s]\n", + AcpiUtFormatException (Status), &Node->Name)); } if (!(AcpiDbgLevel & TRACE_INIT)) @@ -311,7 +310,7 @@ AcpiNsInitOneObject ( break; - case ACPI_TYPE_FIELD_UNIT: + case ACPI_TYPE_BUFFER_FIELD: Info->FieldCount++; if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) @@ -320,12 +319,13 @@ AcpiNsInitOneObject ( } Info->FieldInit++; - Status = AcpiDsGetFieldUnitArguments (ObjDesc); + Status = AcpiDsGetBufferFieldArguments (ObjDesc); if (ACPI_FAILURE (Status)) { DEBUG_PRINT_RAW (ACPI_ERROR, ("\n")); - DEBUG_PRINT (ACPI_ERROR, ("%s while getting field arguments [%4.4s]\n", - AcpiCmFormatException (Status), &Node->Name)); + DEBUG_PRINT (ACPI_ERROR, + ("%s while getting buffer field arguments [%4.4s]\n", + AcpiUtFormatException (Status), &Node->Name)); } if (!(AcpiDbgLevel & TRACE_INIT)) { @@ -347,11 +347,11 @@ AcpiNsInitOneObject ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsInitOneDevice * - * PARAMETERS: WALK_CALLBACK + * PARAMETERS: ACPI_WALK_CALLBACK * * RETURN: ACPI_STATUS * @@ -359,7 +359,7 @@ AcpiNsInitOneObject ( * to initialize each device. It determines if the device is * present, and if so, calls _INI. * - *****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiNsInitOneDevice ( @@ -384,23 +384,23 @@ AcpiNsInitOneDevice ( Info->DeviceCount++; - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); Node = AcpiNsConvertHandleToEntry (ObjHandle); if (!Node) { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_BAD_PARAMETER); } - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); /* * Run _STA to determine if we can run _INI on the device. */ - DEBUG_EXEC(AcpiCmDisplayInitPathname (Node, "_STA [Method]")); - Status = AcpiCmExecute_STA (Node, &Flags); + DEBUG_EXEC (AcpiUtDisplayInitPathname (Node, "_STA [Method]")); + Status = AcpiUtExecute_STA (Node, &Flags); if (ACPI_FAILURE (Status)) { /* Ignore error and move on to next device */ @@ -413,20 +413,20 @@ AcpiNsInitOneDevice ( if (!(Flags & 0x01)) { /* don't look at children of a not present device */ + return_ACPI_STATUS(AE_CTRL_DEPTH); } - /* * The device is present. Run _INI. */ - - DEBUG_EXEC(AcpiCmDisplayInitPathname (ObjHandle, "_INI [Method]")); + DEBUG_EXEC (AcpiUtDisplayInitPathname (ObjHandle, "_INI [Method]")); Status = AcpiNsEvaluateRelative (ObjHandle, "_INI", NULL, NULL); if (AE_NOT_FOUND == Status) { /* No _INI means device requires no initialization */ + Status = AE_OK; } @@ -437,16 +437,16 @@ AcpiNsInitOneDevice ( #ifdef ACPI_DEBUG NATIVE_CHAR *ScopeName = AcpiNsGetTablePathname (ObjHandle); - DEBUG_PRINT (ACPI_WARN, ("%s._INI failed: %s\n", - ScopeName, AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_WARN, ("%s._INI failed: %s\n", + ScopeName, AcpiUtFormatException (Status))); - AcpiCmFree (ScopeName); + AcpiUtFree (ScopeName); #endif } else { - /* Count of successfull INIs */ + /* Count of successful INIs */ Info->Num_INI++; } diff --git a/sys/contrib/dev/acpica/nsload.c b/sys/contrib/dev/acpica/nsload.c index 2b49884..762509b 100644 --- a/sys/contrib/dev/acpica/nsload.c +++ b/sys/contrib/dev/acpica/nsload.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsload - namespace loading/expanding/contracting procedures - * $Revision: 35 $ + * $Revision: 41 $ * *****************************************************************************/ @@ -125,11 +125,11 @@ #include "acdebug.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nsload") -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiLoadNamespace * @@ -156,7 +156,7 @@ AcpiNsLoadNamespace ( if (AcpiGbl_DSDT == NULL) { - DEBUG_PRINT (ACPI_ERROR, ("DSDT is not in memory\n")); + DEBUG_PRINTP (ACPI_ERROR, ("DSDT is not in memory\n")); return_ACPI_STATUS (AE_NO_ACPI_TABLES); } @@ -247,19 +247,15 @@ AcpiNsOneCompleteParse ( /* Pass 1: Parse everything except control method bodies */ - DEBUG_PRINT (TRACE_PARSE, - ("NsParseTable: *PARSE* pass %d parse\n", PassNumber)); + DEBUG_PRINTP (TRACE_PARSE, ("*PARSE* pass %d parse\n", PassNumber)); - Status = AcpiPsParseAml (ParseRoot, - TableDesc->AmlPointer, + Status = AcpiPsParseAml (ParseRoot, TableDesc->AmlPointer, TableDesc->AmlLength, ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE, - NULL, NULL, NULL, - DescendingCallback, + NULL, NULL, NULL, DescendingCallback, AscendingCallback); AcpiPsDeleteParseTree (ParseRoot); - return_ACPI_STATUS (Status); } @@ -326,7 +322,7 @@ AcpiNsParseTable ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsLoadTable * @@ -337,7 +333,7 @@ AcpiNsParseTable ( * * DESCRIPTION: Load one ACPI table into the namespace * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiNsLoadTable ( @@ -352,18 +348,16 @@ AcpiNsLoadTable ( if (!TableDesc->AmlPointer) { - DEBUG_PRINT (ACPI_ERROR, ("NsLoadTable: Null AML pointer\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Null AML pointer\n")); return_ACPI_STATUS (AE_BAD_PARAMETER); } - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTable: AML block at %p\n", TableDesc->AmlPointer)); + DEBUG_PRINTP (ACPI_INFO, ("AML block at %p\n", TableDesc->AmlPointer)); if (!TableDesc->AmlLength) { - DEBUG_PRINT (ACPI_ERROR, - ("NsLoadTable: Zero-length AML block\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Zero-length AML block\n")); return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -378,12 +372,11 @@ AcpiNsLoadTable ( * because we don't know how many arguments to parse next! */ - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTable: **** Loading table into namespace ****\n")); + DEBUG_PRINTP (ACPI_INFO, ("**** Loading table into namespace ****\n")); - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); Status = AcpiNsParseTable (TableDesc, Node->Child); - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { @@ -397,19 +390,19 @@ AcpiNsLoadTable ( * parse trees. */ - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTable: **** Begin Table Method Parsing and Object Initialization ****\n")); + DEBUG_PRINTP (ACPI_INFO, + ("**** Begin Table Method Parsing and Object Initialization ****\n")); Status = AcpiDsInitializeObjects (TableDesc, Node); - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTable: **** Completed Table Method Parsing and Object Initialization ****\n")); + DEBUG_PRINTP (ACPI_INFO, + ("**** Completed Table Method Parsing and Object Initialization ****\n")); return_ACPI_STATUS (Status); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsLoadTableByType * @@ -421,7 +414,7 @@ AcpiNsLoadTable ( * of the given type are loaded. The mechanism allows this * routine to be called repeatedly. * - *****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiNsLoadTableByType ( @@ -429,14 +422,13 @@ AcpiNsLoadTableByType ( { UINT32 i; ACPI_STATUS Status = AE_OK; - ACPI_TABLE_HEADER *TablePtr; ACPI_TABLE_DESC *TableDesc; FUNCTION_TRACE ("NsLoadTableByType"); - AcpiCmAcquireMutex (ACPI_MTX_TABLES); + AcpiUtAcquireMutex (ACPI_MTX_TABLES); /* @@ -449,7 +441,7 @@ AcpiNsLoadTableByType ( case ACPI_TABLE_DSDT: - DEBUG_PRINT (ACPI_INFO, ("NsLoadTableByType: Loading DSDT\n")); + DEBUG_PRINTP (ACPI_INFO, ("Loading DSDT\n")); TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_DSDT]; @@ -475,8 +467,7 @@ AcpiNsLoadTableByType ( case ACPI_TABLE_SSDT: - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTableByType: Loading %d SSDTs\n", + DEBUG_PRINTP (ACPI_INFO, ("Loading %d SSDTs\n", AcpiGbl_AcpiTables[ACPI_TABLE_SSDT].Count)); /* @@ -486,8 +477,6 @@ AcpiNsLoadTableByType ( TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_SSDT]; for (i = 0; i < AcpiGbl_AcpiTables[ACPI_TABLE_SSDT].Count; i++) { - TablePtr = TableDesc->Pointer; - /* * Only attempt to load table if it is not * already loaded! @@ -495,8 +484,7 @@ AcpiNsLoadTableByType ( if (!TableDesc->LoadedIntoNamespace) { - Status = AcpiNsLoadTable (TableDesc, - AcpiGbl_RootNode); + Status = AcpiNsLoadTable (TableDesc, AcpiGbl_RootNode); if (ACPI_FAILURE (Status)) { break; @@ -507,14 +495,12 @@ AcpiNsLoadTableByType ( TableDesc = TableDesc->Next; } - break; case ACPI_TABLE_PSDT: - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTableByType: Loading %d PSDTs\n", + DEBUG_PRINTP (ACPI_INFO, ("Loading %d PSDTs\n", AcpiGbl_AcpiTables[ACPI_TABLE_PSDT].Count)); /* @@ -525,14 +511,11 @@ AcpiNsLoadTableByType ( for (i = 0; i < AcpiGbl_AcpiTables[ACPI_TABLE_PSDT].Count; i++) { - TablePtr = TableDesc->Pointer; - /* Only attempt to load table if it is not already loaded! */ if (!TableDesc->LoadedIntoNamespace) { - Status = AcpiNsLoadTable (TableDesc, - AcpiGbl_RootNode); + Status = AcpiNsLoadTable (TableDesc, AcpiGbl_RootNode); if (ACPI_FAILURE (Status)) { break; @@ -549,19 +532,20 @@ AcpiNsLoadTableByType ( default: Status = AE_SUPPORT; + break; } UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_TABLES); + AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (Status); } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsDeleteSubtree * @@ -592,9 +576,9 @@ AcpiNsDeleteSubtree ( FUNCTION_TRACE ("NsDeleteSubtree"); - ParentHandle = StartHandle; - ChildHandle = 0; - Level = 1; + ParentHandle = StartHandle; + ChildHandle = 0; + Level = 1; /* * Traverse the tree of objects until we bubble back up @@ -606,8 +590,7 @@ AcpiNsDeleteSubtree ( /* Attempt to get the next object in this scope */ Status = AcpiGetNextObject (ACPI_TYPE_ANY, ParentHandle, - ChildHandle, - &NextChildHandle); + ChildHandle, &NextChildHandle); ChildHandle = NextChildHandle; @@ -618,9 +601,8 @@ AcpiNsDeleteSubtree ( { /* Check if this object has any children */ - if (ACPI_SUCCESS (AcpiGetNextObject (ACPI_TYPE_ANY, - ChildHandle, 0, - &Dummy))) + if (ACPI_SUCCESS (AcpiGetNextObject (ACPI_TYPE_ANY, ChildHandle, + 0, &Dummy))) { /* * There is at least one child of this object, @@ -628,8 +610,8 @@ AcpiNsDeleteSubtree ( */ Level++; - ParentHandle = ChildHandle; - ChildHandle = 0; + ParentHandle = ChildHandle; + ChildHandle = 0; } } @@ -654,12 +636,11 @@ AcpiNsDeleteSubtree ( AcpiNsDeleteNode (ChildHandle); - return_ACPI_STATUS (AE_OK); } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsUnloadNameSpace * @@ -671,7 +652,7 @@ AcpiNsDeleteSubtree ( * event. Deletes an entire subtree starting from (and * including) the given handle. * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiNsUnloadNamespace ( diff --git a/sys/contrib/dev/acpica/nsnames.c b/sys/contrib/dev/acpica/nsnames.c index b7cc321..8fb0d3c 100644 --- a/sys/contrib/dev/acpica/nsnames.c +++ b/sys/contrib/dev/acpica/nsnames.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsnames - Name manipulation and search - * $Revision: 54 $ + * $Revision: 59 $ * ******************************************************************************/ @@ -122,7 +122,7 @@ #include "acnamesp.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nsnames") @@ -182,7 +182,7 @@ AcpiNsGetTablePathname ( /* Allocate a buffer to be returned to caller */ - NameBuffer = AcpiCmCallocate (Size + 1); + NameBuffer = AcpiUtCallocate (Size + 1); if (!NameBuffer) { REPORT_ERROR (("NsGetTablePathname: allocation failure\n")); @@ -209,8 +209,7 @@ AcpiNsGetTablePathname ( if (Size != 0) { - DEBUG_PRINT (ACPI_ERROR, - ("NsGetTablePathname: Bad pointer returned; size=%X\n", Size)); + DEBUG_PRINTP (ACPI_ERROR, ("Bad pointer returned; size=%X\n", Size)); } return_PTR (NameBuffer); @@ -258,7 +257,6 @@ AcpiNsGetPathnameLength ( } - /******************************************************************************* * * FUNCTION: AcpiNsHandleToPathname @@ -292,7 +290,7 @@ AcpiNsHandleToPathname ( FUNCTION_TRACE_PTR ("NsHandleToPathname", TargetHandle); - if (!AcpiGbl_RootNode || !TargetHandle) + if (!AcpiGbl_RootNode) { /* * If the name space has not been initialized, @@ -356,9 +354,7 @@ AcpiNsHandleToPathname ( UserBuffer[Size] = '\\'; - DEBUG_PRINT (TRACE_EXEC, - ("NsHandleToPathname: Len=%X, %s \n", - PathLength, UserBuffer)); + DEBUG_PRINTP (TRACE_EXEC, ("Len=%X, %s \n", PathLength, UserBuffer)); Exit: return_ACPI_STATUS (Status); diff --git a/sys/contrib/dev/acpica/nsobject.c b/sys/contrib/dev/acpica/nsobject.c index f0192fb..bb3ca84 100644 --- a/sys/contrib/dev/acpica/nsobject.c +++ b/sys/contrib/dev/acpica/nsobject.c @@ -2,7 +2,7 @@ * * Module Name: nsobject - Utilities for objects attached to namespace * table entries - * $Revision: 49 $ + * $Revision: 55 $ * ******************************************************************************/ @@ -125,7 +125,7 @@ #include "actables.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nsobject") @@ -150,11 +150,11 @@ ACPI_STATUS AcpiNsAttachObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *Object, - OBJECT_TYPE_INTERNAL Type) + ACPI_OBJECT_TYPE8 Type) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *PreviousObjDesc; - OBJECT_TYPE_INTERNAL ObjType = ACPI_TYPE_ANY; + ACPI_OBJECT_TYPE8 ObjType = ACPI_TYPE_ANY; UINT8 Flags; UINT16 Opcode; @@ -202,8 +202,7 @@ AcpiNsAttachObject ( if (Node->Object == Object) { - DEBUG_PRINT (TRACE_EXEC, - ("NsAttachObject: Obj %p already installed in NameObj %p\n", + DEBUG_PRINTP (TRACE_EXEC, ("Obj %p already installed in NameObj %p\n", Object, Node)); return_ACPI_STATUS (AE_OK); @@ -293,7 +292,7 @@ AcpiNsAttachObject ( MOVE_UNALIGNED16_TO_16 (&Opcode, Object); - /* Check for a recognized OpCode */ + /* Check for a recognized Opcode */ switch ((UINT8) Opcode) { @@ -346,7 +345,7 @@ AcpiNsAttachObject ( default: - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("AML Opcode/Type [%x] not supported in attach\n", (UINT8) Opcode)); @@ -370,21 +369,18 @@ AcpiNsAttachObject ( if (AcpiTbSystemTablePointer (Object)) { - DEBUG_PRINT (ACPI_INFO, + DEBUG_PRINTP (ACPI_INFO, ("AML-stream code %02x\n", *(UINT8 *) Object)); } else if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED)) { - DUMP_PATHNAME (Object, - "name ", ACPI_INFO, - _COMPONENT); + DUMP_PATHNAME (Object, "name ", ACPI_INFO, _COMPONENT); } else { - DUMP_PATHNAME (Object, "object ", - ACPI_INFO, _COMPONENT); + DUMP_PATHNAME (Object, "object ", ACPI_INFO, _COMPONENT); DUMP_STACK_ENTRY (Object); } } @@ -394,8 +390,7 @@ AcpiNsAttachObject ( } - DEBUG_PRINT (TRACE_EXEC, - ("NsAttachObject: Installing obj %p into NameObj %p [%4.4s]\n", + DEBUG_PRINTP (TRACE_EXEC, ("Installing obj %p into NameObj %p [%4.4s]\n", ObjDesc, Node, &Node->Name)); @@ -404,7 +399,7 @@ AcpiNsAttachObject ( * (if it is an internal object) */ - AcpiCmAddReference (ObjDesc); + AcpiUtAddReference (ObjDesc); /* Save the existing object (if any) for deletion later */ @@ -425,11 +420,11 @@ AcpiNsAttachObject ( { /* One for the attach to the Node */ - AcpiCmRemoveReference (PreviousObjDesc); + AcpiUtRemoveReference (PreviousObjDesc); /* Now delete */ - AcpiCmRemoveReference (PreviousObjDesc); + AcpiUtRemoveReference (PreviousObjDesc); } return_ACPI_STATUS (AE_OK); @@ -471,12 +466,11 @@ AcpiNsDetachObject ( /* Found a valid value */ - DEBUG_PRINT (ACPI_INFO, - ("NsDetachObject: Object=%p Value=%p Name %4.4s\n", + DEBUG_PRINTP (ACPI_INFO, ("Object=%p Value=%p Name %4.4s\n", Node, ObjDesc, &Node->Name)); /* - * Not every value is an object allocated via AcpiCmCallocate, + * Not every value is an object allocated via AcpiUtCallocate, * - must check */ @@ -484,7 +478,7 @@ AcpiNsDetachObject ( { /* Attempt to delete the object (and all subobjects) */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); } return_VOID; @@ -495,7 +489,7 @@ AcpiNsDetachObject ( * * FUNCTION: AcpiNsGetAttachedObject * - * PARAMETERS: Handle - Parent Node to be examined + * PARAMETERS: Node - Parent Node to be examined * * RETURN: Current value of the object field from the Node whose * handle is passed @@ -504,20 +498,20 @@ AcpiNsDetachObject ( void * AcpiNsGetAttachedObject ( - ACPI_HANDLE Handle) + ACPI_NAMESPACE_NODE *Node) { - FUNCTION_TRACE_PTR ("NsGetAttachedObject", Handle); + FUNCTION_TRACE_PTR ("NsGetAttachedObject", Node); - if (!Handle) + if (!Node) { /* handle invalid */ - DEBUG_PRINT (ACPI_WARN, ("NsGetAttachedObject: Null handle\n")); + DEBUG_PRINTP (ACPI_WARN, ("Null Node ptr\n")); return_PTR (NULL); } - return_PTR (((ACPI_NAMESPACE_NODE *) Handle)->Object); + return_PTR (Node->Object); } diff --git a/sys/contrib/dev/acpica/nssearch.c b/sys/contrib/dev/acpica/nssearch.c index 3ecdf4e..6b4f50f 100644 --- a/sys/contrib/dev/acpica/nssearch.c +++ b/sys/contrib/dev/acpica/nssearch.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nssearch - Namespace search - * $Revision: 64 $ + * $Revision: 70 $ * ******************************************************************************/ @@ -122,7 +122,7 @@ #include "acnamesp.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nssearch") @@ -131,9 +131,9 @@ * FUNCTION: AcpiNsSearchNode * * PARAMETERS: *TargetName - Ascii ACPI name to search for - * *Node - Starting table where search will begin + * *Node - Starting table where search will begin * Type - Object type to match - * **ReturnNode - Where the matched Named obj is returned + * **ReturnNode - Where the matched Named obj is returned * * RETURN: Status * @@ -156,7 +156,7 @@ ACPI_STATUS AcpiNsSearchNode ( UINT32 TargetName, ACPI_NAMESPACE_NODE *Node, - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_NAMESPACE_NODE *NextNode; @@ -169,18 +169,14 @@ AcpiNsSearchNode ( if (TRACE_NAMES & AcpiDbgLevel) { NATIVE_CHAR *ScopeName; - + ScopeName = AcpiNsGetTablePathname (Node); if (ScopeName) { - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchNode: Searching %s [%p]\n", - ScopeName, Node)); - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchNode: For %4.4s (type %X)\n", - &TargetName, Type)); + DEBUG_PRINTP (TRACE_NAMES, ("Searching %s [%p] For %4.4s (type %X)\n", + ScopeName, Node, &TargetName, Type)); - AcpiCmFree (ScopeName); + AcpiUtFree (ScopeName); } } #endif @@ -199,29 +195,24 @@ AcpiNsSearchNode ( if (NextNode->Name == TargetName) { /* - * Found matching entry. Capture type if - * appropriate before returning the entry. + * Found matching entry. Capture the type if appropriate, before + * returning the entry. + * + * The DefFieldDefn and BankFieldDefn cases are actually looking up + * the Region in which the field will be defined */ - /* - * The DefFieldDefn and BankFieldDefn cases - * are actually looking up the Region in which - * the field will be defined - */ - - if ((INTERNAL_TYPE_DEF_FIELD_DEFN == Type) || + if ((INTERNAL_TYPE_FIELD_DEFN == Type) || (INTERNAL_TYPE_BANK_FIELD_DEFN == Type)) { Type = ACPI_TYPE_REGION; } /* - * Scope, DefAny, and IndexFieldDefn are bogus - * "types" which do not actually have anything - * to do with the type of the name being looked - * up. For any other value of Type, if the type - * stored in the entry is Any (i.e. unknown), - * save the actual type. + * Scope, DefAny, and IndexFieldDefn are bogus "types" which do not + * actually have anything to do with the type of the name being + * looked up. For any other value of Type, if the type stored in + * the entry is Any (i.e. unknown), save the actual type. */ if (Type != INTERNAL_TYPE_SCOPE && @@ -232,8 +223,8 @@ AcpiNsSearchNode ( NextNode->Type = (UINT8) Type; } - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchNode: Name %4.4s (actual type %X) found at %p\n", + DEBUG_PRINTP (TRACE_NAMES, + ("Name %4.4s (actual type %X) found at %p\n", &TargetName, NextNode->Type, NextNode)); *ReturnNode = NextNode; @@ -260,11 +251,9 @@ AcpiNsSearchNode ( /* Searched entire table, not found */ - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchNode: Name %4.4s (type %X) not found at %p\n", + DEBUG_PRINTP (TRACE_NAMES, ("Name %4.4s (type %X) not found at %p\n", &TargetName, Type, NextNode)); - return_ACPI_STATUS (AE_NOT_FOUND); } @@ -274,9 +263,9 @@ AcpiNsSearchNode ( * FUNCTION: AcpiNsSearchParentTree * * PARAMETERS: *TargetName - Ascii ACPI name to search for - * *Node - Starting table where search will begin + * *Node - Starting table where search will begin * Type - Object type to match - * **ReturnNode - Where the matched Named Obj is returned + * **ReturnNode - Where the matched Named Obj is returned * * RETURN: Status * @@ -298,7 +287,7 @@ static ACPI_STATUS AcpiNsSearchParentTree ( UINT32 TargetName, ACPI_NAMESPACE_NODE *Node, - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_STATUS Status; @@ -314,20 +303,18 @@ AcpiNsSearchParentTree ( * If there is no parent (at the root) or type is "local", we won't be * searching the parent tree. */ - if ((AcpiNsLocal (Type)) || + if ((AcpiNsLocal (Type)) || (!ParentNode)) { if (!ParentNode) { - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchParentTree: [%4.4s] has no parent\n", + DEBUG_PRINTP (TRACE_NAMES, ("[%4.4s] has no parent\n", &TargetName)); } if (AcpiNsLocal (Type)) { - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchParentTree: [%4.4s] (type %X) is local (no search)\n", + DEBUG_PRINTP (TRACE_NAMES, ("[%4.4s] type %X is local(no search)\n", &TargetName, Type)); } @@ -337,15 +324,12 @@ AcpiNsSearchParentTree ( /* Search the parent tree */ - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchParentTree: Searching parent for %4.4s\n", - &TargetName)); + DEBUG_PRINTP (TRACE_NAMES, ("Searching parent for %4.4s\n", &TargetName)); /* * Search parents until found the target or we have backed up to * the root */ - while (ParentNode) { /* Search parent scope */ @@ -380,12 +364,12 @@ AcpiNsSearchParentTree ( * * PARAMETERS: TargetName - Ascii ACPI name to search for (4 chars) * WalkState - Current state of the walk - * *Node - Starting table where search will begin + * *Node - Starting table where search will begin * InterpreterMode - Add names only in MODE_LoadPassX. * Otherwise,search only. * Type - Object type to match * Flags - Flags describing the search restrictions - * **ReturnNode - Where the Node is returned + * **ReturnNode - Where the Node is returned * * RETURN: Status * @@ -405,7 +389,7 @@ AcpiNsSearchAndEnter ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *Node, OPERATING_MODE InterpreterMode, - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, UINT32 Flags, ACPI_NAMESPACE_NODE **ReturnNode) { @@ -420,8 +404,7 @@ AcpiNsSearchAndEnter ( if (!Node || !TargetName || !ReturnNode) { - DEBUG_PRINT (ACPI_ERROR, - ("NsSearchAndEnter: Null param: Table %p Name %p Return %p\n", + DEBUG_PRINTP (ACPI_ERROR, ("Null param- Table %p Name %p Return %p\n", Node, TargetName, ReturnNode)); REPORT_ERROR (("NsSearchAndEnter: bad (null) parameter\n")); @@ -431,10 +414,9 @@ AcpiNsSearchAndEnter ( /* Name must consist of printable characters */ - if (!AcpiCmValidAcpiName (TargetName)) + if (!AcpiUtValidAcpiName (TargetName)) { - DEBUG_PRINT (ACPI_ERROR, - ("NsSearchAndEnter: *** Bad character in name: %08lx *** \n", + DEBUG_PRINTP (ACPI_ERROR, ("*** Bad character in name: %08lx *** \n", TargetName)); REPORT_ERROR (("NsSearchAndEnter: Bad character in ACPI Name\n")); @@ -445,13 +427,12 @@ AcpiNsSearchAndEnter ( /* Try to find the name in the table specified by the caller */ *ReturnNode = ENTRY_NOT_FOUND; - Status = AcpiNsSearchNode (TargetName, Node, - Type, ReturnNode); + Status = AcpiNsSearchNode (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 we found it AND the request specifies that a find is an error, + * return the error */ if ((Status == AE_OK) && (Flags & NS_ERROR_IF_FOUND)) @@ -499,8 +480,7 @@ AcpiNsSearchAndEnter ( */ if (InterpreterMode == IMODE_EXECUTE) { - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchAndEnter: %4.4s Not found in %p [Not adding]\n", + DEBUG_PRINTP (TRACE_NAMES, ("%4.4s Not found in %p [Not adding]\n", &TargetName, Node)); return_ACPI_STATUS (AE_NOT_FOUND); diff --git a/sys/contrib/dev/acpica/nsutils.c b/sys/contrib/dev/acpica/nsutils.c index 936843c..56dd713 100644 --- a/sys/contrib/dev/acpica/nsutils.c +++ b/sys/contrib/dev/acpica/nsutils.c @@ -2,7 +2,7 @@ * * Module Name: nsutils - Utilities for accessing ACPI namespace, accessing * parents and siblings and Scope manipulation - * $Revision: 77 $ + * $Revision: 83 $ * *****************************************************************************/ @@ -123,11 +123,11 @@ #include "amlcode.h" #include "actables.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nsutils") -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsValidRootPrefix * @@ -137,7 +137,7 @@ * * DESCRIPTION: Check if a character is a valid ACPI Root prefix * - ***************************************************************************/ + ******************************************************************************/ BOOLEAN AcpiNsValidRootPrefix ( @@ -148,7 +148,7 @@ AcpiNsValidRootPrefix ( } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsValidPathSeparator * @@ -158,7 +158,7 @@ AcpiNsValidRootPrefix ( * * DESCRIPTION: Check if a character is a valid ACPI path separator * - ***************************************************************************/ + ******************************************************************************/ BOOLEAN AcpiNsValidPathSeparator ( @@ -169,7 +169,7 @@ AcpiNsValidPathSeparator ( } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsGetType * @@ -177,26 +177,26 @@ AcpiNsValidPathSeparator ( * * RETURN: Type field from Node whose handle is passed * - ***************************************************************************/ + ******************************************************************************/ -OBJECT_TYPE_INTERNAL +ACPI_OBJECT_TYPE8 AcpiNsGetType ( - ACPI_HANDLE handle) + ACPI_NAMESPACE_NODE *Node) { FUNCTION_TRACE ("NsGetType"); - if (!handle) + if (!Node) { - REPORT_WARNING (("NsGetType: Null handle\n")); + REPORT_WARNING (("NsGetType: Null Node ptr")); return_VALUE (ACPI_TYPE_ANY); } - return_VALUE (((ACPI_NAMESPACE_NODE *) handle)->Type); + return_VALUE (Node->Type); } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsLocal * @@ -205,16 +205,16 @@ AcpiNsGetType ( * RETURN: LOCAL if names must be found locally in objects of the * passed type, 0 if enclosing scopes should be searched * - ***************************************************************************/ + ******************************************************************************/ UINT32 AcpiNsLocal ( - OBJECT_TYPE_INTERNAL Type) + ACPI_OBJECT_TYPE8 Type) { FUNCTION_TRACE ("NsLocal"); - if (!AcpiCmValidObjectType (Type)) + if (!AcpiUtValidObjectType (Type)) { /* Type code out of range */ @@ -226,45 +226,33 @@ AcpiNsLocal ( } -/**************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiNsInternalizeName + * FUNCTION: AcpiNsGetInternalNameLength * - * PARAMETERS: *ExternalName - External representation of name - * **Converted Name - Where to return the resulting - * internal represention of the name + * PARAMETERS: Info - Info struct initialized with the + * external name pointer. * * 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) + * DESCRIPTION: Calculate the length of the internal (AML) namestring + * corresponding to the external (ASL) namestring. * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS -AcpiNsInternalizeName ( - NATIVE_CHAR *ExternalName, - NATIVE_CHAR **ConvertedName) +AcpiNsGetInternalNameLength ( + ACPI_NAMESTRING_INFO *Info) { - NATIVE_CHAR *Result = NULL; - NATIVE_CHAR *InternalName; - UINT32 NumSegments = 0; - BOOLEAN FullyQualified = FALSE; + NATIVE_CHAR *NextExternalChar; UINT32 i; - UINT32 NumCarats = 0; - - - FUNCTION_TRACE ("NsInternalizeName"); - - - if ((!ExternalName) || - (*ExternalName == 0) || - (!ConvertedName)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } + 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, @@ -274,11 +262,10 @@ AcpiNsInternalizeName ( * strlen() + 1 covers the first NameSeg, which has no * path separator */ - - if (AcpiNsValidRootPrefix (ExternalName[0])) + if (AcpiNsValidRootPrefix (NextExternalChar[0])) { - FullyQualified = TRUE; - ExternalName++; + Info->FullyQualified = TRUE; + NextExternalChar++; } else @@ -287,10 +274,10 @@ AcpiNsInternalizeName ( * Handle Carat prefixes */ - while (*ExternalName == '^') + while (*NextExternalChar == '^') { - NumCarats++; - ExternalName++; + Info->NumCarats++; + NextExternalChar++; } } @@ -300,32 +287,57 @@ AcpiNsInternalizeName ( * with one segment since the segment count is (# separators) * + 1, and zero separators is ok. */ - - if (*ExternalName) + if (*NextExternalChar) { - NumSegments = 1; - for (i = 0; ExternalName[i]; i++) + Info->NumSegments = 1; + for (i = 0; NextExternalChar[i]; i++) { - if (AcpiNsValidPathSeparator (ExternalName[i])) + if (AcpiNsValidPathSeparator (NextExternalChar[i])) { - NumSegments++; + Info->NumSegments++; } } } + Info->Length = (ACPI_NAME_SIZE * Info->NumSegments) + + 4 + Info->NumCarats; - /* We need a segment to store the internal version of the name */ + Info->NextExternalChar = NextExternalChar; + + return (AE_OK); +} + + +/******************************************************************************* + * + * 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; + NATIVE_CHAR *InternalName = Info->InternalName; + NATIVE_CHAR *ExternalName = Info->NextExternalChar; + NATIVE_CHAR *Result = NULL; + UINT32 i; - InternalName = AcpiCmCallocate ((ACPI_NAME_SIZE * NumSegments) + 4 + NumCarats); - if (!InternalName) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } + FUNCTION_TRACE ("AcpiNsBuildInternalName"); + /* Setup the correct prefixes, counts, and pointers */ - if (FullyQualified) + if (Info->FullyQualified) { InternalName[0] = '\\'; @@ -344,7 +356,6 @@ AcpiNsInternalizeName ( InternalName[2] = (char) NumSegments; Result = &InternalName[3]; } - } else @@ -353,11 +364,10 @@ AcpiNsInternalizeName ( * Not fully qualified. * Handle Carats first, then append the name segments */ - i = 0; - if (NumCarats) + if (Info->NumCarats) { - for (i = 0; i < NumCarats; i++) + for (i = 0; i < Info->NumCarats; i++) { InternalName[i] = '^'; } @@ -392,22 +402,18 @@ AcpiNsInternalizeName ( if (AcpiNsValidPathSeparator (*ExternalName) || (*ExternalName == 0)) { - /* - * Pad the segment with underscore(s) if - * segment is short - */ + /* Pad the segment with underscore(s) if segment is short */ Result[i] = '_'; } else { - /* Convert INT8 to uppercase and save it */ + /* Convert the character to uppercase and save it */ Result[i] = (char) TOUPPER (*ExternalName); ExternalName++; } - } /* Now we must have a path separator, or the pathname is bad */ @@ -415,7 +421,6 @@ AcpiNsInternalizeName ( if (!AcpiNsValidPathSeparator (*ExternalName) && (*ExternalName != 0)) { - AcpiCmFree (InternalName); return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -426,23 +431,18 @@ AcpiNsInternalizeName ( } - /* Return the completed name */ + /* Terminate the string */ - /* Terminate the string! */ *Result = 0; - *ConvertedName = InternalName; - - if (FullyQualified) + if (Info->FullyQualified) { - DEBUG_PRINT (TRACE_EXEC, - ("NsInternalizeName: returning [%p] (abs) \"\\%s\"\n", + DEBUG_PRINTP (TRACE_EXEC, ("returning [%p] (abs) \"\\%s\"\n", InternalName, &InternalName[0])); } else { - DEBUG_PRINT (TRACE_EXEC, - ("NsInternalizeName: returning [%p] (rel) \"%s\"\n", + DEBUG_PRINTP (TRACE_EXEC, ("returning [%p] (rel) \"%s\"\n", InternalName, &InternalName[2])); } @@ -450,20 +450,84 @@ AcpiNsInternalizeName ( } -/**************************************************************************** +/******************************************************************************* + * + * 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 ( + NATIVE_CHAR *ExternalName, + NATIVE_CHAR **ConvertedName) +{ + NATIVE_CHAR *InternalName; + ACPI_NAMESTRING_INFO Info; + ACPI_STATUS Status; + + + 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 = AcpiUtCallocate (Info.Length); + if (!InternalName) + { + return_ACPI_STATUS (AE_NO_MEMORY); + } + + /* Build the name */ + + Info.InternalName = InternalName; + Status = AcpiNsBuildInternalName (&Info); + if (ACPI_FAILURE (Status)) + { + AcpiUtFree (InternalName); + return_ACPI_STATUS (Status); + } + + *ConvertedName = InternalName; + return_ACPI_STATUS (AE_OK); +} + + +/******************************************************************************* * * FUNCTION: AcpiNsExternalizeName * * PARAMETERS: *InternalName - Internal representation of name * **ConvertedName - Where to return the resulting - * external representation of name + * external representation of name * * RETURN: Status * * DESCRIPTION: Convert internal name (e.g. 5c 2f 02 5f 50 52 5f 43 50 55 30) * to its external form (e.g. "\_PR_.CPU0") * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiNsExternalizeName ( @@ -581,7 +645,7 @@ AcpiNsExternalizeName ( * Build ConvertedName... */ - (*ConvertedName) = AcpiCmCallocate (*ConvertedNameLength); + (*ConvertedName) = AcpiUtCallocate (*ConvertedNameLength); if (!(*ConvertedName)) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -614,7 +678,7 @@ AcpiNsExternalizeName ( } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsConvertHandleToEntry * @@ -624,7 +688,7 @@ AcpiNsExternalizeName ( * * DESCRIPTION: Convert a namespace handle to a real Node * - ****************************************************************************/ + ******************************************************************************/ ACPI_NAMESPACE_NODE * AcpiNsConvertHandleToEntry ( @@ -636,7 +700,6 @@ AcpiNsConvertHandleToEntry ( * TBD: [Future] Real integer handles allow for more verification * and keep all pointers within this subsystem! */ - if (!Handle) { return (NULL); @@ -659,7 +722,7 @@ AcpiNsConvertHandleToEntry ( } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsConvertEntryToHandle * @@ -669,7 +732,7 @@ AcpiNsConvertHandleToEntry ( * * DESCRIPTION: Convert a real Node to a namespace handle * - ****************************************************************************/ + ******************************************************************************/ ACPI_HANDLE AcpiNsConvertEntryToHandle ( @@ -682,7 +745,6 @@ AcpiNsConvertEntryToHandle ( * TBD: [Future] Real integer handles allow for more verification * and keep all pointers within this subsystem! */ - return ((ACPI_HANDLE) Node); @@ -704,7 +766,7 @@ AcpiNsConvertEntryToHandle ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsTerminate * @@ -730,12 +792,10 @@ AcpiNsTerminate (void) /* * 1) Free the entire namespace -- all objects, tables, and stacks - */ - /* + * * Delete all objects linked to the root * (additional table descriptors) */ - AcpiNsDeleteNamespaceSubtree (ThisNode); /* Detach any object(s) attached to the root */ @@ -744,27 +804,24 @@ AcpiNsTerminate (void) if (ObjDesc) { AcpiNsDetachObject (ThisNode); - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); } AcpiNsDeleteChildren (ThisNode); - - DEBUG_PRINT (ACPI_INFO, ("NsTerminate: Namespace freed\n")); + DEBUG_PRINTP (ACPI_INFO, ("Namespace freed\n")); /* * 2) Now we can delete the ACPI tables */ - AcpiTbDeleteAcpiTables (); - - DEBUG_PRINT (ACPI_INFO, ("NsTerminate: ACPI Tables freed\n")); + DEBUG_PRINTP (ACPI_INFO, ("ACPI Tables freed\n")); return_VOID; } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsOpensScope * @@ -773,16 +830,16 @@ AcpiNsTerminate (void) * RETURN: NEWSCOPE if the passed type "opens a name scope" according * to the ACPI specification, else 0 * - ***************************************************************************/ + ******************************************************************************/ UINT32 AcpiNsOpensScope ( - OBJECT_TYPE_INTERNAL Type) + ACPI_OBJECT_TYPE8 Type) { FUNCTION_TRACE_U32 ("NsOpensScope", Type); - if (!AcpiCmValidObjectType (Type)) + if (!AcpiUtValidObjectType (Type)) { /* type code out of range */ @@ -794,7 +851,7 @@ AcpiNsOpensScope ( } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsGetNode * @@ -812,7 +869,7 @@ AcpiNsOpensScope ( * * MUTEX: Locks namespace * - ***************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiNsGetNode ( @@ -850,7 +907,7 @@ AcpiNsGetNode ( } - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); /* Setup lookup scope (search starting point) */ @@ -865,22 +922,21 @@ AcpiNsGetNode ( if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_INFO, ("NsGetNode: %s, %s\n", - InternalPath, AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_INFO, ("%s, %s\n", + InternalPath, AcpiUtFormatException (Status))); } - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); /* Cleanup */ - AcpiCmFree (InternalPath); - + AcpiUtFree (InternalPath); return_ACPI_STATUS (Status); } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsFindParentName * @@ -892,7 +948,7 @@ AcpiNsGetNode ( * name segment, or "????" if the parent name can't be found * (which "should not happen"). * - ***************************************************************************/ + ******************************************************************************/ ACPI_NAME AcpiNsFindParentName ( @@ -911,10 +967,8 @@ AcpiNsFindParentName ( ParentNode = AcpiNsGetParentObject (ChildNode); if (ParentNode) { - DEBUG_PRINT (TRACE_EXEC, - ("Parent of %p [%4.4s] is %p [%4.4s]\n", - ChildNode, &ChildNode->Name, ParentNode, - &ParentNode->Name)); + DEBUG_PRINTP (TRACE_EXEC, ("Parent of %p [%4.4s] is %p [%4.4s]\n", + ChildNode, &ChildNode->Name, ParentNode, &ParentNode->Name)); if (ParentNode->Name) { @@ -922,19 +976,17 @@ AcpiNsFindParentName ( } } - DEBUG_PRINT (TRACE_EXEC, - ("FindParentName: unable to find parent of %p (%4.4s)\n", + DEBUG_PRINTP (TRACE_EXEC, ("unable to find parent of %p (%4.4s)\n", ChildNode, &ChildNode->Name)); } - return_VALUE (ACPI_UNKNOWN_NAME); } #if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsExistDownstreamSibling * @@ -948,7 +1000,7 @@ AcpiNsFindParentName ( * line drawing character to use when displaying namespace * trees. * - ***************************************************************************/ + ******************************************************************************/ BOOLEAN AcpiNsExistDownstreamSibling ( @@ -971,7 +1023,7 @@ AcpiNsExistDownstreamSibling ( #endif /* ACPI_DEBUG */ -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsGetParentObject * @@ -981,7 +1033,7 @@ AcpiNsExistDownstreamSibling ( * * DESCRIPTION: Obtain the parent entry for a given entry in the namespace. * - ***************************************************************************/ + ******************************************************************************/ ACPI_NAMESPACE_NODE * @@ -1002,7 +1054,6 @@ AcpiNsGetParentObject ( * This saves putting a parent back pointer in each and * every named object! */ - while (!(Node->Flags & ANOBJ_END_OF_PEER_LIST)) { Node = Node->Peer; @@ -1013,7 +1064,7 @@ AcpiNsGetParentObject ( } -/**************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiNsGetNextValidObject * @@ -1025,7 +1076,7 @@ AcpiNsGetParentObject ( * DESCRIPTION: Find the next valid object within a name table. * Useful for implementing NULL-end-of-list loops. * - ***************************************************************************/ + ******************************************************************************/ ACPI_NAMESPACE_NODE * diff --git a/sys/contrib/dev/acpica/nswalk.c b/sys/contrib/dev/acpica/nswalk.c index 2244489..72a0a20 100644 --- a/sys/contrib/dev/acpica/nswalk.c +++ b/sys/contrib/dev/acpica/nswalk.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nswalk - Functions for walking the APCI namespace - * $Revision: 19 $ + * $Revision: 22 $ * *****************************************************************************/ @@ -122,7 +122,7 @@ #include "acnamesp.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nswalk") @@ -147,7 +147,7 @@ ACPI_NAMESPACE_NODE * AcpiNsGetNextObject ( - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, ACPI_NAMESPACE_NODE *ParentNode, ACPI_NAMESPACE_NODE *ChildNode) { @@ -238,18 +238,18 @@ AcpiNsGetNextObject ( ACPI_STATUS AcpiNsWalkNamespace ( - OBJECT_TYPE_INTERNAL Type, + ACPI_OBJECT_TYPE8 Type, ACPI_HANDLE StartNode, UINT32 MaxDepth, BOOLEAN UnlockBeforeCallback, - WALK_CALLBACK UserFunction, + ACPI_WALK_CALLBACK UserFunction, void *Context, void **ReturnValue) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *ChildNode; ACPI_NAMESPACE_NODE *ParentNode; - OBJECT_TYPE_INTERNAL ChildType; + ACPI_OBJECT_TYPE8 ChildType; UINT32 Level; @@ -309,7 +309,7 @@ AcpiNsWalkNamespace ( if (UnlockBeforeCallback) { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } Status = UserFunction (ChildNode, Level, @@ -317,7 +317,7 @@ AcpiNsWalkNamespace ( if (UnlockBeforeCallback) { - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); } switch (Status) diff --git a/sys/contrib/dev/acpica/nsxfname.c b/sys/contrib/dev/acpica/nsxfname.c index 257aafd..6b46010 100644 --- a/sys/contrib/dev/acpica/nsxfname.c +++ b/sys/contrib/dev/acpica/nsxfname.c @@ -2,7 +2,7 @@ * * Module Name: nsxfname - Public interfaces to the ACPI subsystem * ACPI Namespace oriented interfaces - * $Revision: 75 $ + * $Revision: 79 $ * *****************************************************************************/ @@ -126,7 +126,7 @@ #include "acevents.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nsxfname") @@ -159,6 +159,16 @@ AcpiGetHandle ( ACPI_NAMESPACE_NODE *PrefixNode = NULL; + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + /* Parameter Validation */ + if (!RetHandle || !Pathname) { return (AE_BAD_PARAMETER); @@ -168,16 +178,16 @@ AcpiGetHandle ( if (Parent) { - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); PrefixNode = AcpiNsConvertHandleToEntry (Parent); if (!PrefixNode) { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_BAD_PARAMETER); } - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } /* Special case for root, since we can't search for it */ @@ -229,6 +239,14 @@ AcpiGetName ( ACPI_NAMESPACE_NODE *Node; + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + /* Buffer pointer must be valid always */ if (!RetPathPtr || (NameType > ACPI_NAME_TYPE_MAX)) @@ -258,7 +276,7 @@ AcpiGetName ( * Validate handle and convert to an Node */ - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); Node = AcpiNsConvertHandleToEntry (Handle); if (!Node) { @@ -285,7 +303,7 @@ AcpiGetName ( UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } @@ -310,14 +328,22 @@ AcpiGetObjectInfo ( ACPI_HANDLE Handle, ACPI_DEVICE_INFO *Info) { - DEVICE_ID Hid; - DEVICE_ID Uid; + ACPI_DEVICE_ID Hid; + ACPI_DEVICE_ID Uid; ACPI_STATUS Status; UINT32 DeviceStatus = 0; ACPI_INTEGER Address = 0; ACPI_NAMESPACE_NODE *Node; + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + /* Parameter validation */ if (!Handle || !Info) @@ -325,19 +351,19 @@ AcpiGetObjectInfo ( return (AE_BAD_PARAMETER); } - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); Node = AcpiNsConvertHandleToEntry (Handle); if (!Node) { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_BAD_PARAMETER); } Info->Type = Node->Type; Info->Name = Node->Name; - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); /* * If not a device, we are all done. @@ -360,7 +386,7 @@ AcpiGetObjectInfo ( /* Execute the _HID method and save the result */ - Status = AcpiCmExecute_HID (Node, &Hid); + Status = AcpiUtExecute_HID (Node, &Hid); if (ACPI_SUCCESS (Status)) { STRNCPY (Info->HardwareId, Hid.Buffer, sizeof(Info->HardwareId)); @@ -370,7 +396,7 @@ AcpiGetObjectInfo ( /* Execute the _UID method and save the result */ - Status = AcpiCmExecute_UID (Node, &Uid); + Status = AcpiUtExecute_UID (Node, &Uid); if (ACPI_SUCCESS (Status)) { STRCPY (Info->UniqueId, Uid.Buffer); @@ -383,7 +409,7 @@ AcpiGetObjectInfo ( * _STA is not always present */ - Status = AcpiCmExecute_STA (Node, &DeviceStatus); + Status = AcpiUtExecute_STA (Node, &DeviceStatus); if (ACPI_SUCCESS (Status)) { Info->CurrentStatus = DeviceStatus; @@ -395,7 +421,7 @@ AcpiGetObjectInfo ( * _ADR is not always present */ - Status = AcpiCmEvaluateNumericObject (METHOD_NAME__ADR, + Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node, &Address); if (ACPI_SUCCESS (Status)) diff --git a/sys/contrib/dev/acpica/nsxfobj.c b/sys/contrib/dev/acpica/nsxfobj.c index b90c31a..1ef6f75 100644 --- a/sys/contrib/dev/acpica/nsxfobj.c +++ b/sys/contrib/dev/acpica/nsxfobj.c @@ -2,7 +2,7 @@ * * Module Name: nsxfobj - Public interfaces to the ACPI subsystem * ACPI Object oriented interfaces - * $Revision: 80 $ + * $Revision: 86 $ * ******************************************************************************/ @@ -124,7 +124,7 @@ #include "acdispat.h" -#define _COMPONENT NAMESPACE +#define _COMPONENT ACPI_NAMESPACE MODULE_NAME ("nsxfobj") @@ -172,6 +172,14 @@ AcpiEvaluateObject ( FUNCTION_TRACE ("AcpiEvaluateObject"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* * If there are parameters to be passed to the object * (which must be a control method), the external objects @@ -189,7 +197,7 @@ AcpiEvaluateObject ( ParamLength = (Count + 1) * sizeof (void *); ObjectLength = Count * sizeof (ACPI_OPERAND_OBJECT); - ParamPtr = AcpiCmCallocate (ParamLength + /* Parameter List part */ + ParamPtr = AcpiUtCallocate (ParamLength + /* Parameter List part */ ObjectLength); /* Actual objects */ if (!ParamPtr) { @@ -207,7 +215,7 @@ AcpiEvaluateObject ( for (i = 0; i < Count; i++) { ParamPtr[i] = &ObjectPtr[i]; - AcpiCmInitStaticObject (&ObjectPtr[i]); + AcpiUtInitStaticObject (&ObjectPtr[i]); } ParamPtr[Count] = NULL; @@ -217,12 +225,12 @@ AcpiEvaluateObject ( */ for (i = 0; i < Count; i++) { - Status = AcpiCmCopyEobjectToIobject (&ParamObjects->Pointer[i], + Status = AcpiUtCopyEobjectToIobject (&ParamObjects->Pointer[i], ParamPtr[i]); if (ACPI_FAILURE (Status)) { - AcpiCmDeleteInternalObjectList (ParamPtr); + AcpiUtDeleteInternalObjectList (ParamPtr); return_ACPI_STATUS (Status); } } @@ -255,14 +263,12 @@ AcpiEvaluateObject ( if (!Pathname) { - DEBUG_PRINT (ACPI_ERROR, - ("AcpiEvaluateObject: Both Handle and Pathname are NULL\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Both Handle and Pathname are NULL\n")); } else { - DEBUG_PRINT (ACPI_ERROR, - ("AcpiEvaluateObject: Handle is NULL and Pathname is relative\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Handle is NULL and Pathname is relative\n")); } Status = AE_BAD_PARAMETER; @@ -331,7 +337,7 @@ AcpiEvaluateObject ( * Find out how large a buffer is needed * to contain the returned object */ - Status = AcpiCmGetObjectSize (ReturnObj, + Status = AcpiUtGetObjectSize (ReturnObj, &BufferSpaceNeeded); if (ACPI_SUCCESS (Status)) { @@ -348,8 +354,8 @@ AcpiEvaluateObject ( * but return the buffer size needed */ - DEBUG_PRINT (ACPI_INFO, - ("AcpiEvaluateObject: Needed buffer size %X, received %X\n", + DEBUG_PRINTP (ACPI_INFO, + ("Needed buffer size %X, received %X\n", BufferSpaceNeeded, UserBufferLength)); ReturnBuffer->Length = BufferSpaceNeeded; @@ -361,7 +367,7 @@ AcpiEvaluateObject ( /* * We have enough space for the object, build it */ - Status = AcpiCmCopyIobjectToEobject (ReturnObj, + Status = AcpiUtCopyIobjectToEobject (ReturnObj, ReturnBuffer); ReturnBuffer->Length = BufferSpaceNeeded; } @@ -379,7 +385,7 @@ AcpiEvaluateObject ( * Delete the internal return object. (Or at least * decrement the reference count by one) */ - AcpiCmRemoveReference (ReturnObj); + AcpiUtRemoveReference (ReturnObj); } /* @@ -390,7 +396,7 @@ AcpiEvaluateObject ( { /* Free the allocated parameter block */ - AcpiCmDeleteInternalObjectList (ParamPtr); + AcpiUtDeleteInternalObjectList (ParamPtr); } return_ACPI_STATUS (Status); @@ -428,6 +434,14 @@ AcpiGetNextObject ( ACPI_NAMESPACE_NODE *ChildNode = NULL; + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + /* Parameter validation */ if (Type > ACPI_TYPE_MAX) @@ -435,7 +449,7 @@ AcpiGetNextObject ( return (AE_BAD_PARAMETER); } - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); /* If null handle, use the parent */ @@ -468,7 +482,7 @@ AcpiGetNextObject ( /* Internal function does the real work */ - Node = AcpiNsGetNextObject ((OBJECT_TYPE_INTERNAL) Type, + Node = AcpiNsGetNextObject ((ACPI_OBJECT_TYPE8) Type, ParentNode, ChildNode); if (!Node) { @@ -484,7 +498,7 @@ AcpiGetNextObject ( UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } @@ -508,7 +522,16 @@ AcpiGetType ( ACPI_OBJECT_TYPE *RetType) { ACPI_NAMESPACE_NODE *Node; + ACPI_STATUS Status; + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return (Status); + } /* Parameter Validation */ @@ -527,21 +550,21 @@ AcpiGetType ( return (AE_OK); } - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); /* Convert and validate the handle */ Node = AcpiNsConvertHandleToEntry (Handle); if (!Node) { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_BAD_PARAMETER); } *RetType = Node->Type; - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_OK); } @@ -569,8 +592,13 @@ AcpiGetParent ( ACPI_STATUS Status = AE_OK; - /* No trace macro, too verbose */ + /* Ensure that ACPI has been initialized */ + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return (Status); + } if (!RetHandle) { @@ -585,7 +613,7 @@ AcpiGetParent ( } - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); /* Convert and validate the handle */ @@ -612,7 +640,7 @@ AcpiGetParent ( UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } @@ -652,7 +680,7 @@ AcpiWalkNamespace ( ACPI_OBJECT_TYPE Type, ACPI_HANDLE StartObject, UINT32 MaxDepth, - WALK_CALLBACK UserFunction, + ACPI_WALK_CALLBACK UserFunction, void *Context, void **ReturnValue) { @@ -662,6 +690,14 @@ AcpiWalkNamespace ( FUNCTION_TRACE ("AcpiWalkNamespace"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Parameter validation */ if ((Type > ACPI_TYPE_MAX) || @@ -678,14 +714,14 @@ AcpiWalkNamespace ( * must be allowed to make Acpi calls itself. */ - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - Status = AcpiNsWalkNamespace ((OBJECT_TYPE_INTERNAL) Type, + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiNsWalkNamespace ((ACPI_OBJECT_TYPE8) Type, StartObject, MaxDepth, NS_WALK_UNLOCK, UserFunction, Context, ReturnValue); - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -715,17 +751,15 @@ AcpiNsGetDeviceCallback ( ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; UINT32 Flags; - DEVICE_ID DeviceId; + ACPI_DEVICE_ID DeviceId; ACPI_GET_DEVICES_INFO *Info; Info = Context; - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); Node = AcpiNsConvertHandleToEntry (ObjHandle); - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (!Node) { @@ -735,17 +769,15 @@ AcpiNsGetDeviceCallback ( /* * Run _STA to determine if device is present */ - - Status = AcpiCmExecute_STA (Node, &Flags); + Status = AcpiUtExecute_STA (Node, &Flags); if (ACPI_FAILURE (Status)) { - return (Status); + return (AE_CTRL_DEPTH); } if (!(Flags & 0x01)) { /* don't return at the device or children of the device if not there */ - return (AE_CTRL_DEPTH); } @@ -754,8 +786,7 @@ AcpiNsGetDeviceCallback ( */ if (Info->Hid != NULL) { - Status = AcpiCmExecute_HID (Node, &DeviceId); - + Status = AcpiUtExecute_HID (Node, &DeviceId); if (Status == AE_NOT_FOUND) { return (AE_OK); @@ -763,7 +794,7 @@ AcpiNsGetDeviceCallback ( else if (ACPI_FAILURE (Status)) { - return (Status); + return (AE_CTRL_DEPTH); } if (STRNCMP (DeviceId.Buffer, Info->Hid, sizeof (DeviceId.Buffer)) != 0) @@ -773,7 +804,6 @@ AcpiNsGetDeviceCallback ( } Info->UserFunction (ObjHandle, NestingLevel, Info->Context, ReturnValue); - return (AE_OK); } @@ -806,7 +836,7 @@ AcpiNsGetDeviceCallback ( ACPI_STATUS AcpiGetDevices ( NATIVE_CHAR *HID, - WALK_CALLBACK UserFunction, + ACPI_WALK_CALLBACK UserFunction, void *Context, void **ReturnValue) { @@ -817,6 +847,14 @@ AcpiGetDevices ( FUNCTION_TRACE ("AcpiGetDevices"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Parameter validation */ if (!UserFunction) @@ -839,14 +877,14 @@ AcpiGetDevices ( * must be allowed to make Acpi calls itself. */ - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); + AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, NS_WALK_UNLOCK, AcpiNsGetDeviceCallback, &Info, ReturnValue); - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); + AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/psargs.c b/sys/contrib/dev/acpica/psargs.c index 1ea0986..bb26cbe 100644 --- a/sys/contrib/dev/acpica/psargs.c +++ b/sys/contrib/dev/acpica/psargs.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psargs - Parse AML opcode arguments - * $Revision: 43 $ + * $Revision: 47 $ * *****************************************************************************/ @@ -121,7 +121,7 @@ #include "amlcode.h" #include "acnamesp.h" -#define _COMPONENT PARSER +#define _COMPONENT ACPI_PARSER MODULE_NAME ("psargs") @@ -351,7 +351,7 @@ AcpiPsGetNextNamepath ( { /* Null name case, create a null namepath object */ - AcpiPsInitOp (Arg, AML_NAMEPATH_OP); + AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); Arg->Value.Name = Path; return_VOID; } @@ -384,12 +384,12 @@ AcpiPsGetNextNamepath ( Count = AcpiPsGetArg (Op, 0); if (Count && Count->Opcode == AML_BYTE_OP) { - NameOp = AcpiPsAllocOp (AML_NAMEPATH_OP); + NameOp = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); if (NameOp) { /* Change arg into a METHOD CALL and attach the name */ - AcpiPsInitOp (Arg, AML_METHODCALL_OP); + AcpiPsInitOp (Arg, AML_INT_METHODCALL_OP); NameOp->Value.Name = Path; @@ -421,7 +421,7 @@ AcpiPsGetNextNamepath ( * pathname */ - AcpiPsInitOp (Arg, AML_NAMEPATH_OP); + AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); Arg->Value.Name = Path; @@ -455,7 +455,7 @@ AcpiPsGetNextNamepath ( { /* Null name case, create a null namepath object */ - AcpiPsInitOp (Arg, AML_NAMEPATH_OP); + AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); Arg->Value.Name = Path; return_VOID; } @@ -488,16 +488,15 @@ AcpiPsGetNextNamepath ( if (Node->Type == ACPI_TYPE_METHOD) { MethodNode = Node; - DEBUG_PRINT (TRACE_PARSE, - ("PsGetNextNamepath: method - %p Path=%p\n", + DEBUG_PRINTP (TRACE_PARSE, ("method - %p Path=%p\n", MethodNode, Path)); - NameOp = AcpiPsAllocOp (AML_NAMEPATH_OP); + NameOp = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); if (NameOp) { /* Change arg into a METHOD CALL and attach name to it */ - AcpiPsInitOp (Arg, AML_METHODCALL_OP); + AcpiPsInitOp (Arg, AML_INT_METHODCALL_OP); NameOp->Value.Name = Path; @@ -531,7 +530,7 @@ AcpiPsGetNextNamepath ( * pathname. */ - AcpiPsInitOp (Arg, AML_NAMEPATH_OP); + AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); Arg->Value.Name = Path; @@ -614,7 +613,7 @@ AcpiPsGetNextSimpleArg ( case ARGP_NAME: case ARGP_NAMESTRING: - AcpiPsInitOp (Arg, AML_NAMEPATH_OP); + AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); Arg->Value.Name = AcpiPsGetNextNamestring (ParserState); break; } @@ -639,7 +638,7 @@ ACPI_PARSE_OBJECT * AcpiPsGetNextField ( ACPI_PARSE_STATE *ParserState) { - ACPI_PTRDIFF AmlOffset = ParserState->Aml - + UINT32 AmlOffset = ParserState->Aml - ParserState->AmlStart; ACPI_PARSE_OBJECT *Field; UINT16 Opcode; @@ -656,20 +655,20 @@ AcpiPsGetNextField ( default: - Opcode = AML_NAMEDFIELD_OP; + Opcode = AML_INT_NAMEDFIELD_OP; break; case 0x00: - Opcode = AML_RESERVEDFIELD_OP; + Opcode = AML_INT_RESERVEDFIELD_OP; ParserState->Aml++; break; case 0x01: - Opcode = AML_ACCESSFIELD_OP; + Opcode = AML_INT_ACCESSFIELD_OP; ParserState->Aml++; break; } @@ -686,7 +685,7 @@ AcpiPsGetNextField ( switch (Opcode) { - case AML_NAMEDFIELD_OP: + case AML_INT_NAMEDFIELD_OP: /* Get the 4-character name */ @@ -700,7 +699,7 @@ AcpiPsGetNextField ( break; - case AML_RESERVEDFIELD_OP: + case AML_INT_RESERVEDFIELD_OP: /* Get the length which is encoded as a package length */ @@ -708,7 +707,7 @@ AcpiPsGetNextField ( break; - case AML_ACCESSFIELD_OP: + case AML_INT_ACCESSFIELD_OP: /* Get AccessType and AccessAtrib and merge into the field Op */ @@ -821,7 +820,7 @@ AcpiPsGetNextArg ( { /* non-empty list */ - Arg = AcpiPsAllocOp (AML_BYTELIST_OP); + Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP); if (Arg) { /* fill in bytelist data */ @@ -847,7 +846,7 @@ AcpiPsGetNextArg ( { /* NullName or NameString */ - Arg = AcpiPsAllocOp (AML_NAMEPATH_OP); + Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); if (Arg) { AcpiPsGetNextNamepath (ParserState, Arg, ArgCount, 0); diff --git a/sys/contrib/dev/acpica/psfind.c b/sys/contrib/dev/acpica/psfind.c index 6686d7f..c706b0c 100644 --- a/sys/contrib/dev/acpica/psfind.c +++ b/sys/contrib/dev/acpica/psfind.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: psfind - Parse tree search routine - * $Revision: 21 $ + * $Revision: 24 $ * *****************************************************************************/ @@ -122,7 +122,7 @@ #include "acparser.h" #include "amlcode.h" -#define _COMPONENT PARSER +#define _COMPONENT ACPI_PARSER MODULE_NAME ("psfind") @@ -288,8 +288,9 @@ AcpiPsFind ( if (!Scope || !Path) { - DEBUG_PRINT (TRACE_PARSE, ("PsFind: Null path (%p) or scope (%p)!\n", Path, Scope)); - return_VALUE (NULL); + DEBUG_PRINTP (TRACE_PARSE, ("Null path (%p) or scope (%p)!\n", + Path, Scope)); + return_PTR (NULL); } @@ -355,7 +356,7 @@ AcpiPsFind ( } - DEBUG_PRINT (TRACE_PARSE, ("PsFind: Null path, returning current root scope Op=%p\n", Op)); + DEBUG_PRINTP (TRACE_PARSE, ("Null path, returning current root scope Op=%p\n", Op)); return_PTR (Op); break; @@ -374,7 +375,7 @@ AcpiPsFind ( break; } - DEBUG_PRINT (TRACE_PARSE, ("PsFind: Search scope %p Segs=%d Opcode=%4.4X Create=%d\n", + DEBUG_PRINTP (TRACE_PARSE, ("Search scope %p Segs=%d Opcode=%4.4X Create=%d\n", Scope, SegCount, Opcode, Create)); /* match each name segment */ @@ -397,7 +398,7 @@ AcpiPsFind ( Op = AcpiPsFindName (Scope, Name, NameOp); if (Op) { - DEBUG_PRINT (TRACE_PARSE, ("PsFind: [%4.4s] Found! Op=%p Opcode=%4.4X\n", &Name, Op, Op->Opcode)); + DEBUG_PRINTP (TRACE_PARSE, ("[%4.4s] Found! Op=%p Opcode=%4.4X\n", &Name, Op, Op->Opcode)); } if (!Op) @@ -420,7 +421,7 @@ AcpiPsFind ( AcpiPsSetName (Op, Name); AcpiPsAppendArg (Scope, Op); - DEBUG_PRINT (TRACE_PARSE, ("PsFind: [%4.4s] Not found, created Op=%p Opcode=%4.4X\n", &Name, Op, Opcode)); + DEBUG_PRINTP (TRACE_PARSE, ("[%4.4s] Not found, created Op=%p Opcode=%4.4X\n", &Name, Op, Opcode)); } } @@ -434,19 +435,19 @@ AcpiPsFind ( Op = AcpiPsFindName (Scope, Name, Opcode); if (Op) { - DEBUG_PRINT (TRACE_PARSE, ("PsFind: [%4.4s] Found in parent tree! Op=%p Opcode=%4.4X\n", &Name, Op, Op->Opcode)); + DEBUG_PRINTP (TRACE_PARSE, ("[%4.4s] Found in parent tree! Op=%p Opcode=%4.4X\n", &Name, Op, Op->Opcode)); } else { - DEBUG_PRINT (TRACE_PARSE, ("PsFind: [%4.4s] Not found in parent=%p\n", &Name, Scope)); + DEBUG_PRINTP (TRACE_PARSE, ("[%4.4s] Not found in parent=%p\n", &Name, Scope)); } } } else { - DEBUG_PRINT (TRACE_PARSE, ("PsFind: Segment [%4.4s] Not Found in scope %p!\n", &Name, Scope)); + DEBUG_PRINTP (TRACE_PARSE, ("Segment [%4.4s] Not Found in scope %p!\n", &Name, Scope)); } } diff --git a/sys/contrib/dev/acpica/psopcode.c b/sys/contrib/dev/acpica/psopcode.c index 88e18f6..fa4303e 100644 --- a/sys/contrib/dev/acpica/psopcode.c +++ b/sys/contrib/dev/acpica/psopcode.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psopcode - Parser opcode information table - * $Revision: 27 $ + * $Revision: 32 $ * *****************************************************************************/ @@ -120,7 +120,7 @@ #include "amlcode.h" -#define _COMPONENT PARSER +#define _COMPONENT ACPI_PARSER MODULE_NAME ("psopcode") @@ -221,12 +221,12 @@ #define ARGP_SIZE_OF_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_INDEX_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_MATCH_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_WORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_BIT_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_WORD_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_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) #define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_QWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) +#define ARGP_CREATE_QWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) #define ARGP_LAND_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) #define ARGP_LOR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) #define ARGP_LNOT_OP ARGP_LIST1 (ARGP_TERMARG) @@ -269,7 +269,7 @@ #define ARGP_DEBUG_OP ARG_NONE #define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG) #define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_DEF_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST) +#define ARGP_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST) #define ARGP_DEVICE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST) #define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST) #define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST) @@ -293,7 +293,7 @@ * 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 at the end of this file. * - * (Used by AcpiAmlPrepOperands procedure and the ASL Compiler) + * (Used by PrepOperands procedure and the ASL Compiler) */ #define ARGI_ZERO_OP ARG_NONE @@ -351,12 +351,12 @@ #define ARGI_SIZE_OF_OP ARGI_LIST1 (ARGI_DATAOBJECT) #define ARGI_INDEX_OP ARGI_LIST3 (ARGI_COMPLEXOBJ, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_MATCH_OP ARGI_LIST6 (ARGI_PACKAGE, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_DWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_WORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_BYTE_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_BIT_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_WORD_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_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) #define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE) -#define ARGI_QWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) +#define ARGI_CREATE_QWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) #define ARGI_LAND_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) #define ARGI_LOR_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) #define ARGI_LNOT_OP ARGI_LIST1 (ARGI_INTEGER) @@ -399,7 +399,7 @@ #define ARGI_DEBUG_OP ARG_NONE #define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER) #define ARGI_REGION_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_DEF_FIELD_OP ARGI_INVALID_OPCODE +#define ARGI_FIELD_OP ARGI_INVALID_OPCODE #define ARGI_DEVICE_OP ARGI_INVALID_OPCODE #define ARGI_PROCESSOR_OP ARGI_INVALID_OPCODE #define ARGI_POWER_RES_OP ARGI_INVALID_OPCODE @@ -426,143 +426,143 @@ static ACPI_OPCODE_INFO AmlOpInfo[] = { -/* Index Opcode Type Class Has Arguments? Name Parser Args Interpreter Args */ - -/* 00 */ /* AML_ZERO_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Zero", ARGP_ZERO_OP, ARGI_ZERO_OP), -/* 01 */ /* AML_ONE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "One", ARGP_ONE_OP, ARGI_ONE_OP), -/* 02 */ /* AML_ALIAS_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP), -/* 03 */ /* AML_NAME_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Name", ARGP_NAME_OP, ARGI_NAME_OP), -/* 04 */ /* AML_BYTE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP), -/* 05 */ /* AML_WORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "WordConst", ARGP_WORD_OP, ARGI_WORD_OP), -/* 06 */ /* AML_DWORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP), -/* 07 */ /* AML_STRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "String", ARGP_STRING_OP, ARGI_STRING_OP), -/* 08 */ /* AML_SCOPE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP), -/* 09 */ /* AML_BUFFER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS, "Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP), -/* 0A */ /* AML_PACKAGE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS, "Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP), -/* 0B */ /* AML_METHOD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Method", ARGP_METHOD_OP, ARGI_METHOD_OP), -/* 0C */ /* AML_LOCAL0 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local0", ARGP_LOCAL0, ARGI_LOCAL0), -/* 0D */ /* AML_LOCAL1 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local1", ARGP_LOCAL1, ARGI_LOCAL1), -/* 0E */ /* AML_LOCAL2 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local2", ARGP_LOCAL2, ARGI_LOCAL2), -/* 0F */ /* AML_LOCAL3 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local3", ARGP_LOCAL3, ARGI_LOCAL3), -/* 10 */ /* AML_LOCAL4 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local4", ARGP_LOCAL4, ARGI_LOCAL4), -/* 11 */ /* AML_LOCAL5 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local5", ARGP_LOCAL5, ARGI_LOCAL5), -/* 12 */ /* AML_LOCAL6 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local6", ARGP_LOCAL6, ARGI_LOCAL6), -/* 13 */ /* AML_LOCAL7 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local7", ARGP_LOCAL7, ARGI_LOCAL7), -/* 14 */ /* AML_ARG0 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg0", ARGP_ARG0, ARGI_ARG0), -/* 15 */ /* AML_ARG1 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg1", ARGP_ARG1, ARGI_ARG1), -/* 16 */ /* AML_ARG2 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg2", ARGP_ARG2, ARGI_ARG2), -/* 17 */ /* AML_ARG3 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg3", ARGP_ARG3, ARGI_ARG3), -/* 18 */ /* AML_ARG4 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg4", ARGP_ARG4, ARGI_ARG4), -/* 19 */ /* AML_ARG5 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg5", ARGP_ARG5, ARGI_ARG5), -/* 1A */ /* AML_ARG6 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg6", ARGP_ARG6, ARGI_ARG6), -/* 1B */ /* AML_STORE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Store", ARGP_STORE_OP, ARGI_STORE_OP), -/* 1C */ /* AML_REF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "RefOf", ARGP_REF_OF_OP, ARGI_REF_OF_OP), -/* 1D */ /* AML_ADD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Add", ARGP_ADD_OP, ARGI_ADD_OP), -/* 1E */ /* AML_CONCAT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP), -/* 1F */ /* AML_SUBTRACT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP), -/* 20 */ /* AML_INCREMENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP), -/* 21 */ /* AML_DECREMENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP), -/* 22 */ /* AML_MULTIPLY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP), -/* 23 */ /* AML_DIVIDE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP), -/* 24 */ /* AML_SHIFT_LEFT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "ShiftLeft", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP), -/* 25 */ /* AML_SHIFT_RIGHT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "ShiftRight", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP), -/* 26 */ /* AML_BIT_AND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP), -/* 27 */ /* AML_BIT_NAND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP), -/* 28 */ /* AML_BIT_OR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP), -/* 29 */ /* AML_BIT_NOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP), -/* 2A */ /* AML_BIT_XOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP), -/* 2B */ /* AML_BIT_NOT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP), +/* Index Opcode Type Class Has Arguments? Name Parser Args Interpreter Args */ + +/* 00 */ /* AML_ZERO_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Zero", ARGP_ZERO_OP, ARGI_ZERO_OP), +/* 01 */ /* AML_ONE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "One", ARGP_ONE_OP, ARGI_ONE_OP), +/* 02 */ /* AML_ALIAS_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP), +/* 03 */ /* AML_NAME_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Name", ARGP_NAME_OP, ARGI_NAME_OP), +/* 04 */ /* AML_BYTE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP), +/* 05 */ /* AML_WORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "WordConst", ARGP_WORD_OP, ARGI_WORD_OP), +/* 06 */ /* AML_DWORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP), +/* 07 */ /* AML_STRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "String", ARGP_STRING_OP, ARGI_STRING_OP), +/* 08 */ /* AML_SCOPE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP), +/* 09 */ /* AML_BUFFER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS, "Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP), +/* 0A */ /* AML_PACKAGE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS, "Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP), +/* 0B */ /* AML_METHOD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Method", ARGP_METHOD_OP, ARGI_METHOD_OP), +/* 0C */ /* AML_LOCAL0 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local0", ARGP_LOCAL0, ARGI_LOCAL0), +/* 0D */ /* AML_LOCAL1 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local1", ARGP_LOCAL1, ARGI_LOCAL1), +/* 0E */ /* AML_LOCAL2 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local2", ARGP_LOCAL2, ARGI_LOCAL2), +/* 0F */ /* AML_LOCAL3 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local3", ARGP_LOCAL3, ARGI_LOCAL3), +/* 10 */ /* AML_LOCAL4 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local4", ARGP_LOCAL4, ARGI_LOCAL4), +/* 11 */ /* AML_LOCAL5 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local5", ARGP_LOCAL5, ARGI_LOCAL5), +/* 12 */ /* AML_LOCAL6 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local6", ARGP_LOCAL6, ARGI_LOCAL6), +/* 13 */ /* AML_LOCAL7 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local7", ARGP_LOCAL7, ARGI_LOCAL7), +/* 14 */ /* AML_ARG0 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg0", ARGP_ARG0, ARGI_ARG0), +/* 15 */ /* AML_ARG1 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg1", ARGP_ARG1, ARGI_ARG1), +/* 16 */ /* AML_ARG2 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg2", ARGP_ARG2, ARGI_ARG2), +/* 17 */ /* AML_ARG3 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg3", ARGP_ARG3, ARGI_ARG3), +/* 18 */ /* AML_ARG4 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg4", ARGP_ARG4, ARGI_ARG4), +/* 19 */ /* AML_ARG5 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg5", ARGP_ARG5, ARGI_ARG5), +/* 1A */ /* AML_ARG6 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg6", ARGP_ARG6, ARGI_ARG6), +/* 1B */ /* AML_STORE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Store", ARGP_STORE_OP, ARGI_STORE_OP), +/* 1C */ /* AML_REF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "RefOf", ARGP_REF_OF_OP, ARGI_REF_OF_OP), +/* 1D */ /* AML_ADD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Add", ARGP_ADD_OP, ARGI_ADD_OP), +/* 1E */ /* AML_CONCAT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP), +/* 1F */ /* AML_SUBTRACT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP), +/* 20 */ /* AML_INCREMENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP), +/* 21 */ /* AML_DECREMENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP), +/* 22 */ /* AML_MULTIPLY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP), +/* 23 */ /* AML_DIVIDE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP), +/* 24 */ /* AML_SHIFT_LEFT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "ShiftLeft", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP), +/* 25 */ /* AML_SHIFT_RIGHT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "ShiftRight", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP), +/* 26 */ /* AML_BIT_AND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP), +/* 27 */ /* AML_BIT_NAND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP), +/* 28 */ /* AML_BIT_OR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP), +/* 29 */ /* AML_BIT_NOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP), +/* 2A */ /* AML_BIT_XOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP), +/* 2B */ /* AML_BIT_NOT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP), /* 2C */ /* AML_FIND_SET_LEFT_BIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "FindSetLeftBit", ARGP_FIND_SET_LEFT_BIT_OP, ARGI_FIND_SET_LEFT_BIT_OP), -/* 2D */ /* AML_FIND_SET_RIGHT_BIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP, ARGI_FIND_SET_RIGHT_BIT_OP), -/* 2E */ /* AML_DEREF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "DerefOf", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP), -/* 2F */ /* AML_NOTIFY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC1| AML_HAS_ARGS, "Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP), -/* 30 */ /* AML_SIZE_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "SizeOf", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP), -/* 31 */ /* AML_INDEX_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_INDEX| AML_HAS_ARGS, "Index", ARGP_INDEX_OP, ARGI_INDEX_OP), -/* 32 */ /* AML_MATCH_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MATCH| AML_HAS_ARGS, "Match", ARGP_MATCH_OP, ARGI_MATCH_OP), -/* 33 */ /* AML_DWORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateDWordField", ARGP_DWORD_FIELD_OP, ARGI_DWORD_FIELD_OP), -/* 34 */ /* AML_WORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateWordField", ARGP_WORD_FIELD_OP, ARGI_WORD_FIELD_OP), -/* 35 */ /* AML_BYTE_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateByteField", ARGP_BYTE_FIELD_OP, ARGI_BYTE_FIELD_OP), -/* 36 */ /* AML_BIT_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateBitField", ARGP_BIT_FIELD_OP, ARGI_BIT_FIELD_OP), -/* 37 */ /* AML_TYPE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP), -/* 38 */ /* AML_LAND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LAnd", ARGP_LAND_OP, ARGI_LAND_OP), -/* 39 */ /* AML_LOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LOr", ARGP_LOR_OP, ARGI_LOR_OP), -/* 3A */ /* AML_LNOT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "LNot", ARGP_LNOT_OP, ARGI_LNOT_OP), -/* 3B */ /* AML_LEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP), -/* 3C */ /* AML_LGREATER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP), -/* 3D */ /* AML_LLESS_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LLess", ARGP_LLESS_OP, ARGI_LLESS_OP), -/* 3E */ /* AML_IF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "If", ARGP_IF_OP, ARGI_IF_OP), -/* 3F */ /* AML_ELSE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "Else", ARGP_ELSE_OP, ARGI_ELSE_OP), -/* 40 */ /* AML_WHILE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "While", ARGP_WHILE_OP, ARGI_WHILE_OP), -/* 41 */ /* AML_NOOP_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "Noop", ARGP_NOOP_OP, ARGI_NOOP_OP), -/* 42 */ /* AML_RETURN_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "Return", ARGP_RETURN_OP, ARGI_RETURN_OP), -/* 43 */ /* AML_BREAK_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "Break", ARGP_BREAK_OP, ARGI_BREAK_OP), -/* 44 */ /* AML_BREAK_POINT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP), -/* 45 */ /* AML_ONES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Ones", ARGP_ONES_OP, ARGI_ONES_OP), +/* 2D */ /* AML_FIND_SET_RIGHT_BIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP,ARGI_FIND_SET_RIGHT_BIT_OP), +/* 2E */ /* AML_DEREF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "DerefOf", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP), +/* 2F */ /* AML_NOTIFY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC1| AML_HAS_ARGS, "Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP), +/* 30 */ /* AML_SIZE_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "SizeOf", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP), +/* 31 */ /* AML_INDEX_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_INDEX| AML_HAS_ARGS, "Index", ARGP_INDEX_OP, ARGI_INDEX_OP), +/* 32 */ /* AML_MATCH_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MATCH| AML_HAS_ARGS, "Match", ARGP_MATCH_OP, ARGI_MATCH_OP), +/* 33 */ /* AML_CREATE_DWORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateDWordField", ARGP_CREATE_DWORD_FIELD_OP,ARGI_CREATE_DWORD_FIELD_OP), +/* 34 */ /* AML_CREATE_WORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateWordField", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP), +/* 35 */ /* AML_CREATE_BYTE_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateByteField", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP), +/* 36 */ /* AML_CREATE_BIT_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateBitField", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP), +/* 37 */ /* AML_TYPE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP), +/* 38 */ /* AML_LAND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LAnd", ARGP_LAND_OP, ARGI_LAND_OP), +/* 39 */ /* AML_LOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LOr", ARGP_LOR_OP, ARGI_LOR_OP), +/* 3A */ /* AML_LNOT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "LNot", ARGP_LNOT_OP, ARGI_LNOT_OP), +/* 3B */ /* AML_LEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP), +/* 3C */ /* AML_LGREATER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP), +/* 3D */ /* AML_LLESS_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LLess", ARGP_LLESS_OP, ARGI_LLESS_OP), +/* 3E */ /* AML_IF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "If", ARGP_IF_OP, ARGI_IF_OP), +/* 3F */ /* AML_ELSE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "Else", ARGP_ELSE_OP, ARGI_ELSE_OP), +/* 40 */ /* AML_WHILE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "While", ARGP_WHILE_OP, ARGI_WHILE_OP), +/* 41 */ /* AML_NOOP_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "Noop", ARGP_NOOP_OP, ARGI_NOOP_OP), +/* 42 */ /* AML_RETURN_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "Return", ARGP_RETURN_OP, ARGI_RETURN_OP), +/* 43 */ /* AML_BREAK_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "Break", ARGP_BREAK_OP, ARGI_BREAK_OP), +/* 44 */ /* AML_BREAK_POINT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP), +/* 45 */ /* AML_ONES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Ones", ARGP_ONES_OP, ARGI_ONES_OP), /* Prefixed opcodes (Two-byte opcodes with a prefix op) */ -/* 46 */ /* AML_MUTEX_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP), -/* 47 */ /* AML_EVENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_NO_ARGS, "Event", ARGP_EVENT_OP, ARGI_EVENT_OP), -/* 48 */ /* AML_COND_REF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "CondRefOf", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP), -/* 49 */ /* AML_CREATE_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateField", ARGP_CREATE_FIELD_OP, ARGI_CREATE_FIELD_OP), -/* 4A */ /* AML_LOAD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_RECONFIGURATION| AML_HAS_ARGS, "Load", ARGP_LOAD_OP, ARGI_LOAD_OP), -/* 4B */ /* AML_STALL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Stall", ARGP_STALL_OP, ARGI_STALL_OP), -/* 4C */ /* AML_SLEEP_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP), -/* 4D */ /* AML_ACQUIRE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2S| AML_HAS_ARGS, "Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP), -/* 4E */ /* AML_SIGNAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP), -/* 4F */ /* AML_WAIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2S| AML_HAS_ARGS, "Wait", ARGP_WAIT_OP, ARGI_WAIT_OP), -/* 50 */ /* AML_RESET_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Reset", ARGP_RESET_OP, ARGI_RESET_OP), -/* 51 */ /* AML_RELEASE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP), -/* 52 */ /* AML_FROM_BCD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "FromBCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP), -/* 53 */ /* AML_TO_BCD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToBCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP), -/* 54 */ /* AML_UNLOAD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_RECONFIGURATION| AML_HAS_ARGS, "Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP), -/* 55 */ /* AML_REVISION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Revision", ARGP_REVISION_OP, ARGI_REVISION_OP), -/* 56 */ /* AML_DEBUG_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP), -/* 57 */ /* AML_FATAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_FATAL| AML_HAS_ARGS, "Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP), -/* 58 */ /* AML_REGION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "OpRegion", ARGP_REGION_OP, ARGI_REGION_OP), -/* 59 */ /* AML_DEF_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Field", ARGP_DEF_FIELD_OP, ARGI_DEF_FIELD_OP), -/* 5A */ /* AML_DEVICE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP), -/* 5B */ /* AML_PROCESSOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP), -/* 5C */ /* AML_POWER_RES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP), -/* 5D */ /* AML_THERMAL_ZONE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "ThermalZone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP), -/* 5E */ /* AML_INDEX_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP), -/* 5F */ /* AML_BANK_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP), +/* 46 */ /* AML_MUTEX_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP), +/* 47 */ /* AML_EVENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_NO_ARGS, "Event", ARGP_EVENT_OP, ARGI_EVENT_OP), +/* 48 */ /* AML_COND_REF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "CondRefOf", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP), +/* 49 */ /* AML_CREATE_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateField", ARGP_CREATE_FIELD_OP, ARGI_CREATE_FIELD_OP), +/* 4A */ /* AML_LOAD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_RECONFIGURATION| AML_HAS_ARGS, "Load", ARGP_LOAD_OP, ARGI_LOAD_OP), +/* 4B */ /* AML_STALL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Stall", ARGP_STALL_OP, ARGI_STALL_OP), +/* 4C */ /* AML_SLEEP_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP), +/* 4D */ /* AML_ACQUIRE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2S| AML_HAS_ARGS, "Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP), +/* 4E */ /* AML_SIGNAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP), +/* 4F */ /* AML_WAIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2S| AML_HAS_ARGS, "Wait", ARGP_WAIT_OP, ARGI_WAIT_OP), +/* 50 */ /* AML_RESET_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Reset", ARGP_RESET_OP, ARGI_RESET_OP), +/* 51 */ /* AML_RELEASE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP), +/* 52 */ /* AML_FROM_BCD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "FromBCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP), +/* 53 */ /* AML_TO_BCD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToBCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP), +/* 54 */ /* AML_UNLOAD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_RECONFIGURATION| AML_HAS_ARGS, "Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP), +/* 55 */ /* AML_REVISION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Revision", ARGP_REVISION_OP, ARGI_REVISION_OP), +/* 56 */ /* AML_DEBUG_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP), +/* 57 */ /* AML_FATAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_FATAL| AML_HAS_ARGS, "Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP), +/* 58 */ /* AML_REGION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "OpRegion", ARGP_REGION_OP, ARGI_REGION_OP), +/* 59 */ /* AML_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Field", ARGP_FIELD_OP, ARGI_FIELD_OP), +/* 5A */ /* AML_DEVICE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP), +/* 5B */ /* AML_PROCESSOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP), +/* 5C */ /* AML_POWER_RES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP), +/* 5D */ /* AML_THERMAL_ZONE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "ThermalZone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP), +/* 5E */ /* AML_INDEX_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP), +/* 5F */ /* AML_BANK_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP), /* Internal opcodes that map to invalid AML opcodes */ -/* 60 */ /* AML_LNOTEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS, "LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP), -/* 61 */ /* AML_LLESSEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS, "LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP), -/* 62 */ /* AML_LGREATEREQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS, "LGreaterEqual", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP), -/* 63 */ /* AML_NAMEPATH_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "NamePath", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP), -/* 64 */ /* AML_METHODCALL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_CALL| AML_HAS_ARGS, "MethodCall", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP), -/* 65 */ /* AML_BYTELIST_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "ByteList", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP), -/* 66 */ /* AML_RESERVEDFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "ReservedField", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP), -/* 67 */ /* AML_NAMEDFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "NamedField", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP), -/* 68 */ /* AML_ACCESSFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "AccessField", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP), -/* 69 */ /* AML_STATICSTRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP), -/* 6A */ /* AML_RETURN_VALUE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_RETURN| AML_HAS_ARGS, "[Return Value]", ARG_NONE, ARG_NONE), -/* 6B */ /* UNKNOWN OPCODES */ OP_INFO_ENTRY (ACPI_OP_TYPE_UNKNOWN | OPTYPE_BOGUS| AML_HAS_ARGS, "UNKNOWN_OP!", ARG_NONE, ARG_NONE), -/* 6C */ /* ASCII CHARACTERS */ OP_INFO_ENTRY (ACPI_OP_TYPE_ASCII | OPTYPE_BOGUS| AML_HAS_ARGS, "ASCII_ONLY!", ARG_NONE, ARG_NONE), -/* 6D */ /* PREFIX CHARACTERS */ OP_INFO_ENTRY (ACPI_OP_TYPE_PREFIX | OPTYPE_BOGUS| AML_HAS_ARGS, "PREFIX_ONLY!", ARG_NONE, ARG_NONE), +/* 60 */ /* AML_LNOTEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS, "LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP), +/* 61 */ /* AML_LLESSEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS, "LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP), +/* 62 */ /* AML_LGREATEREQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS, "LGreaterEqual", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP), +/* 63 */ /* AML_INT_NAMEPATH_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "NamePath", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP), +/* 64 */ /* AML_INT_METHODCALL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_CALL| AML_HAS_ARGS, "MethodCall", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP), +/* 65 */ /* AML_INT_BYTELIST_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "ByteList", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP), +/* 66 */ /* AML_INT_RESERVEDFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "ReservedField", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP), +/* 67 */ /* AML_INT_NAMEDFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "NamedField", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP), +/* 68 */ /* AML_INT_ACCESSFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "AccessField", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP), +/* 69 */ /* AML_INT_STATICSTRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP), +/* 6A */ /* AML_INT_RETURN_VALUE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_RETURN| AML_HAS_ARGS, "[Return Value]", ARG_NONE, ARG_NONE), +/* 6B */ /* UNKNOWN OPCODES */ OP_INFO_ENTRY (ACPI_OP_TYPE_UNKNOWN | OPTYPE_BOGUS| AML_HAS_ARGS, "UNKNOWN_OP!", ARG_NONE, ARG_NONE), +/* 6C */ /* ASCII CHARACTERS */ OP_INFO_ENTRY (ACPI_OP_TYPE_ASCII | OPTYPE_BOGUS| AML_HAS_ARGS, "ASCII_ONLY!", ARG_NONE, ARG_NONE), +/* 6D */ /* PREFIX CHARACTERS */ OP_INFO_ENTRY (ACPI_OP_TYPE_PREFIX | OPTYPE_BOGUS| AML_HAS_ARGS, "PREFIX_ONLY!", ARG_NONE, ARG_NONE), /* ACPI 2.0 (new) opcodes */ -/* 6E */ /* AML_QWORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP), -/* 6F */ /* AML_VAR_PACKAGE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS, "VarPackage", ARGP_VAR_PACKAGE_OP, ARGI_VAR_PACKAGE_OP), -/* 70 */ /* AML_CONCAT_RES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "ConcatRes", ARGP_CONCAT_RES_OP, ARGI_CONCAT_RES_OP), -/* 71 */ /* AML_MOD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Mod", ARGP_MOD_OP, ARGI_MOD_OP), -/* 72 */ /* AML_QWORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateQWordField", ARGP_QWORD_FIELD_OP, ARGI_QWORD_FIELD_OP), -/* 73 */ /* AML_TO_BUFFER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToBuffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP), -/* 74 */ /* AML_TO_DEC_STR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToDecString", ARGP_TO_DEC_STR_OP, ARGI_TO_DEC_STR_OP), -/* 75 */ /* AML_TO_HEX_STR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToHexString", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP), -/* 76 */ /* AML_TO_INTEGER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToInteger", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP), -/* 77 */ /* AML_TO_STRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToString", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP), -/* 78 */ /* AML_COPY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Copy", ARGP_COPY_OP, ARGI_COPY_OP), -/* 79 */ /* AML_MID_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Mid", ARGP_MID_OP, ARGI_MID_OP), -/* 7A */ /* AML_CONTINUE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP), -/* 7B */ /* AML_LOAD_TABLE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP), -/* 7C */ /* AML_DATA_REGION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "DataOpRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP), +/* 6E */ /* AML_QWORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP), +/* 6F */ /* AML_VAR_PACKAGE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS, "VarPackage", ARGP_VAR_PACKAGE_OP, ARGI_VAR_PACKAGE_OP), +/* 70 */ /* AML_CONCAT_RES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "ConcatRes", ARGP_CONCAT_RES_OP, ARGI_CONCAT_RES_OP), +/* 71 */ /* AML_MOD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Mod", ARGP_MOD_OP, ARGI_MOD_OP), +/* 72 */ /* AML_CREATE_QWORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateQWordField", ARGP_CREATE_QWORD_FIELD_OP,ARGI_CREATE_QWORD_FIELD_OP), +/* 73 */ /* AML_TO_BUFFER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToBuffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP), +/* 74 */ /* AML_TO_DEC_STR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToDecString", ARGP_TO_DEC_STR_OP, ARGI_TO_DEC_STR_OP), +/* 75 */ /* AML_TO_HEX_STR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToHexString", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP), +/* 76 */ /* AML_TO_INTEGER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToInteger", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP), +/* 77 */ /* AML_TO_STRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToString", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP), +/* 78 */ /* AML_COPY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "CopyObject", ARGP_COPY_OP, ARGI_COPY_OP), +/* 79 */ /* AML_MID_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Mid", ARGP_MID_OP, ARGI_MID_OP), +/* 7A */ /* AML_CONTINUE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP), +/* 7B */ /* AML_LOAD_TABLE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP), +/* 7C */ /* AML_DATA_REGION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "DataOpRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP), }; @@ -658,6 +658,9 @@ AcpiPsGetOpcodeInfo ( UINT8 LowerOpcode; + PROC_NAME ("PsGetOpcodeInfo"); + + /* Split the 16-bit opcode into separate bytes */ UpperOpcode = (UINT8) (Opcode >> 8); @@ -698,17 +701,13 @@ AcpiPsGetOpcodeInfo ( /* This case is for the bogus opcodes LNOTEQUAL, LLESSEQUAL, LGREATEREQUAL */ /* TBD: [Investigate] remove this case? */ - DEBUG_PRINT (ACPI_ERROR, ("PsGetOpcodeInfo: Bad multi-byte opcode=%X\n", - Opcode)); - + DEBUG_PRINTP (ACPI_ERROR, ("Bad multi-byte opcode=%X\n", Opcode)); break; default: - DEBUG_PRINT (ACPI_ERROR, ("PsGetOpcodeInfo: Unknown extended opcode=%X\n", - Opcode)); - + DEBUG_PRINTP (ACPI_ERROR, ("Unknown extended opcode=%X\n", Opcode)); break; } diff --git a/sys/contrib/dev/acpica/psparse.c b/sys/contrib/dev/acpica/psparse.c index 78443bc..fc68ef4 100644 --- a/sys/contrib/dev/acpica/psparse.c +++ b/sys/contrib/dev/acpica/psparse.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psparse - Parser top level AML parse routines - * $Revision: 74 $ + * $Revision: 85 $ * *****************************************************************************/ @@ -130,8 +130,9 @@ #include "amlcode.h" #include "acnamesp.h" #include "acdebug.h" +#include "acinterp.h" -#define _COMPONENT PARSER +#define _COMPONENT ACPI_PARSER MODULE_NAME ("psparse") @@ -203,9 +204,9 @@ AcpiPsPeekOpcode ( * * if (Opcode == AML_EXTOP * || (Opcode == AML_LNOT - * && (GET8 (AcpiAml) == AML_LEQUAL - * || GET8 (AcpiAml) == AML_LGREATER - * || GET8 (AcpiAml) == AML_LLESS))) + * && (GET8 (Aml) == AML_LEQUAL + * || GET8 (Aml) == AML_LGREATER + * || GET8 (Aml) == AML_LLESS))) * * extended Opcode, !=, <=, or >= */ @@ -228,8 +229,8 @@ AcpiPsPeekOpcode ( * * FUNCTION: AcpiPsCreateState * - * PARAMETERS: AcpiAml - AcpiAml code pointer - * AcpiAmlSize - Length of AML code + * PARAMETERS: Aml - Aml code pointer + * AmlSize - Length of AML code * * RETURN: A new parser state object * @@ -248,10 +249,10 @@ AcpiPsCreateState ( FUNCTION_TRACE ("PsCreateState"); - ParserState = AcpiCmCallocate (sizeof (ACPI_PARSE_STATE)); + ParserState = AcpiUtCallocate (sizeof (ACPI_PARSE_STATE)); if (!ParserState) { - return_VALUE (NULL); + return_PTR (NULL); } ParserState->Aml = Aml; @@ -362,7 +363,7 @@ AcpiPsCompleteThisOp ( (OpcodeClass != OPTYPE_LOCAL_VARIABLE) && (OpcodeClass != OPTYPE_METHOD_ARGUMENT) && (OpcodeClass != OPTYPE_DATA_TERM) && - (Op->Opcode != AML_NAMEPATH_OP)) + (Op->Opcode != AML_INT_NAMEPATH_OP)) { /* Make sure that we only delete this subtree */ @@ -387,15 +388,15 @@ AcpiPsCompleteThisOp ( * op must be replace by a placeholder return op */ - if ((Op->Parent->Opcode == AML_REGION_OP) || - (Op->Parent->Opcode == AML_CREATE_FIELD_OP) || - (Op->Parent->Opcode == AML_BIT_FIELD_OP) || - (Op->Parent->Opcode == AML_BYTE_FIELD_OP) || - (Op->Parent->Opcode == AML_WORD_FIELD_OP) || - (Op->Parent->Opcode == AML_DWORD_FIELD_OP) || - (Op->Parent->Opcode == AML_QWORD_FIELD_OP)) + if ((Op->Parent->Opcode == AML_REGION_OP) || + (Op->Parent->Opcode == AML_CREATE_FIELD_OP) || + (Op->Parent->Opcode == AML_CREATE_BIT_FIELD_OP) || + (Op->Parent->Opcode == AML_CREATE_BYTE_FIELD_OP) || + (Op->Parent->Opcode == AML_CREATE_WORD_FIELD_OP) || + (Op->Parent->Opcode == AML_CREATE_DWORD_FIELD_OP) || + (Op->Parent->Opcode == AML_CREATE_QWORD_FIELD_OP)) { - ReplacementOp = AcpiPsAllocOp (AML_RETURN_VALUE_OP); + ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); if (!ReplacementOp) { return_VALUE (FALSE); @@ -405,7 +406,7 @@ AcpiPsCompleteThisOp ( break; default: - ReplacementOp = AcpiPsAllocOp (AML_RETURN_VALUE_OP); + ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); if (!ReplacementOp) { return_VALUE (FALSE); @@ -621,7 +622,7 @@ AcpiPsParseLoop ( ACPI_PARSE2_OBJECT *DeferredOp; UINT32 ArgCount; /* push for fixed or var args */ UINT32 ArgTypes = 0; - ACPI_PTRDIFF AmlOffset; + UINT32 AmlOffset; UINT16 Opcode; ACPI_PARSE_OBJECT PreOp; ACPI_PARSE_STATE *ParserState; @@ -663,14 +664,13 @@ AcpiPsParseLoop ( { if (Status == AE_AML_NO_RETURN_VALUE) { - DEBUG_PRINT (ACPI_ERROR, - ("PsParseLoop: Invoked method did not return a value, %s\n", - AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, + ("Invoked method did not return a value, %s\n", + AcpiUtFormatException (Status))); } - DEBUG_PRINT (ACPI_ERROR, - ("PsParseLoop: GetPredicate Failed, %s\n", - AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, ("GetPredicate Failed, %s\n", + AcpiUtFormatException (Status))); return_ACPI_STATUS (Status); } @@ -678,7 +678,7 @@ AcpiPsParseLoop ( } AcpiPsPopScope (ParserState, &Op, &ArgTypes, &ArgCount); - DEBUG_PRINT (TRACE_PARSE, ("ParseLoop: Popped scope, Op=%p\n", Op)); + DEBUG_PRINTP (TRACE_PARSE, ("Popped scope, Op=%p\n", Op)); } else if (WalkState->PrevOp) @@ -729,7 +729,7 @@ AcpiPsParseLoop ( * string. Convert the bare name string to a namepath. */ - Opcode = AML_NAMEPATH_OP; + Opcode = AML_INT_NAMEPATH_OP; ArgTypes = ARGP_NAMESTRING; break; @@ -737,8 +737,8 @@ AcpiPsParseLoop ( /* The opcode is unrecognized. Just skip unknown opcodes */ - DEBUG_PRINT (ACPI_ERROR, - ("ParseLoop: Found unknown opcode %lX at AML offset %X, ignoring\n", + DEBUG_PRINTP (ACPI_ERROR, + ("Found unknown opcode %lX at AML offset %X, ignoring\n", Opcode, AmlOffset)); DUMP_BUFFER (ParserState->Aml, 128); @@ -835,11 +835,12 @@ AcpiPsParseLoop ( } - if ((Op->Opcode == AML_CREATE_FIELD_OP) || - (Op->Opcode == AML_BIT_FIELD_OP) || - (Op->Opcode == AML_BYTE_FIELD_OP) || - (Op->Opcode == AML_WORD_FIELD_OP) || - (Op->Opcode == AML_DWORD_FIELD_OP)) + if ((Op->Opcode == AML_CREATE_FIELD_OP) || + (Op->Opcode == AML_CREATE_BIT_FIELD_OP) || + (Op->Opcode == AML_CREATE_BYTE_FIELD_OP) || + (Op->Opcode == AML_CREATE_WORD_FIELD_OP) || + (Op->Opcode == AML_CREATE_DWORD_FIELD_OP) || + (Op->Opcode == AML_CREATE_QWORD_FIELD_OP)) { /* * Backup to beginning of CreateXXXfield declaration @@ -878,8 +879,8 @@ AcpiPsParseLoop ( if (OpInfo) { - DEBUG_PRINT (TRACE_PARSE, - ("ParseLoop: Op=%p Opcode=%4.4lX Aml %p Oft=%5.5lX\n", + DEBUG_PRINTP (TRACE_PARSE, + ("Op=%p Opcode=%4.4lX Aml %p Oft=%5.5lX\n", Op, Op->Opcode, ParserState->Aml, Op->AmlOffset)); } } @@ -907,7 +908,7 @@ AcpiPsParseLoop ( GET_CURRENT_ARG_TYPE (ArgTypes), Op); break; - case AML_NAMEPATH_OP: /* AML_NAMESTRING_ARG */ + case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */ AcpiPsGetNextNamepath (ParserState, Op, &ArgCount, 1); ArgTypes = 0; @@ -948,8 +949,8 @@ AcpiPsParseLoop ( */ DeferredOp->Data = ParserState->Aml; - DeferredOp->Length = ParserState->PkgEnd - - ParserState->Aml; + DeferredOp->Length = (UINT32) (ParserState->PkgEnd - + ParserState->Aml); /* * Skip body of method. For OpRegions, we must continue @@ -994,18 +995,18 @@ AcpiPsParseLoop ( * know the length. */ - DeferredOp->Length = ParserState->Aml - - DeferredOp->Data; + DeferredOp->Length = (UINT32) (ParserState->Aml - + DeferredOp->Data); } } } - if ((Op->Opcode == AML_CREATE_FIELD_OP) || - (Op->Opcode == AML_BIT_FIELD_OP) || - (Op->Opcode == AML_BYTE_FIELD_OP) || - (Op->Opcode == AML_WORD_FIELD_OP) || - (Op->Opcode == AML_DWORD_FIELD_OP) || - (Op->Opcode == AML_QWORD_FIELD_OP)) + if ((Op->Opcode == AML_CREATE_FIELD_OP) || + (Op->Opcode == AML_CREATE_BIT_FIELD_OP) || + (Op->Opcode == AML_CREATE_BYTE_FIELD_OP) || + (Op->Opcode == AML_CREATE_WORD_FIELD_OP) || + (Op->Opcode == AML_CREATE_DWORD_FIELD_OP) || + (Op->Opcode == AML_CREATE_QWORD_FIELD_OP)) { /* * Backup to beginning of CreateXXXfield declaration (1 for @@ -1014,7 +1015,8 @@ AcpiPsParseLoop ( * BodyLength is unknown until we parse the body */ DeferredOp = (ACPI_PARSE2_OBJECT *) Op; - DeferredOp->Length = ParserState->Aml - DeferredOp->Data; + DeferredOp->Length = (UINT32) (ParserState->Aml - + DeferredOp->Data); } /* This op complete, notify the dispatcher */ @@ -1118,7 +1120,7 @@ CloseThisOp: if (AcpiPsHasCompletedScope (ParserState)) { AcpiPsPopScope (ParserState, &Op, &ArgTypes, &ArgCount); - DEBUG_PRINT (TRACE_PARSE, ("ParseLoop: Popped scope, Op=%p\n", Op)); + DEBUG_PRINTP (TRACE_PARSE, ("Popped scope, Op=%p\n", Op)); } else @@ -1149,7 +1151,7 @@ CloseThisOp: * sequential closing braces). We want to terminate each one cleanly. */ - DEBUG_PRINT (TRACE_PARSE, ("PsParseLoop: Package complete at Op %p\n", Op)); + DEBUG_PRINTP (TRACE_PARSE, ("Package complete at Op %p\n", Op)); do { if (Op) @@ -1240,8 +1242,7 @@ AcpiPsParseAml ( FUNCTION_TRACE ("PsParseAml"); - DEBUG_PRINT (TRACE_PARSE, - ("PsParseAml: Entered with Scope=%p Aml=%p size=%lX\n", + DEBUG_PRINTP (TRACE_PARSE, ("Entered with Scope=%p Aml=%p size=%lX\n", StartScope, Aml, AmlSize)); @@ -1263,8 +1264,11 @@ AcpiPsParseAml ( /* Create and initialize a new walk list */ WalkList.WalkState = NULL; + WalkList.AcquiredMutexList.Prev = NULL; + WalkList.AcquiredMutexList.Next = NULL; - WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT, ParserState->StartOp, MthDesc, &WalkList); + WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT, ParserState->StartOp, + MthDesc, &WalkList); if (!WalkState) { Status = AE_NO_MEMORY; @@ -1330,8 +1334,7 @@ AcpiPsParseAml ( * handles nested control method invocations without recursion. */ - DEBUG_PRINT (TRACE_PARSE, ("PsParseAml: State=%p\n", - WalkState)); + DEBUG_PRINTP (TRACE_PARSE, ("State=%p\n", WalkState)); while (WalkState) { @@ -1340,9 +1343,8 @@ AcpiPsParseAml ( Status = AcpiPsParseLoop (WalkState); } - DEBUG_PRINT (TRACE_PARSE, - ("PsParseAml: Completed one call to walk loop, State=%p\n", - WalkState)); + DEBUG_PRINTP (TRACE_PARSE, + ("Completed one call to walk loop, State=%p\n", WalkState)); if (Status == AE_CTRL_TRANSFER) { @@ -1376,8 +1378,7 @@ AcpiPsParseAml ( ReturnDesc = WalkState->ReturnDesc; - DEBUG_PRINT (TRACE_PARSE, - ("PsParseAml: ReturnValue=%p, State=%p\n", + DEBUG_PRINTP (TRACE_PARSE, ("ReturnValue=%p, State=%p\n", WalkState->ReturnDesc, WalkState)); /* Reset the current scope to the beginning of scope stack */ @@ -1397,7 +1398,7 @@ AcpiPsParseAml ( /* Delete this walk state and all linked control states */ AcpiPsCleanupScope (WalkState->ParserState); - AcpiCmFree (WalkState->ParserState); + AcpiUtFree (WalkState->ParserState); AcpiDsDeleteWalkState (WalkState); /* Check if we have restarted a preempted walk */ @@ -1431,13 +1432,14 @@ AcpiPsParseAml ( { /* Caller doesn't want it, must delete it */ - AcpiCmRemoveReference (ReturnDesc); + AcpiUtRemoveReference (ReturnDesc); } } /* Normal exit */ + AcpiExReleaseAllMutexes ((ACPI_OPERAND_OBJECT *) &WalkList.AcquiredMutexList); AcpiGbl_CurrentWalkList = PrevWalkList; return_ACPI_STATUS (Status); @@ -1448,8 +1450,9 @@ Cleanup: AcpiDsDeleteWalkState (WalkState); AcpiPsCleanupScope (ParserState); - AcpiCmFree (ParserState); + AcpiUtFree (ParserState); + AcpiExReleaseAllMutexes ((ACPI_OPERAND_OBJECT *)&WalkList.AcquiredMutexList); AcpiGbl_CurrentWalkList = PrevWalkList; return_ACPI_STATUS (Status); diff --git a/sys/contrib/dev/acpica/psscope.c b/sys/contrib/dev/acpica/psscope.c index 5e91b74..ff1148f 100644 --- a/sys/contrib/dev/acpica/psscope.c +++ b/sys/contrib/dev/acpica/psscope.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psscope - Parser scope stack management routines - * $Revision: 24 $ + * $Revision: 27 $ * *****************************************************************************/ @@ -118,7 +118,7 @@ #include "acpi.h" #include "acparser.h" -#define _COMPONENT PARSER +#define _COMPONENT ACPI_PARSER MODULE_NAME ("psscope") @@ -189,7 +189,7 @@ AcpiPsInitScope ( FUNCTION_TRACE_PTR ("PsInitScope", RootOp); - Scope = AcpiCmCreateGenericState (); + Scope = AcpiUtCreateGenericState (); if (!Scope) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -235,7 +235,7 @@ AcpiPsPushScope ( FUNCTION_TRACE_PTR ("PsPushScope", Op); - Scope = AcpiCmCreateGenericState (); + Scope = AcpiUtCreateGenericState (); if (!Scope) { return (AE_NO_MEMORY); @@ -249,7 +249,7 @@ AcpiPsPushScope ( /* Push onto scope stack */ - AcpiCmPushGenericState (&ParserState->Scope, Scope); + AcpiUtPushGenericState (&ParserState->Scope, Scope); if (ArgCount == ACPI_VAR_ARGS) @@ -303,7 +303,7 @@ AcpiPsPopScope ( */ if (Scope->Common.Next) { - Scope = AcpiCmPopGenericState (&ParserState->Scope); + Scope = AcpiUtPopGenericState (&ParserState->Scope); /* return to parsing previous op */ @@ -315,7 +315,7 @@ AcpiPsPopScope ( /* All done with this scope state structure */ - AcpiCmDeleteGenericState (Scope); + AcpiUtDeleteGenericState (Scope); } else @@ -328,8 +328,7 @@ AcpiPsPopScope ( } - DEBUG_PRINT (TRACE_PARSE, - ("PsPopScope: Popped Op %p Args %X\n", *Op, *ArgCount)); + DEBUG_PRINTP (TRACE_PARSE, ("Popped Op %p Args %X\n", *Op, *ArgCount)); return_VOID; } @@ -366,8 +365,8 @@ AcpiPsCleanupScope ( while (ParserState->Scope) { - Scope = AcpiCmPopGenericState (&ParserState->Scope); - AcpiCmDeleteGenericState (Scope); + Scope = AcpiUtPopGenericState (&ParserState->Scope); + AcpiUtDeleteGenericState (Scope); } return_VOID; diff --git a/sys/contrib/dev/acpica/pstree.c b/sys/contrib/dev/acpica/pstree.c index 2f7cf49..c6478b4 100644 --- a/sys/contrib/dev/acpica/pstree.c +++ b/sys/contrib/dev/acpica/pstree.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: pstree - Parser op tree manipulation/traversal/search - * $Revision: 27 $ + * $Revision: 30 $ * *****************************************************************************/ @@ -121,7 +121,7 @@ #include "acparser.h" #include "amlcode.h" -#define _COMPONENT PARSER +#define _COMPONENT ACPI_PARSER MODULE_NAME ("pstree") @@ -283,7 +283,7 @@ AcpiPsGetChild ( case AML_ELSE_OP: case AML_DEVICE_OP: case AML_THERMAL_ZONE_OP: - case AML_METHODCALL_OP: + case AML_INT_METHODCALL_OP: Child = AcpiPsGetArg (Op, 0); break; @@ -294,7 +294,7 @@ AcpiPsGetChild ( case AML_METHOD_OP: case AML_IF_OP: case AML_WHILE_OP: - case AML_DEF_FIELD_OP: + case AML_FIELD_OP: Child = AcpiPsGetArg (Op, 1); break; diff --git a/sys/contrib/dev/acpica/psutils.c b/sys/contrib/dev/acpica/psutils.c index e49b9a1..e22ea74 100644 --- a/sys/contrib/dev/acpica/psutils.c +++ b/sys/contrib/dev/acpica/psutils.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psutils - Parser miscellaneous utilities (Parser only) - * $Revision: 32 $ + * $Revision: 37 $ * *****************************************************************************/ @@ -119,7 +119,7 @@ #include "acparser.h" #include "amlcode.h" -#define _COMPONENT PARSER +#define _COMPONENT ACPI_PARSER MODULE_NAME ("psutils") @@ -185,6 +185,9 @@ AcpiPsAllocOp ( UINT8 Flags; + PROC_NAME ("PsAllocOp"); + + /* Allocate the minimum required size object */ if (AcpiPsIsDeferredOp (Opcode)) @@ -221,7 +224,7 @@ AcpiPsAllocOp ( * Check if there is an Op already available in the cache */ - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); AcpiGbl_ParseCacheRequests++; if (AcpiGbl_ParseCache) { @@ -235,17 +238,16 @@ AcpiPsAllocOp ( if (Op->DataType == 0xFF) { - DEBUG_PRINT (ACPI_ERROR, ("Op %p deleted while in cache!\n", Op)); + DEBUG_PRINTP (ACPI_ERROR, ("Op %p deleted while in cache!\n", Op)); } /* Clear the previously used Op */ MEMSET (Op, 0, sizeof (ACPI_PARSE_OBJECT)); - DEBUG_PRINT (TRACE_PARSE, - ("PsAllocOp: Op %p from Parse Cache\n", Op)); + DEBUG_PRINTP (TRACE_PARSE, ("Op %p from Parse Cache\n", Op)); } - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); } else @@ -257,7 +259,7 @@ AcpiPsAllocOp ( * Check if there is an Op already available in the cache */ - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); AcpiGbl_ExtParseCacheRequests++; if (AcpiGbl_ExtParseCache) { @@ -271,17 +273,16 @@ AcpiPsAllocOp ( if (Op->DataType == 0xFF) { - DEBUG_PRINT (ACPI_ERROR, ("Op %p deleted while in cache!\n", Op)); + DEBUG_PRINTP (ACPI_ERROR, ("Op %p deleted while in cache!\n", Op)); } /* Clear the previously used Op */ MEMSET (Op, 0, sizeof (ACPI_PARSE2_OBJECT)); - DEBUG_PRINT (TRACE_PARSE, - ("PsAllocOp: Op %p from ExtParse Cache\n", Op)); + DEBUG_PRINTP (TRACE_PARSE, ("Op %p from ExtParse Cache\n", Op)); } - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); } @@ -289,7 +290,7 @@ AcpiPsAllocOp ( if (!Op) { - Op = AcpiCmCallocate (Size); + Op = AcpiUtCallocate (Size); } /* Initialize the Op */ @@ -320,11 +321,12 @@ void AcpiPsFreeOp ( ACPI_PARSE_OBJECT *Op) { + PROC_NAME ("PsFreeOp"); - if (Op->Opcode == AML_RETURN_VALUE_OP) + if (Op->Opcode == AML_INT_RETURN_VALUE_OP) { - DEBUG_PRINT (ACPI_INFO, ("Free retval op: %p\n", Op)); + DEBUG_PRINTP (ACPI_INFO, ("Free retval op: %p\n", Op)); } if (Op->Flags == PARSEOP_GENERIC) @@ -340,13 +342,13 @@ AcpiPsFreeOp ( MEMSET (Op, 0, sizeof (ACPI_PARSE_OBJECT)); Op->Flags = PARSEOP_IN_CACHE; - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); AcpiGbl_ParseCacheDepth++; Op->Next = AcpiGbl_ParseCache; AcpiGbl_ParseCache = Op; - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); return; } } @@ -364,13 +366,13 @@ AcpiPsFreeOp ( MEMSET (Op, 0, sizeof (ACPI_PARSE2_OBJECT)); Op->Flags = PARSEOP_IN_CACHE; - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); AcpiGbl_ExtParseCacheDepth++; Op->Next = (ACPI_PARSE_OBJECT *) AcpiGbl_ExtParseCache; AcpiGbl_ExtParseCache = (ACPI_PARSE2_OBJECT *) Op; - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); return; } } @@ -380,7 +382,7 @@ AcpiPsFreeOp ( * Not a GENERIC OP, or the cache is full, just free the Op */ - AcpiCmFree (Op); + AcpiUtFree (Op); } @@ -413,7 +415,7 @@ AcpiPsDeleteParseCache ( /* Delete one cached state object */ Next = AcpiGbl_ParseCache->Next; - AcpiCmFree (AcpiGbl_ParseCache); + AcpiUtFree (AcpiGbl_ParseCache); AcpiGbl_ParseCache = Next; AcpiGbl_ParseCacheDepth--; } @@ -425,7 +427,7 @@ AcpiPsDeleteParseCache ( /* Delete one cached state object */ Next = AcpiGbl_ExtParseCache->Next; - AcpiCmFree (AcpiGbl_ExtParseCache); + AcpiUtFree (AcpiGbl_ExtParseCache); AcpiGbl_ExtParseCache = (ACPI_PARSE2_OBJECT *) Next; AcpiGbl_ExtParseCacheDepth--; } @@ -476,28 +478,29 @@ AcpiPsIsNamespaceObjectOp ( UINT16 Opcode) { return ((BOOLEAN) - (Opcode == AML_SCOPE_OP || - Opcode == AML_DEVICE_OP || - Opcode == AML_THERMAL_ZONE_OP || - Opcode == AML_METHOD_OP || - Opcode == AML_POWER_RES_OP || - Opcode == AML_PROCESSOR_OP || - Opcode == AML_DEF_FIELD_OP || - Opcode == AML_INDEX_FIELD_OP || - Opcode == AML_BANK_FIELD_OP || - Opcode == AML_NAMEDFIELD_OP || - Opcode == AML_NAME_OP || - Opcode == AML_ALIAS_OP || - Opcode == AML_MUTEX_OP || - Opcode == AML_EVENT_OP || - Opcode == AML_REGION_OP || - Opcode == AML_CREATE_FIELD_OP || - Opcode == AML_BIT_FIELD_OP || - Opcode == AML_BYTE_FIELD_OP || - Opcode == AML_WORD_FIELD_OP || - Opcode == AML_DWORD_FIELD_OP || - Opcode == AML_METHODCALL_OP || - Opcode == AML_NAMEPATH_OP)); + (Opcode == AML_SCOPE_OP || + Opcode == AML_DEVICE_OP || + Opcode == AML_THERMAL_ZONE_OP || + Opcode == AML_METHOD_OP || + Opcode == AML_POWER_RES_OP || + Opcode == AML_PROCESSOR_OP || + Opcode == AML_FIELD_OP || + Opcode == AML_INDEX_FIELD_OP || + Opcode == AML_BANK_FIELD_OP || + Opcode == AML_INT_NAMEDFIELD_OP || + Opcode == AML_NAME_OP || + Opcode == AML_ALIAS_OP || + Opcode == AML_MUTEX_OP || + Opcode == AML_EVENT_OP || + Opcode == AML_REGION_OP || + Opcode == AML_CREATE_FIELD_OP || + Opcode == AML_CREATE_BIT_FIELD_OP || + Opcode == AML_CREATE_BYTE_FIELD_OP || + Opcode == AML_CREATE_WORD_FIELD_OP || + Opcode == AML_CREATE_DWORD_FIELD_OP || + Opcode == AML_CREATE_QWORD_FIELD_OP || + Opcode == AML_INT_METHODCALL_OP || + Opcode == AML_INT_NAMEPATH_OP)); } BOOLEAN @@ -511,7 +514,7 @@ AcpiPsIsNamespaceOp ( Opcode == AML_METHOD_OP || Opcode == AML_POWER_RES_OP || Opcode == AML_PROCESSOR_OP || - Opcode == AML_DEF_FIELD_OP || + Opcode == AML_FIELD_OP || Opcode == AML_INDEX_FIELD_OP || Opcode == AML_BANK_FIELD_OP || Opcode == AML_NAME_OP || @@ -519,7 +522,7 @@ AcpiPsIsNamespaceOp ( Opcode == AML_MUTEX_OP || Opcode == AML_EVENT_OP || Opcode == AML_REGION_OP || - Opcode == AML_NAMEDFIELD_OP)); + Opcode == AML_INT_NAMEDFIELD_OP)); } @@ -534,27 +537,28 @@ AcpiPsIsNodeOp ( UINT16 Opcode) { return ((BOOLEAN) - (Opcode == AML_SCOPE_OP || - Opcode == AML_DEVICE_OP || - Opcode == AML_THERMAL_ZONE_OP || - Opcode == AML_METHOD_OP || - Opcode == AML_POWER_RES_OP || - Opcode == AML_PROCESSOR_OP || - Opcode == AML_NAMEDFIELD_OP || - Opcode == AML_NAME_OP || - Opcode == AML_ALIAS_OP || - Opcode == AML_MUTEX_OP || - Opcode == AML_EVENT_OP || - Opcode == AML_REGION_OP || - - - Opcode == AML_CREATE_FIELD_OP || - Opcode == AML_BIT_FIELD_OP || - Opcode == AML_BYTE_FIELD_OP || - Opcode == AML_WORD_FIELD_OP || - Opcode == AML_DWORD_FIELD_OP || - Opcode == AML_METHODCALL_OP || - Opcode == AML_NAMEPATH_OP)); + (Opcode == AML_SCOPE_OP || + Opcode == AML_DEVICE_OP || + Opcode == AML_THERMAL_ZONE_OP || + Opcode == AML_METHOD_OP || + Opcode == AML_POWER_RES_OP || + Opcode == AML_PROCESSOR_OP || + Opcode == AML_INT_NAMEDFIELD_OP || + Opcode == AML_NAME_OP || + Opcode == AML_ALIAS_OP || + Opcode == AML_MUTEX_OP || + Opcode == AML_EVENT_OP || + Opcode == AML_REGION_OP || + + + Opcode == AML_CREATE_FIELD_OP || + Opcode == AML_CREATE_BIT_FIELD_OP || + Opcode == AML_CREATE_BYTE_FIELD_OP || + Opcode == AML_CREATE_WORD_FIELD_OP || + Opcode == AML_CREATE_DWORD_FIELD_OP || + Opcode == AML_CREATE_QWORD_FIELD_OP || + Opcode == AML_INT_METHODCALL_OP || + Opcode == AML_INT_NAMEPATH_OP)); } @@ -577,7 +581,7 @@ AcpiPsIsNamedOp ( Opcode == AML_MUTEX_OP || Opcode == AML_EVENT_OP || Opcode == AML_REGION_OP || - Opcode == AML_NAMEDFIELD_OP)); + Opcode == AML_INT_NAMEDFIELD_OP)); } @@ -586,12 +590,13 @@ AcpiPsIsDeferredOp ( UINT16 Opcode) { return ((BOOLEAN) - (Opcode == AML_METHOD_OP || - Opcode == AML_CREATE_FIELD_OP || - Opcode == AML_BIT_FIELD_OP || - Opcode == AML_BYTE_FIELD_OP || - Opcode == AML_WORD_FIELD_OP || - Opcode == AML_DWORD_FIELD_OP || + (Opcode == AML_METHOD_OP || + Opcode == AML_CREATE_FIELD_OP || + Opcode == AML_CREATE_BIT_FIELD_OP || + Opcode == AML_CREATE_BYTE_FIELD_OP || + Opcode == AML_CREATE_WORD_FIELD_OP || + Opcode == AML_CREATE_DWORD_FIELD_OP || + Opcode == AML_CREATE_QWORD_FIELD_OP || Opcode == AML_REGION_OP)); } @@ -603,7 +608,7 @@ BOOLEAN AcpiPsIsBytelistOp ( UINT16 Opcode) { - return ((BOOLEAN) (Opcode == AML_BYTELIST_OP)); + return ((BOOLEAN) (Opcode == AML_INT_BYTELIST_OP)); } @@ -616,7 +621,7 @@ AcpiPsIsFieldOp ( { return ((BOOLEAN) (Opcode == AML_CREATE_FIELD_OP - || Opcode == AML_DEF_FIELD_OP + || Opcode == AML_FIELD_OP || Opcode == AML_INDEX_FIELD_OP || Opcode == AML_BANK_FIELD_OP)); } @@ -630,11 +635,12 @@ AcpiPsIsCreateFieldOp ( UINT16 Opcode) { return ((BOOLEAN) - (Opcode == AML_CREATE_FIELD_OP || - Opcode == AML_BIT_FIELD_OP || - Opcode == AML_BYTE_FIELD_OP || - Opcode == AML_WORD_FIELD_OP || - Opcode == AML_DWORD_FIELD_OP)); + (Opcode == AML_CREATE_FIELD_OP || + Opcode == AML_CREATE_BIT_FIELD_OP || + Opcode == AML_CREATE_BYTE_FIELD_OP || + Opcode == AML_CREATE_WORD_FIELD_OP || + Opcode == AML_CREATE_DWORD_FIELD_OP || + Opcode == AML_CREATE_QWORD_FIELD_OP)); } diff --git a/sys/contrib/dev/acpica/pswalk.c b/sys/contrib/dev/acpica/pswalk.c index e3a0f70..8868ed0 100644 --- a/sys/contrib/dev/acpica/pswalk.c +++ b/sys/contrib/dev/acpica/pswalk.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: pswalk - Parser routines to walk parsed op tree(s) - * $Revision: 52 $ + * $Revision: 55 $ * *****************************************************************************/ @@ -122,7 +122,7 @@ #include "acnamesp.h" #include "acinterp.h" -#define _COMPONENT PARSER +#define _COMPONENT ACPI_PARSER MODULE_NAME ("pswalk") @@ -349,6 +349,9 @@ AcpiPsDeleteParseTree ( /* Create and initialize a new walk list */ WalkList.WalkState = NULL; + WalkList.AcquiredMutexList.Prev = NULL; + WalkList.AcquiredMutexList.Next = NULL; + WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT, NULL, NULL, &WalkList); if (!WalkState) { @@ -379,6 +382,7 @@ AcpiPsDeleteParseTree ( /* We are done with this walk */ + AcpiExReleaseAllMutexes ((ACPI_OPERAND_OBJECT *) &WalkList.AcquiredMutexList); AcpiDsDeleteWalkState (WalkState); return_VOID; diff --git a/sys/contrib/dev/acpica/psxface.c b/sys/contrib/dev/acpica/psxface.c index 00248b1..acbb3e8 100644 --- a/sys/contrib/dev/acpica/psxface.c +++ b/sys/contrib/dev/acpica/psxface.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psxface - Parser external interfaces - * $Revision: 40 $ + * $Revision: 44 $ * *****************************************************************************/ @@ -124,7 +124,7 @@ #include "acnamesp.h" -#define _COMPONENT PARSER +#define _COMPONENT ACPI_PARSER MODULE_NAME ("psxface") @@ -176,7 +176,7 @@ AcpiPsxExecute ( /* Init for new method, wait on concurrency semaphore */ - Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc); + Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc, NULL); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -191,7 +191,7 @@ AcpiPsxExecute ( for (i = 0; Params[i]; i++) { - AcpiCmAddReference (Params[i]); + AcpiUtAddReference (Params[i]); } } @@ -200,8 +200,8 @@ AcpiPsxExecute ( * named objects that it creates into the namespace */ - DEBUG_PRINT (ACPI_INFO, - ("PsxExecute: **** Begin Method Execution **** Entry=%p obj=%p\n", + DEBUG_PRINTP (ACPI_INFO, + ("**** Begin Method Execution **** Entry=%p obj=%p\n", MethodNode, ObjDesc)); /* Create and init a Root Node */ @@ -249,7 +249,7 @@ AcpiPsxExecute ( for (i = 0; Params[i]; i++) { - AcpiCmUpdateObjectReference (Params[i], REF_DECREMENT); + AcpiUtUpdateObjectReference (Params[i], REF_DECREMENT); } } @@ -262,7 +262,7 @@ AcpiPsxExecute ( if (*ReturnObjDesc) { - DEBUG_PRINT (ACPI_INFO, ("Method returned ObjDesc=%X\n", + DEBUG_PRINTP (ACPI_INFO, ("Method returned ObjDesc=%X\n", *ReturnObjDesc)); DUMP_STACK_ENTRY (*ReturnObjDesc); diff --git a/sys/contrib/dev/acpica/rsaddr.c b/sys/contrib/dev/acpica/rsaddr.c index 546ff9b..61bc590 100644 --- a/sys/contrib/dev/acpica/rsaddr.c +++ b/sys/contrib/dev/acpica/rsaddr.c @@ -1,10 +1,7 @@ /******************************************************************************* * - * Module Name: rsaddr - AcpiRsAddress16Resource - * AcpiRsAddress16Stream - * AcpiRsAddress32Resource - * AcpiRsAddress32Stream - * $Revision: 14 $ + * Module Name: rsaddr - Address resource descriptors (16/32/64) + * $Revision: 18 $ * ******************************************************************************/ @@ -122,7 +119,7 @@ #include "acpi.h" #include "acresrc.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rsaddr") @@ -131,20 +128,20 @@ * FUNCTION: AcpiRsAddress16Resource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -156,12 +153,12 @@ AcpiRsAddress16Resource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; + NATIVE_CHAR *TempPtr; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS16); + UINT32 Index; UINT16 Temp16; UINT8 Temp8; - UINT32 Index; - UINT32 StructSize = sizeof(ADDRESS16_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; FUNCTION_TRACE ("RsAddress16Resource"); @@ -170,14 +167,10 @@ AcpiRsAddress16Resource ( * Point past the Descriptor to get the number of bytes consumed */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); *BytesConsumed = Temp16 + 3; - - OutputStruct->Id = Address16; - - OutputStruct->Length = StructSize; + OutputStruct->Id = ACPI_RSTYPE_ADDRESS16; /* * Get the Resource Type (Byte3) @@ -188,7 +181,7 @@ AcpiRsAddress16Resource ( /* Values 0-2 are valid */ if (Temp8 > 2) { - return_ACPI_STATUS (AE_AML_ERROR); + return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); } OutputStruct->Data.Address16.ResourceType = Temp8 & 0x03; @@ -243,7 +236,7 @@ AcpiRsAddress16Resource ( else { - /* BUS_NUMBER_RANGE == Address32Data->ResourceType */ + /* BUS_NUMBER_RANGE == Address16.Data->ResourceType */ /* Nothing needs to be filled in */ } } @@ -266,25 +259,22 @@ AcpiRsAddress16Resource ( * Get MaxAddressRange (Bytes 10-11) */ Buffer += 2; - MOVE_UNALIGNED16_TO_16 - (&OutputStruct->Data.Address16.MaxAddressRange, - Buffer); + MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.MaxAddressRange, + Buffer); /* * Get AddressTranslationOffset (Bytes 12-13) */ Buffer += 2; - MOVE_UNALIGNED16_TO_16 - (&OutputStruct->Data.Address16.AddressTranslationOffset, - Buffer); + MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.AddressTranslationOffset, + Buffer); /* * Get AddressLength (Bytes 14-15) */ Buffer += 2; - MOVE_UNALIGNED16_TO_16 - (&OutputStruct->Data.Address16.AddressLength, - Buffer); + MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.AddressLength, + Buffer); /* * Resource Source Index (if present) @@ -293,32 +283,38 @@ AcpiRsAddress16Resource ( /* * This will leave us pointing to the Resource Source Index - * If it is present, then save it off and calculate the - * pointer to where the null terminated string goes: - * Each Interrupt takes 32-bits + the 5 bytes of the - * stream that are default. + * If it is present, then save it off and calculate the + * pointer to where the null terminated string goes: + * Each Interrupt takes 32-bits + the 5 bytes of the + * stream that are default. */ if (*BytesConsumed > 16) { /* Dereference the Index */ Temp8 = *Buffer; - OutputStruct->Data.Address16.ResourceSourceIndex = - (UINT32) Temp8; + OutputStruct->Data.Address16.ResourceSource.Index = (UINT32) Temp8; /* Point to the String */ Buffer += 1; + /* Point the String pointer to the end of this structure */ + + OutputStruct->Data.Address16.ResourceSource.StringPtr = + (NATIVE_CHAR *)((UINT8 * )OutputStruct + StructSize); + + TempPtr = OutputStruct->Data.Address16.ResourceSource.StringPtr; + /* Copy the string into the buffer */ Index = 0; while (0x00 != *Buffer) { - OutputStruct->Data.Address16.ResourceSource[Index] = - *Buffer; + *TempPtr = *Buffer; + TempPtr += 1; Buffer += 1; Index += 1; } @@ -326,32 +322,35 @@ AcpiRsAddress16Resource ( /* * Add the terminating null */ - OutputStruct->Data.Address16.ResourceSource[Index] = 0x00; + *TempPtr = 0x00; - OutputStruct->Data.Address16.ResourceSourceStringLength = - Index + 1; + OutputStruct->Data.Address16.ResourceSource.StringLength = Index + 1; /* - * In order for the StructSize to fall on a 32-bit boundry, - * calculate the length of the string and expand the - * StructSize to the next 32-bit boundry. + * In order for the StructSize to fall on a 32-bit boundary, + * calculate the length of the string and expand the + * StructSize to the next 32-bit boundary. */ Temp8 = (UINT8) (Index + 1); StructSize += ROUND_UP_TO_32BITS (Temp8); - OutputStruct->Length = StructSize; } + else { - OutputStruct->Data.Address16.ResourceSourceIndex = 0x00; - OutputStruct->Data.Address16.ResourceSourceStringLength = 0; - OutputStruct->Data.Address16.ResourceSource[0] = 0x00; + OutputStruct->Data.Address16.ResourceSource.Index = 0x00; + OutputStruct->Data.Address16.ResourceSource.StringLength = 0; + OutputStruct->Data.Address16.ResourceSource.StringPtr = NULL; } /* + * Set the Length parameter + */ + OutputStruct->Length = StructSize; + + /* * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -363,19 +362,19 @@ AcpiRsAddress16Resource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsAddress16Stream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -388,6 +387,7 @@ AcpiRsAddress16Stream ( FUNCTION_TRACE ("RsAddress16Stream"); + /* * The descriptor field is static */ @@ -449,43 +449,43 @@ AcpiRsAddress16Stream ( * Set the address space granularity */ MOVE_UNALIGNED16_TO_16 (Buffer, - &LinkedList->Data.Address16.Granularity); + &LinkedList->Data.Address16.Granularity); Buffer += 2; /* * Set the address range minimum */ MOVE_UNALIGNED16_TO_16 (Buffer, - &LinkedList->Data.Address16.MinAddressRange); + &LinkedList->Data.Address16.MinAddressRange); Buffer += 2; /* * Set the address range maximum */ MOVE_UNALIGNED16_TO_16 (Buffer, - &LinkedList->Data.Address16.MaxAddressRange); + &LinkedList->Data.Address16.MaxAddressRange); Buffer += 2; /* * Set the address translation offset */ MOVE_UNALIGNED16_TO_16 (Buffer, - &LinkedList->Data.Address16.AddressTranslationOffset); + &LinkedList->Data.Address16.AddressTranslationOffset); Buffer += 2; /* * Set the address length */ MOVE_UNALIGNED16_TO_16 (Buffer, - &LinkedList->Data.Address16.AddressLength); + &LinkedList->Data.Address16.AddressLength); Buffer += 2; /* * Resource Source Index and Resource Source are optional */ - if (0 != LinkedList->Data.Address16.ResourceSourceStringLength) + if (0 != LinkedList->Data.Address16.ResourceSource.StringLength) { - Temp8 = (UINT8) LinkedList->Data.Address16.ResourceSourceIndex; + Temp8 = (UINT8) LinkedList->Data.Address16.ResourceSource.Index; *Buffer = Temp8; Buffer += 1; @@ -495,21 +495,21 @@ AcpiRsAddress16Stream ( /* * Copy the string */ - STRCPY (TempPointer, LinkedList->Data.Address16.ResourceSource); + STRCPY (TempPointer, + LinkedList->Data.Address16.ResourceSource.StringPtr); /* * Buffer needs to be set to the length of the sting + one for the * terminating null */ - Buffer += (STRLEN (LinkedList->Data.Address16.ResourceSource) + 1); + Buffer += (STRLEN (LinkedList->Data.Address16.ResourceSource.StringPtr) + + 1); } /* * Return the number of bytes consumed in this operation */ - ActualBytes = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + ActualBytes = POINTER_DIFF (Buffer, *OutputBuffer); *BytesConsumed = ActualBytes; /* @@ -518,7 +518,6 @@ AcpiRsAddress16Stream ( */ ActualBytes -= 3; MOVE_UNALIGNED16_TO_16 (LengthField, &ActualBytes); - return_ACPI_STATUS (AE_OK); } @@ -528,20 +527,20 @@ AcpiRsAddress16Stream ( * FUNCTION: AcpiRsAddress32Resource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -553,21 +552,21 @@ AcpiRsAddress32Resource ( UINT32 *StructureSize) { UINT8 *Buffer; - RESOURCE *OutputStruct; + ACPI_RESOURCE *OutputStruct; UINT16 Temp16; UINT8 Temp8; + NATIVE_CHAR *TempPtr; UINT32 StructSize; UINT32 Index; FUNCTION_TRACE ("RsAddress32Resource"); - Buffer = ByteStreamBuffer; - OutputStruct = (RESOURCE *) *OutputBuffer; + Buffer = ByteStreamBuffer; + OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; - StructSize = sizeof (ADDRESS32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS32); /* * Point past the Descriptor to get the number of bytes consumed @@ -577,7 +576,7 @@ AcpiRsAddress32Resource ( *BytesConsumed = Temp16 + 3; - OutputStruct->Id = Address32; + OutputStruct->Id = ACPI_RSTYPE_ADDRESS32; /* * Get the Resource Type (Byte3) @@ -588,7 +587,7 @@ AcpiRsAddress32Resource ( /* Values 0-2 are valid */ if(Temp8 > 2) { - return_ACPI_STATUS (AE_AML_ERROR); + return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); } OutputStruct->Data.Address32.ResourceType = Temp8 & 0x03; @@ -674,9 +673,8 @@ AcpiRsAddress32Resource ( * Get AddressTranslationOffset (Bytes 18-21) */ Buffer += 4; - MOVE_UNALIGNED32_TO_32 - (&OutputStruct->Data.Address32.AddressTranslationOffset, - Buffer); + MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.AddressTranslationOffset, + Buffer); /* * Get AddressLength (Bytes 22-25) @@ -692,29 +690,37 @@ AcpiRsAddress32Resource ( /* * This will leave us pointing to the Resource Source Index - * If it is present, then save it off and calculate the - * pointer to where the null terminated string goes: - * Each Interrupt takes 32-bits + the 5 bytes of the - * stream that are default. + * If it is present, then save it off and calculate the + * pointer to where the null terminated string goes: */ if (*BytesConsumed > 26) { /* Dereference the Index */ Temp8 = *Buffer; - OutputStruct->Data.Address32.ResourceSourceIndex = (UINT32)Temp8; + OutputStruct->Data.Address32.ResourceSource.Index = + (UINT32) Temp8; /* Point to the String */ Buffer += 1; + /* Point the String pointer to the end of this structure */ + + OutputStruct->Data.Address32.ResourceSource.StringPtr = + (NATIVE_CHAR *)((UINT8 *)OutputStruct + StructSize); + + TempPtr = OutputStruct->Data.Address32.ResourceSource.StringPtr; + /* Copy the string into the buffer */ Index = 0; while (0x00 != *Buffer) { - OutputStruct->Data.Address32.ResourceSource[Index] = *Buffer; + *TempPtr = *Buffer; + + TempPtr += 1; Buffer += 1; Index += 1; } @@ -722,14 +728,13 @@ AcpiRsAddress32Resource ( /* * Add the terminating null */ - OutputStruct->Data.Address32.ResourceSource[Index] = 0x00; - - OutputStruct->Data.Address32.ResourceSourceStringLength = Index + 1; + *TempPtr = 0x00; + OutputStruct->Data.Address32.ResourceSource.StringLength = Index + 1; /* - * In order for the StructSize to fall on a 32-bit boundry, + * In order for the StructSize to fall on a 32-bit boundary, * calculate the length of the string and expand the - * StructSize to the next 32-bit boundry. + * StructSize to the next 32-bit boundary. */ Temp8 = (UINT8) (Index + 1); StructSize += ROUND_UP_TO_32BITS (Temp8); @@ -737,9 +742,9 @@ AcpiRsAddress32Resource ( else { - OutputStruct->Data.Address32.ResourceSourceIndex = 0x00; - OutputStruct->Data.Address32.ResourceSourceStringLength = 0; - OutputStruct->Data.Address32.ResourceSource[0] = 0x00; + OutputStruct->Data.Address32.ResourceSource.Index = 0x00; + OutputStruct->Data.Address32.ResourceSource.StringLength = 0; + OutputStruct->Data.Address32.ResourceSource.StringPtr = NULL; } /* @@ -751,7 +756,6 @@ AcpiRsAddress32Resource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -763,19 +767,19 @@ AcpiRsAddress32Resource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsAddress32Stream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -787,6 +791,7 @@ AcpiRsAddress32Stream ( FUNCTION_TRACE ("RsAddress32Stream"); + Buffer = *OutputBuffer; /* @@ -799,7 +804,7 @@ AcpiRsAddress32Stream ( * Set a pointer to the Length field - to be filled in later */ - LengthField = (UINT16 *)Buffer; + LengthField = (UINT16 *) Buffer; Buffer += 2; /* @@ -851,21 +856,21 @@ AcpiRsAddress32Stream ( * Set the address space granularity */ MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.Address32.Granularity); + &LinkedList->Data.Address32.Granularity); Buffer += 4; /* * Set the address range minimum */ MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.Address32.MinAddressRange); + &LinkedList->Data.Address32.MinAddressRange); Buffer += 4; /* * Set the address range maximum */ MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.Address32.MaxAddressRange); + &LinkedList->Data.Address32.MaxAddressRange); Buffer += 4; /* @@ -879,15 +884,15 @@ AcpiRsAddress32Stream ( * Set the address length */ MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.Address32.AddressLength); + &LinkedList->Data.Address32.AddressLength); Buffer += 4; /* * Resource Source Index and Resource Source are optional */ - if (0 != LinkedList->Data.Address32.ResourceSourceStringLength) + if (0 != LinkedList->Data.Address32.ResourceSource.StringLength) { - Temp8 = (UINT8) LinkedList->Data.Address32.ResourceSourceIndex; + Temp8 = (UINT8) LinkedList->Data.Address32.ResourceSource.Index; *Buffer = Temp8; Buffer += 1; @@ -897,27 +902,431 @@ AcpiRsAddress32Stream ( /* * Copy the string */ - STRCPY (TempPointer, LinkedList->Data.Address32.ResourceSource); + STRCPY (TempPointer, + LinkedList->Data.Address32.ResourceSource.StringPtr); /* * Buffer needs to be set to the length of the sting + one for the * terminating null */ - Buffer += (STRLEN (LinkedList->Data.Address32.ResourceSource) + 1); + Buffer += (STRLEN (LinkedList->Data.Address32.ResourceSource.StringPtr) + 1); } /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); /* * Set the length field to the number of bytes consumed * minus the header size (3 bytes) */ *LengthField = (UINT16) (*BytesConsumed - 3); + return_ACPI_STATUS (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiRsAddress64Resource + * + * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte + * stream + * BytesConsumed - UINT32 pointer that is filled with + * the number of bytes consumed from + * the ByteStreamBuffer + * OutputBuffer - Pointer to the user's return buffer + * StructureSize - UINT32 pointer that is filled with + * the number of bytes in the filled + * in structure + * + * RETURN: Status + * + * DESCRIPTION: Take the resource byte stream and fill out the appropriate + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiRsAddress64Resource ( + UINT8 *ByteStreamBuffer, + UINT32 *BytesConsumed, + UINT8 **OutputBuffer, + UINT32 *StructureSize) +{ + UINT8 *Buffer; + ACPI_RESOURCE *OutputStruct; + UINT16 Temp16; + UINT8 Temp8; + NATIVE_CHAR *TempPtr; + UINT32 StructSize; + UINT32 Index; + + + FUNCTION_TRACE ("RsAddress64Resource"); + + + Buffer = ByteStreamBuffer; + OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; + + StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS64); + + /* + * Point past the Descriptor to get the number of bytes consumed + */ + Buffer += 1; + MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + + *BytesConsumed = Temp16 + 3; + OutputStruct->Id = ACPI_RSTYPE_ADDRESS64; + + /* + * Get the Resource Type (Byte3) + */ + Buffer += 2; + Temp8 = *Buffer; + + /* Values 0-2 are valid */ + if(Temp8 > 2) + { + return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); + } + + OutputStruct->Data.Address64.ResourceType = Temp8 & 0x03; + + /* + * Get the General Flags (Byte4) + */ + Buffer += 1; + Temp8 = *Buffer; + + /* + * Producer / Consumer + */ + OutputStruct->Data.Address64.ProducerConsumer = Temp8 & 0x01; + + /* + * Decode + */ + OutputStruct->Data.Address64.Decode = (Temp8 >> 1) & 0x01; + + /* + * Min Address Fixed + */ + OutputStruct->Data.Address64.MinAddressFixed = (Temp8 >> 2) & 0x01; + + /* + * Max Address Fixed + */ + OutputStruct->Data.Address64.MaxAddressFixed = (Temp8 >> 3) & 0x01; + + /* + * Get the Type Specific Flags (Byte5) + */ + Buffer += 1; + Temp8 = *Buffer; + + if (MEMORY_RANGE == OutputStruct->Data.Address64.ResourceType) + { + OutputStruct->Data.Address64.Attribute.Memory.ReadWriteAttribute = + (UINT16) (Temp8 & 0x01); + + OutputStruct->Data.Address64.Attribute.Memory.CacheAttribute = + (UINT16) ((Temp8 >> 1) & 0x0F); + } + + else + { + if (IO_RANGE == OutputStruct->Data.Address64.ResourceType) + { + OutputStruct->Data.Address64.Attribute.Io.RangeAttribute = + (UINT16) (Temp8 & 0x03); + } + + else + { + /* BUS_NUMBER_RANGE == OutputStruct->Data.Address64.ResourceType */ + /* Nothing needs to be filled in */ + } + } + + /* + * Get Granularity (Bytes 6-13) + */ + Buffer += 1; + MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.Granularity, + Buffer); + + /* + * Get MinAddressRange (Bytes 14-21) + */ + Buffer += 8; + MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.MinAddressRange, + Buffer); + + /* + * Get MaxAddressRange (Bytes 22-29) + */ + Buffer += 8; + MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.MaxAddressRange, + Buffer); + + /* + * Get AddressTranslationOffset (Bytes 30-37) + */ + Buffer += 8; + MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.AddressTranslationOffset, + Buffer); + + /* + * Get AddressLength (Bytes 38-45) + */ + Buffer += 8; + MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.AddressLength, + Buffer); + + /* + * Resource Source Index (if present) + */ + Buffer += 8; + + /* + * This will leave us pointing to the Resource Source Index + * If it is present, then save it off and calculate the + * pointer to where the null terminated string goes: + * Each Interrupt takes 32-bits + the 5 bytes of the + * stream that are default. + */ + if (*BytesConsumed > 46) + { + /* Dereference the Index */ + + Temp8 = *Buffer; + OutputStruct->Data.Address64.ResourceSource.Index = + (UINT32) Temp8; + + /* Point to the String */ + + Buffer += 1; + + /* Point the String pointer to the end of this structure */ + + OutputStruct->Data.Address64.ResourceSource.StringPtr = + (NATIVE_CHAR *)((UINT8 *)OutputStruct + StructSize); + + TempPtr = OutputStruct->Data.Address64.ResourceSource.StringPtr; + + /* Copy the string into the buffer */ + + Index = 0; + + while (0x00 != *Buffer) + { + *TempPtr = *Buffer; + + TempPtr += 1; + Buffer += 1; + Index += 1; + } + + /* + * Add the terminating null + */ + *TempPtr = 0x00; + + OutputStruct->Data.Address64.ResourceSource.StringLength = Index + 1; + + /* + * In order for the StructSize to fall on a 32-bit boundary, + * calculate the length of the string and expand the + * StructSize to the next 32-bit boundary. + */ + Temp8 = (UINT8) (Index + 1); + StructSize += ROUND_UP_TO_32BITS (Temp8); + } + + else + { + OutputStruct->Data.Address64.ResourceSource.Index = 0x00; + OutputStruct->Data.Address64.ResourceSource.StringLength = 0; + OutputStruct->Data.Address64.ResourceSource.StringPtr = NULL; + } + + /* + * Set the Length parameter + */ + OutputStruct->Length = StructSize; + + /* + * Return the final size of the structure + */ + *StructureSize = StructSize; + return_ACPI_STATUS (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiRsAddress64Stream + * + * PARAMETERS: LinkedList - Pointer to the resource linked list + * OutputBuffer - Pointer to the user's return buffer + * BytesConsumed - UINT32 pointer that is filled with + * the number of bytes of the + * OutputBuffer used + * + * RETURN: Status + * + * DESCRIPTION: Take the linked list resource structure and fills in the + * the appropriate bytes in a byte stream + * + ******************************************************************************/ + +ACPI_STATUS +AcpiRsAddress64Stream ( + ACPI_RESOURCE *LinkedList, + UINT8 **OutputBuffer, + UINT32 *BytesConsumed) +{ + UINT8 *Buffer; + UINT16 *LengthField; + UINT8 Temp8; + NATIVE_CHAR *TempPointer; + + + FUNCTION_TRACE ("RsAddress64Stream"); + + + Buffer = *OutputBuffer; + + /* + * The descriptor field is static + */ + *Buffer = 0x8A; + Buffer += 1; + + /* + * Set a pointer to the Length field - to be filled in later + */ + + LengthField = (UINT16 *)Buffer; + Buffer += 2; + /* + * Set the Resource Type (Memory, Io, BusNumber) + */ + Temp8 = (UINT8) (LinkedList->Data.Address64.ResourceType & 0x03); + + *Buffer = Temp8; + Buffer += 1; + + /* + * Set the general flags + */ + Temp8 = (UINT8) (LinkedList->Data.Address64.ProducerConsumer & 0x01); + Temp8 |= (LinkedList->Data.Address64.Decode & 0x01) << 1; + Temp8 |= (LinkedList->Data.Address64.MinAddressFixed & 0x01) << 2; + Temp8 |= (LinkedList->Data.Address64.MaxAddressFixed & 0x01) << 3; + + *Buffer = Temp8; + Buffer += 1; + + /* + * Set the type specific flags + */ + Temp8 = 0; + + if(MEMORY_RANGE == LinkedList->Data.Address64.ResourceType) + { + Temp8 = (UINT8) + (LinkedList->Data.Address64.Attribute.Memory.ReadWriteAttribute & + 0x01); + + Temp8 |= + (LinkedList->Data.Address64.Attribute.Memory.CacheAttribute & + 0x0F) << 1; + } + + else if (IO_RANGE == LinkedList->Data.Address64.ResourceType) + { + Temp8 = (UINT8) + (LinkedList->Data.Address64.Attribute.Io.RangeAttribute & + 0x03); + } + + *Buffer = Temp8; + Buffer += 1; + + /* + * Set the address space granularity + */ + MOVE_UNALIGNED64_TO_64 (Buffer, + &LinkedList->Data.Address64.Granularity); + Buffer += 8; + + /* + * Set the address range minimum + */ + MOVE_UNALIGNED64_TO_64 (Buffer, + &LinkedList->Data.Address64.MinAddressRange); + Buffer += 8; + + /* + * Set the address range maximum + */ + MOVE_UNALIGNED64_TO_64 (Buffer, + &LinkedList->Data.Address64.MaxAddressRange); + Buffer += 8; + + /* + * Set the address translation offset + */ + MOVE_UNALIGNED64_TO_64 (Buffer, + &LinkedList->Data.Address64.AddressTranslationOffset); + Buffer += 8; + + /* + * Set the address length + */ + MOVE_UNALIGNED64_TO_64 (Buffer, + &LinkedList->Data.Address64.AddressLength); + Buffer += 8; + + /* + * Resource Source Index and Resource Source are optional + */ + if (0 != LinkedList->Data.Address64.ResourceSource.StringLength) + { + Temp8 = (UINT8) LinkedList->Data.Address64.ResourceSource.Index; + + *Buffer = Temp8; + Buffer += 1; + + TempPointer = (NATIVE_CHAR *) Buffer; + + /* + * Copy the string + */ + STRCPY (TempPointer, LinkedList->Data.Address64.ResourceSource.StringPtr); + + /* + * Buffer needs to be set to the length of the sting + one for the + * terminating null + */ + Buffer += (STRLEN (LinkedList->Data.Address64.ResourceSource.StringPtr) + 1); + } + + /* + * Return the number of bytes consumed in this operation + */ + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + + /* + * Set the length field to the number of bytes consumed + * minus the header size (3 bytes) + */ + *LengthField = (UINT16) (*BytesConsumed - 3); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rscalc.c b/sys/contrib/dev/acpica/rscalc.c index 2f03cf4..79832e3 100644 --- a/sys/contrib/dev/acpica/rscalc.c +++ b/sys/contrib/dev/acpica/rscalc.c @@ -1,8 +1,7 @@ /******************************************************************************* * - * Module Name: rscalc - AcpiRsCalculateByteStreamLength - * AcpiRsCalculateListLength - * $Revision: 21 $ + * Module Name: rscalc - Calculate stream and list lengths + * $Revision: 30 $ * ******************************************************************************/ @@ -122,7 +121,7 @@ #include "amlcode.h" #include "acnamesp.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rscalc") @@ -132,9 +131,9 @@ * * PARAMETERS: LinkedList - Pointer to the resource linked list * SizeNeeded - UINT32 pointer of the size buffer needed - * to properly return the parsed data + * to properly return the parsed data * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Takes the resource byte stream and parses it once, calculating * the size buffer needed to hold the linked list that conveys @@ -144,12 +143,12 @@ ACPI_STATUS AcpiRsCalculateByteStreamLength ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT32 *SizeNeeded) { UINT32 ByteStreamSizeNeeded = 0; UINT32 SegmentSize; - EXTENDED_IRQ_RESOURCE *ExIrq = NULL; + ACPI_RESOURCE_EXT_IRQ *ExIrq = NULL; BOOLEAN Done = FALSE; @@ -158,88 +157,72 @@ AcpiRsCalculateByteStreamLength ( while (!Done) { - /* - * Init the variable that will hold the size to add to the - * total. + * Init the variable that will hold the size to add to the total. */ SegmentSize = 0; switch (LinkedList->Id) { - case Irq: + case ACPI_RSTYPE_IRQ: /* * IRQ Resource - */ - /* * For an IRQ Resource, Byte 3, although optional, will - * always be created - it holds IRQ information. + * always be created - it holds IRQ information. */ SegmentSize = 4; break; - case Dma: + case ACPI_RSTYPE_DMA: /* * DMA Resource - */ - /* * For this resource the size is static */ SegmentSize = 3; break; - case StartDependentFunctions: + case ACPI_RSTYPE_START_DPF: /* * Start Dependent Functions Resource - */ - /* * For a StartDependentFunctions Resource, Byte 1, * although optional, will always be created. */ SegmentSize = 2; break; - case EndDependentFunctions: + case ACPI_RSTYPE_END_DPF: /* * End Dependent Functions Resource - */ - /* * For this resource the size is static */ SegmentSize = 1; break; - case Io: + case ACPI_RSTYPE_IO: /* * IO Port Resource - */ - /* * For this resource the size is static */ SegmentSize = 8; break; - case FixedIo: + case ACPI_RSTYPE_FIXED_IO: /* * Fixed IO Port Resource - */ - /* * For this resource the size is static */ SegmentSize = 4; break; - case VendorSpecific: + case ACPI_RSTYPE_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. + * between 1 and 7 it will be created as a Small + * Resource data type, otherwise it is a Large + * Resource data type. */ - if(LinkedList->Data.VendorSpecific.Length > 7) + if (LinkedList->Data.VendorSpecific.Length > 7) { SegmentSize = 3; } @@ -247,120 +230,119 @@ AcpiRsCalculateByteStreamLength ( { SegmentSize = 1; } - SegmentSize += - LinkedList->Data.VendorSpecific.Length; + SegmentSize += LinkedList->Data.VendorSpecific.Length; break; - case EndTag: + case ACPI_RSTYPE_END_TAG: /* * End Tag - */ - /* * For this resource the size is static */ SegmentSize = 2; Done = TRUE; break; - case Memory24: + case ACPI_RSTYPE_MEM24: /* * 24-Bit Memory Resource - */ - /* * For this resource the size is static */ SegmentSize = 12; break; - case Memory32: + case ACPI_RSTYPE_MEM32: /* * 32-Bit Memory Range Resource - */ - /* * For this resource the size is static */ SegmentSize = 20; break; - case FixedMemory32: + case ACPI_RSTYPE_FIXED_MEM32: /* * 32-Bit Fixed Memory Resource - */ - /* * For this resource the size is static */ SegmentSize = 12; break; - case Address16: + case ACPI_RSTYPE_ADDRESS16: /* * 16-Bit Address Resource - */ - /* * The base size of this byte stream is 16. If a - * Resource Source string is not NULL, add 1 for - * the Index + the length of the null terminated - * string Resource Source + 1 for the null. + * Resource Source string is not NULL, add 1 for + * the Index + the length of the null terminated + * string Resource Source + 1 for the null. */ SegmentSize = 16; - if(NULL != LinkedList->Data.Address16.ResourceSource) + if (NULL != LinkedList->Data.Address16.ResourceSource.StringPtr) { SegmentSize += (1 + - LinkedList->Data.Address16.ResourceSourceStringLength); + LinkedList->Data.Address16.ResourceSource.StringLength); } break; - case Address32: + case ACPI_RSTYPE_ADDRESS32: /* * 32-Bit Address Resource - */ - /* * The base size of this byte stream is 26. If a Resource - * Source string is not NULL, add 1 for the Index + the - * length of the null terminated string Resource Source + - * 1 for the null. + * Source string is not NULL, add 1 for the Index + the + * length of the null terminated string Resource Source + + * 1 for the null. */ SegmentSize = 26; - if(NULL != LinkedList->Data.Address16.ResourceSource) + if (NULL != LinkedList->Data.Address32.ResourceSource.StringPtr) { SegmentSize += (1 + - LinkedList->Data.Address16.ResourceSourceStringLength); + LinkedList->Data.Address32.ResourceSource.StringLength); } break; - case ExtendedIrq: + case ACPI_RSTYPE_ADDRESS64: /* - * Extended IRQ Resource + * 64-Bit Address Resource + * The base size of this byte stream is 46. If a Resource + * Source string is not NULL, add 1 for the Index + the + * length of the null terminated string Resource Source + + * 1 for the null. */ + SegmentSize = 46; + + if (NULL != LinkedList->Data.Address64.ResourceSource.StringPtr) + { + SegmentSize += (1 + + LinkedList->Data.Address64.ResourceSource.StringLength); + } + break; + + case ACPI_RSTYPE_EXT_IRQ: /* + * Extended IRQ Resource * The base size of this byte stream is 9. This is for an - * Interrupt table length of 1. For each additional - * interrupt, add 4. + * Interrupt table length of 1. For each additional + * interrupt, add 4. * If a Resource Source string is not NULL, add 1 for the - * Index + the length of the null terminated string - * Resource Source + 1 for the null. + * Index + the length of the null terminated string + * Resource Source + 1 for the null. */ - SegmentSize = 9; + SegmentSize = 9 + + ((LinkedList->Data.ExtendedIrq.NumberOfInterrupts - 1) * 4); - SegmentSize += - (LinkedList->Data.ExtendedIrq.NumberOfInterrupts - - 1) * 4; - - if(NULL != ExIrq->ResourceSource) + if (NULL != ExIrq->ResourceSource.StringPtr) { SegmentSize += (1 + - LinkedList->Data.ExtendedIrq.ResourceSourceStringLength); + LinkedList->Data.ExtendedIrq.ResourceSource.StringLength); } break; default: /* * If we get here, everything is out of sync, - * so exit with an error + * so exit with an error */ - return_ACPI_STATUS (AE_AML_ERROR); + return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); break; } /* switch (LinkedList->Id) */ @@ -373,15 +355,14 @@ AcpiRsCalculateByteStreamLength ( /* * Point to the next object */ - LinkedList = (RESOURCE *) ((NATIVE_UINT) LinkedList + - (NATIVE_UINT) LinkedList->Length); + LinkedList = POINTER_ADD (ACPI_RESOURCE, + LinkedList, LinkedList->Length); } /* * This is the data the caller needs */ *SizeNeeded = ByteStreamSizeNeeded; - return_ACPI_STATUS (AE_OK); } @@ -393,10 +374,10 @@ AcpiRsCalculateByteStreamLength ( * PARAMETERS: ByteStreamBuffer - Pointer to the resource byte stream * ByteStreamBufferLength - Size of ByteStreamBuffer * SizeNeeded - UINT32 pointer of the size buffer - * needed to properly return the - * parsed data + * needed to properly return the + * parsed data * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Takes the resource byte stream and parses it once, calculating * the size buffer needed to hold the linked list that conveys @@ -430,418 +411,400 @@ AcpiRsCalculateListLength ( while (BytesParsed < ByteStreamBufferLength) { /* - * Look at the next byte in the stream + * The next byte in the stream is the resource type */ - ResourceType = *ByteStreamBuffer; + ResourceType = AcpiRsGetResourceType (*ByteStreamBuffer); - /* - * See if this is a small or large resource - */ - if(ResourceType & 0x80) + switch (ResourceType) { + case RESOURCE_DESC_MEMORY_24: /* - * Large Resource Type + * 24-Bit Memory Resource */ - switch (ResourceType) - { - case MEMORY_RANGE_24: - /* - * 24-Bit Memory Resource - */ - BytesConsumed = 12; + BytesConsumed = 12; - StructureSize = sizeof (MEMORY24_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_MEM24); + break; - case LARGE_VENDOR_DEFINED: - /* - * Vendor Defined Resource - */ - Buffer = ByteStreamBuffer; - ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - BytesConsumed = Temp16 + 3; + case RESOURCE_DESC_LARGE_VENDOR: + /* + * Vendor Defined Resource + */ + Buffer = ByteStreamBuffer; + ++Buffer; - /* - * Ensure a 32-bit boundary for the structure - */ - Temp16 = (UINT16) ROUND_UP_TO_32BITS (Temp16); + MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + BytesConsumed = Temp16 + 3; - StructureSize = sizeof (VENDOR_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + + /* + * Ensure a 32-bit boundary for the structure + */ + Temp16 = (UINT16) ROUND_UP_TO_32BITS (Temp16); + + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_VENDOR) + (Temp16 * sizeof (UINT8)); - break; + break; - case MEMORY_RANGE_32: - /* - * 32-Bit Memory Range Resource - */ - BytesConsumed = 20; + case RESOURCE_DESC_MEMORY_32: + /* + * 32-Bit Memory Range Resource + */ - StructureSize = sizeof (MEMORY32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; + BytesConsumed = 20; - case FIXED_MEMORY_RANGE_32: - /* - * 32-Bit Fixed Memory Resource - */ - BytesConsumed = 12; + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_MEM32); + break; - StructureSize = sizeof(FIXED_MEMORY32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; - case DWORD_ADDRESS_SPACE: - /* - * 32-Bit Address Resource - */ - Buffer = ByteStreamBuffer; + case RESOURCE_DESC_FIXED_MEMORY_32: + /* + * 32-Bit Fixed Memory Resource + */ + BytesConsumed = 12; - ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_MEM32); + break; - BytesConsumed = Temp16 + 3; - /* - * Resource Source Index and Resource Source are - * optional elements. Check the length of the - * Bytestream. If it is greater than 23, that - * means that an Index exists and is followed by - * a null termininated string. Therefore, set - * the temp variable to the length minus the minimum - * byte stream length plus the byte for the Index to - * determine the size of the NULL terminiated string. - */ - if (23 < Temp16) - { - Temp8 = (UINT8) (Temp16 - 24); - } - else - { - Temp8 = 0; - } + case RESOURCE_DESC_QWORD_ADDRESS_SPACE: + /* + * 64-Bit Address Resource + */ + Buffer = ByteStreamBuffer; - /* - * Ensure a 32-bit boundary for the structure - */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); + ++Buffer; + MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - StructureSize = sizeof (ADDRESS32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (Temp8 * sizeof (UINT8)); - break; + BytesConsumed = Temp16 + 3; - case WORD_ADDRESS_SPACE: - /* - * 16-Bit Address Resource - */ - Buffer = ByteStreamBuffer; + /* + * Resource Source Index and Resource Source are + * optional elements. Check the length of the + * Bytestream. If it is greater than 43, that + * means that an Index exists and is followed by + * a null termininated string. Therefore, set + * the temp variable to the length minus the minimum + * byte stream length plus the byte for the Index to + * determine the size of the NULL terminiated string. + */ + if (43 < Temp16) + { + Temp8 = (UINT8) (Temp16 - 44); + } + else + { + Temp8 = 0; + } - ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + /* + * Ensure a 64-bit boundary for the structure + */ + Temp8 = (UINT8) ROUND_UP_TO_64BITS (Temp8); - BytesConsumed = Temp16 + 3; + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS64) + + (Temp8 * sizeof (UINT8)); + break; - /* - * Resource Source Index and Resource Source are - * optional elements. Check the length of the - * Bytestream. If it is greater than 13, that - * means that an Index exists and is followed by - * a null termininated string. Therefore, set - * the temp variable to the length minus the minimum - * byte stream length plus the byte for the Index to - * determine the size of the NULL terminiated string. - */ - if (13 < Temp16) - { - Temp8 = (UINT8) (Temp16 - 14); - } - else - { - Temp8 = 0; - } - /* - * Ensure a 32-bit boundry for the structure - */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); + case RESOURCE_DESC_DWORD_ADDRESS_SPACE: + /* + * 32-Bit Address Resource + */ + Buffer = ByteStreamBuffer; - StructureSize = sizeof (ADDRESS16_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (Temp8 * sizeof (UINT8)); - break; + ++Buffer; + MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - case EXTENDED_IRQ: - /* - * Extended IRQ - */ - Buffer = ByteStreamBuffer; + BytesConsumed = Temp16 + 3; - ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + /* + * Resource Source Index and Resource Source are + * optional elements. Check the length of the + * Bytestream. If it is greater than 23, that + * means that an Index exists and is followed by + * a null termininated string. Therefore, set + * the temp variable to the length minus the minimum + * byte stream length plus the byte for the Index to + * determine the size of the NULL terminiated string. + */ + if (23 < Temp16) + { + Temp8 = (UINT8) (Temp16 - 24); + } + else + { + Temp8 = 0; + } - BytesConsumed = Temp16 + 3; + /* + * Ensure a 32-bit boundary for the structure + */ + Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); - /* - * Point past the length field and the - * Interrupt vector flags to save off the - * Interrupt table length to the Temp8 variable. - */ - Buffer += 3; - Temp8 = *Buffer; + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS32) + + (Temp8 * sizeof (UINT8)); + break; - /* - * To compensate for multiple interrupt numbers, - * Add 4 bytes for each additional interrupts - * greater than 1 - */ - AdditionalBytes = (UINT8) ((Temp8 - 1) * 4); - /* - * Resource Source Index and Resource Source are - * optional elements. Check the length of the - * Bytestream. If it is greater than 9, that - * means that an Index exists and is followed by - * a null termininated string. Therefore, set - * the temp variable to the length minus the minimum - * byte stream length plus the byte for the Index to - * determine the size of the NULL terminiated string. - */ - if (9 + AdditionalBytes < Temp16) - { - Temp8 = (UINT8) (Temp16 - (9 + AdditionalBytes)); - } + case RESOURCE_DESC_WORD_ADDRESS_SPACE: + /* + * 16-Bit Address Resource + */ + Buffer = ByteStreamBuffer; - else - { - Temp8 = 0; - } + ++Buffer; + MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - /* - * Ensure a 32-bit boundry for the structure - */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); + BytesConsumed = Temp16 + 3; - StructureSize = sizeof (EXTENDED_IRQ_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (AdditionalBytes * sizeof (UINT8)) + - (Temp8 * sizeof (UINT8)); + /* + * Resource Source Index and Resource Source are + * optional elements. Check the length of the + * Bytestream. If it is greater than 13, that + * means that an Index exists and is followed by + * a null termininated string. Therefore, set + * the temp variable to the length minus the minimum + * byte stream length plus the byte for the Index to + * determine the size of the NULL terminiated string. + */ + if (13 < Temp16) + { + Temp8 = (UINT8) (Temp16 - 14); + } + else + { + Temp8 = 0; + } - break; + /* + * Ensure a 32-bit boundary for the structure + */ + Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); -/* TBD: [Future] 64-bit not currently supported */ -/* - case 0x8A: - break; -*/ + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS16) + + (Temp8 * sizeof (UINT8)); + break; - default: - /* - * If we get here, everything is out of sync, - * so exit with an error - */ - return_ACPI_STATUS (AE_AML_ERROR); - break; - } - } - else - { + case RESOURCE_DESC_EXTENDED_XRUPT: /* - * Small Resource Type - * Only bits 7:3 are valid + * Extended IRQ */ - ResourceType >>= 3; + Buffer = ByteStreamBuffer; - switch (ResourceType) - { - case IRQ_FORMAT: - /* - * IRQ Resource - */ - /* - * Determine if it there are two or three - * trailing bytes - */ - Buffer = ByteStreamBuffer; - Temp8 = *Buffer; + ++Buffer; + MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - if(Temp8 & 0x01) - { - BytesConsumed = 4; - } + BytesConsumed = Temp16 + 3; - else - { - BytesConsumed = 3; - } + /* + * Point past the length field and the + * Interrupt vector flags to save off the + * Interrupt table length to the Temp8 variable. + */ + Buffer += 3; + Temp8 = *Buffer; - /* - * Point past the descriptor - */ - ++Buffer; + /* + * To compensate for multiple interrupt numbers, add 4 bytes for + * each additional interrupts greater than 1 + */ + AdditionalBytes = (UINT8) ((Temp8 - 1) * 4); - /* - * Look at the number of bits set - */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + /* + * Resource Source Index and Resource Source are + * optional elements. Check the length of the + * Bytestream. If it is greater than 9, that + * means that an Index exists and is followed by + * a null termininated string. Therefore, set + * the temp variable to the length minus the minimum + * byte stream length plus the byte for the Index to + * determine the size of the NULL terminiated string. + */ + if (9 + AdditionalBytes < Temp16) + { + Temp8 = (UINT8) (Temp16 - (9 + AdditionalBytes)); + } - for (Index = 0; Index < 16; Index++) - { - if (Temp16 & 0x1) - { - ++NumberOfInterrupts; - } + else + { + Temp8 = 0; + } - Temp16 >>= 1; - } + /* + * Ensure a 32-bit boundary for the structure + */ + Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); - StructureSize = sizeof (IO_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (NumberOfInterrupts * sizeof (UINT32)); - break; + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_EXT_IRQ) + + (AdditionalBytes * sizeof (UINT8)) + + (Temp8 * sizeof (UINT8)); + break; - case DMA_FORMAT: + case RESOURCE_DESC_IRQ_FORMAT: + /* + * IRQ Resource. + * Determine if it there are two or three trailing bytes + */ + Buffer = ByteStreamBuffer; + Temp8 = *Buffer; - /* - * DMA Resource - */ - Buffer = ByteStreamBuffer; + if(Temp8 & 0x01) + { + BytesConsumed = 4; + } + else + { BytesConsumed = 3; + } - /* - * Point past the descriptor - */ - ++Buffer; + /* + * Point past the descriptor + */ + ++Buffer; - /* - * Look at the number of bits set - */ - Temp8 = *Buffer; + /* + * Look at the number of bits set + */ + MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - for(Index = 0; Index < 8; Index++) + for (Index = 0; Index < 16; Index++) + { + if (Temp16 & 0x1) { - if(Temp8 & 0x1) - { - ++NumberOfChannels; - } - - Temp8 >>= 1; + ++NumberOfInterrupts; } - StructureSize = sizeof (DMA_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (NumberOfChannels * sizeof (UINT32)); - break; + Temp16 >>= 1; + } + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_IO) + + (NumberOfInterrupts * sizeof (UINT32)); + break; - case START_DEPENDENT_TAG: - /* - * Start Dependent Functions Resource - */ - /* - * Determine if it there are two or three trailing bytes - */ - Buffer = ByteStreamBuffer; - Temp8 = *Buffer; + case RESOURCE_DESC_DMA_FORMAT: + /* + * DMA Resource + */ + Buffer = ByteStreamBuffer; + BytesConsumed = 3; - if(Temp8 & 0x01) - { - BytesConsumed = 2; - } - else + /* + * Point past the descriptor + */ + ++Buffer; + + /* + * Look at the number of bits set + */ + Temp8 = *Buffer; + + for(Index = 0; Index < 8; Index++) + { + if(Temp8 & 0x1) { - BytesConsumed = 1; + ++NumberOfChannels; } + Temp8 >>= 1; + } - StructureSize = - sizeof (START_DEPENDENT_FUNCTIONS_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_DMA) + + (NumberOfChannels * sizeof (UINT32)); + break; - case END_DEPENDENT_TAG: + case RESOURCE_DESC_START_DEPENDENT: + /* + * Start Dependent Functions Resource + * Determine if it there are two or three trailing bytes + */ + Buffer = ByteStreamBuffer; + Temp8 = *Buffer; - /* - * End Dependent Functions Resource - */ + if(Temp8 & 0x01) + { + BytesConsumed = 2; + } + else + { BytesConsumed = 1; - StructureSize = RESOURCE_LENGTH; - break; - + } - case IO_PORT_DESCRIPTOR: - /* - * IO Port Resource - */ - BytesConsumed = 8; - StructureSize = sizeof (IO_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_START_DPF); + break; - case FIXED_LOCATION_IO_DESCRIPTOR: + case RESOURCE_DESC_END_DEPENDENT: + /* + * End Dependent Functions Resource + */ + BytesConsumed = 1; + StructureSize = ACPI_RESOURCE_LENGTH; + break; - /* - * Fixed IO Port Resource - */ - BytesConsumed = 4; - StructureSize = sizeof (FIXED_IO_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; + case RESOURCE_DESC_IO_PORT: + /* + * IO Port Resource + */ + BytesConsumed = 8; + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_IO); + break; - case SMALL_VENDOR_DEFINED: - /* - * Vendor Specific Resource - */ - Buffer = ByteStreamBuffer; + case RESOURCE_DESC_FIXED_IO_PORT: + /* + * Fixed IO Port Resource + */ + BytesConsumed = 4; + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_IO); + break; - Temp8 = *Buffer; - Temp8 = (UINT8) (Temp8 & 0x7); - BytesConsumed = Temp8 + 1; - /* - * Ensure a 32-bit boundry for the structure - */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); - StructureSize = sizeof (VENDOR_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (Temp8 * sizeof (UINT8)); - break; + case RESOURCE_DESC_SMALL_VENDOR: + /* + * Vendor Specific Resource + */ + Buffer = ByteStreamBuffer; + Temp8 = *Buffer; + Temp8 = (UINT8) (Temp8 & 0x7); + BytesConsumed = Temp8 + 1; - case END_TAG: + /* + * Ensure a 32-bit boundary for the structure + */ + Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); + StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_VENDOR) + + (Temp8 * sizeof (UINT8)); + break; - /* - * End Tag - */ - BytesConsumed = 2; - StructureSize = RESOURCE_LENGTH; - ByteStreamBufferLength = BytesParsed; - break; + case RESOURCE_DESC_END_TAG: + /* + * End Tag + */ + BytesConsumed = 2; + StructureSize = ACPI_RESOURCE_LENGTH; + ByteStreamBufferLength = BytesParsed; + break; - default: - /* - * If we get here, everything is out of sync, - * so exit with an error - */ - return_ACPI_STATUS (AE_AML_ERROR); - break; - } /* switch */ + default: + /* + * If we get here, everything is out of sync, + * so exit with an error + */ + return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); + break; + } - } /* if(ResourceType & 0x80) */ /* * Update the return value and counter @@ -853,14 +816,13 @@ AcpiRsCalculateListLength ( * Set the byte stream to point to the next resource */ ByteStreamBuffer += BytesConsumed; - } + /* * This is the data the caller needs */ *SizeNeeded = BufferSize; - return_ACPI_STATUS (AE_OK); } @@ -871,14 +833,14 @@ AcpiRsCalculateListLength ( * * PARAMETERS: PackageObject - Pointer to the package object * BufferSizeNeeded - UINT32 pointer of the size buffer - * needed to properly return the - * parsed data + * needed to properly return the + * parsed data * - * RETURN: Status AE_OK + * RETURN: Status * * DESCRIPTION: Given a package representing a PCI routing table, this - * calculates the size of the corresponding linked list of - * descriptions. + * calculates the size of the corresponding linked list of + * descriptions. * ******************************************************************************/ @@ -909,11 +871,6 @@ AcpiRsCalculatePciRoutingTableLength ( * The minus one is to subtract the size of the UINT8 Source[1] * member because it is added below. * - * NOTE: The NumberOfElements is incremented by one to add an end - * table structure that is essentially a structure of zeros. - */ - - /* * But each PRT_ENTRY structure has a pointer to a string and * the size of that string must be found. */ @@ -941,7 +898,7 @@ AcpiRsCalculatePciRoutingTableLength ( { if ((ACPI_TYPE_STRING == (*SubObjectList)->Common.Type) || ((INTERNAL_TYPE_REFERENCE == (*SubObjectList)->Common.Type) && - ((*SubObjectList)->Reference.OpCode == AML_NAMEPATH_OP))) + ((*SubObjectList)->Reference.Opcode == AML_INT_NAMEPATH_OP))) { NameFound = TRUE; } @@ -970,9 +927,11 @@ AcpiRsCalculatePciRoutingTableLength ( */ TempSizeNeeded += (*SubObjectList)->String.Length; } + else { - TempSizeNeeded += AcpiNsGetPathnameLength ((*SubObjectList)->Reference.Node); + TempSizeNeeded += AcpiNsGetPathnameLength ( + (*SubObjectList)->Reference.Node); } } @@ -980,12 +939,11 @@ AcpiRsCalculatePciRoutingTableLength ( { /* * If no name was found, then this is a NULL, which is - * translated as a UINT32 zero. + * translated as a UINT32 zero. */ - TempSizeNeeded += sizeof(UINT32); + TempSizeNeeded += sizeof (UINT32); } - /* Round up the size since each element must be aligned */ TempSizeNeeded = ROUND_UP_TO_64BITS (TempSizeNeeded); @@ -997,7 +955,9 @@ AcpiRsCalculatePciRoutingTableLength ( } - *BufferSizeNeeded = TempSizeNeeded; - + /* + * Adding an extra element to the end of the list, essentially a NULL terminator + */ + *BufferSizeNeeded = TempSizeNeeded + sizeof (PCI_ROUTING_TABLE); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rscreate.c b/sys/contrib/dev/acpica/rscreate.c index 73d60b8..140f823 100644 --- a/sys/contrib/dev/acpica/rscreate.c +++ b/sys/contrib/dev/acpica/rscreate.c @@ -1,9 +1,7 @@ /******************************************************************************* * - * Module Name: rscreate - AcpiRsCreateResourceList - * AcpiRsCreatePciRoutingTable - * AcpiRsCreateByteStream - * $Revision: 25 $ + * Module Name: rscreate - Create resource lists/tables + * $Revision: 33 $ * ******************************************************************************/ @@ -124,7 +122,7 @@ #include "amlcode.h" #include "acnamesp.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rscreate") @@ -132,8 +130,7 @@ * * FUNCTION: AcpiRsCreateResourceList * - * PARAMETERS: - * ByteStreamBuffer - Pointer to the resource byte stream + * PARAMETERS: ByteStreamBuffer - Pointer to the resource byte stream * OutputBuffer - Pointer to the user's buffer * OutputBufferLength - Pointer to the size of OutputBuffer * @@ -156,16 +153,15 @@ AcpiRsCreateResourceList ( { ACPI_STATUS Status; - UINT8 *ByteStreamStart = NULL; + UINT8 *ByteStreamStart; UINT32 ListSizeNeeded = 0; - UINT32 ByteStreamBufferLength = 0; + UINT32 ByteStreamBufferLength; FUNCTION_TRACE ("RsCreateResourceList"); - DEBUG_PRINT (VERBOSE_INFO, ("RsCreateResourceList: ByteStreamBuffer = %p\n", - ByteStreamBuffer)); + DEBUG_PRINTP (VERBOSE_INFO, ("ByteStreamBuffer = %p\n", ByteStreamBuffer)); /* * Params already validated, so we don't re-validate here @@ -178,12 +174,10 @@ AcpiRsCreateResourceList ( * Pass the ByteStreamBuffer into a module that can calculate * the buffer size needed for the linked list */ - Status = AcpiRsCalculateListLength (ByteStreamStart, - ByteStreamBufferLength, - &ListSizeNeeded); + Status = AcpiRsCalculateListLength (ByteStreamStart, ByteStreamBufferLength, + &ListSizeNeeded); - DEBUG_PRINT (VERBOSE_INFO, - ("RsCreateResourceList: Status=%X ListSizeNeeded=%X\n", + DEBUG_PRINTP (VERBOSE_INFO, ("Status=%X ListSizeNeeded=%X\n", Status, ListSizeNeeded)); /* @@ -206,9 +200,8 @@ AcpiRsCreateResourceList ( */ MEMSET (OutputBuffer, 0x00, *OutputBufferLength); - Status = AcpiRsByteStreamToList (ByteStreamStart, - ByteStreamBufferLength, - &OutputBuffer); + Status = AcpiRsByteStreamToList (ByteStreamStart, ByteStreamBufferLength, + &OutputBuffer); /* * Exit with the error passed back @@ -218,8 +211,7 @@ AcpiRsCreateResourceList ( return_ACPI_STATUS (Status); } - DEBUG_PRINT (VERBOSE_INFO, ("RsByteStreamToList: OutputBuffer = %p\n", - OutputBuffer)); + DEBUG_PRINTP (VERBOSE_INFO, ("OutputBuffer = %p\n", OutputBuffer)); } else @@ -230,7 +222,6 @@ AcpiRsCreateResourceList ( *OutputBufferLength = ListSizeNeeded; return_ACPI_STATUS (AE_OK); - } @@ -238,9 +229,8 @@ AcpiRsCreateResourceList ( * * FUNCTION: AcpiRsCreatePciRoutingTable * - * PARAMETERS: - * PackageObject - Pointer to an ACPI_OPERAND_OBJECT - * package + * PARAMETERS: PackageObject - Pointer to an ACPI_OPERAND_OBJECT + * package * OutputBuffer - Pointer to the user's buffer * OutputBufferLength - Size of OutputBuffer * @@ -279,12 +269,15 @@ AcpiRsCreatePciRoutingTable ( * Params already validated, so we don't re-validate here */ - Status = AcpiRsCalculatePciRoutingTableLength(PackageObject, - &BufferSizeNeeded); + Status = AcpiRsCalculatePciRoutingTableLength (PackageObject, + &BufferSizeNeeded); + + if (!ACPI_SUCCESS(Status)) + { + return_ACPI_STATUS (Status); + } - DEBUG_PRINT (VERBOSE_INFO, - ("RsCreatePciRoutingTable: BufferSizeNeeded = %X\n", - BufferSizeNeeded)); + DEBUG_PRINTP (VERBOSE_INFO, ("BufferSizeNeeded = %X\n", BufferSizeNeeded)); /* * If the data will fit into the available buffer @@ -351,9 +344,8 @@ AcpiRsCreatePciRoutingTable ( else { - DEBUG_PRINT (ACPI_ERROR, - ("CreatePciRoutingTable: Need Integer, found %s\n", - AcpiCmGetTypeName ((*SubObjectList)->Common.Type))); + DEBUG_PRINTP (ACPI_ERROR, ("Need Integer, found %s\n", + AcpiUtGetTypeName ((*SubObjectList)->Common.Type))); return_ACPI_STATUS (AE_BAD_DATA); } @@ -364,15 +356,13 @@ AcpiRsCreatePciRoutingTable ( if (ACPI_TYPE_INTEGER == (*SubObjectList)->Common.Type) { - UserPrt->Pin = - (UINT32) (*SubObjectList)->Integer.Value; + UserPrt->Pin = (UINT32) (*SubObjectList)->Integer.Value; } else { - DEBUG_PRINT (ACPI_ERROR, - ("CreatePciRoutingTable: Need Integer, found %s\n", - AcpiCmGetTypeName ((*SubObjectList)->Common.Type))); + DEBUG_PRINTP (ACPI_ERROR, ("Need Integer, found %s\n", + AcpiUtGetTypeName ((*SubObjectList)->Common.Type))); return_ACPI_STATUS (AE_BAD_DATA); } @@ -384,11 +374,11 @@ AcpiRsCreatePciRoutingTable ( switch ((*SubObjectList)->Common.Type) { case INTERNAL_TYPE_REFERENCE: - if ((*SubObjectList)->Reference.OpCode != AML_NAMEPATH_OP) + + if ((*SubObjectList)->Reference.Opcode != AML_INT_NAMEPATH_OP) { - DEBUG_PRINT (ACPI_ERROR, - ("CreatePciRoutingTable: Need name, found reference op %X\n", - (*SubObjectList)->Reference.OpCode)); + DEBUG_PRINTP (ACPI_ERROR, ("Need name, found reference op %X\n", + (*SubObjectList)->Reference.Opcode)); return_ACPI_STATUS (AE_BAD_DATA); } @@ -430,9 +420,9 @@ AcpiRsCreatePciRoutingTable ( default: - DEBUG_PRINT (ACPI_ERROR, - ("CreatePciRoutingTable: Need Integer, found %s\n", - AcpiCmGetTypeName ((*SubObjectList)->Common.Type))); + + DEBUG_PRINTP (ACPI_ERROR, ("Need Integer, found %s\n", + AcpiUtGetTypeName ((*SubObjectList)->Common.Type))); return_ACPI_STATUS (AE_BAD_DATA); break; } @@ -448,15 +438,13 @@ AcpiRsCreatePciRoutingTable ( if (ACPI_TYPE_INTEGER == (*SubObjectList)->Common.Type) { - UserPrt->SourceIndex = - (UINT32) (*SubObjectList)->Integer.Value; + UserPrt->SourceIndex = (UINT32) (*SubObjectList)->Integer.Value; } else { - DEBUG_PRINT (ACPI_ERROR, - ("CreatePciRoutingTable: Need Integer, found %s\n", - AcpiCmGetTypeName ((*SubObjectList)->Common.Type))); + DEBUG_PRINTP (ACPI_ERROR, ("Need Integer, found %s\n", + AcpiUtGetTypeName ((*SubObjectList)->Common.Type))); return_ACPI_STATUS (AE_BAD_DATA); } @@ -466,9 +454,7 @@ AcpiRsCreatePciRoutingTable ( TopObjectList++; } - DEBUG_PRINT (VERBOSE_INFO, - ("RsCreatePciRoutingTable: OutputBuffer = %p\n", - OutputBuffer)); + DEBUG_PRINTP (VERBOSE_INFO, ("OutputBuffer = %p\n", OutputBuffer)); } else @@ -482,7 +468,6 @@ AcpiRsCreatePciRoutingTable ( * Report the amount of buffer used */ *OutputBufferLength = BufferSizeNeeded; - return_ACPI_STATUS (AE_OK); } @@ -491,8 +476,7 @@ AcpiRsCreatePciRoutingTable ( * * FUNCTION: AcpiRsCreateByteStream * - * PARAMETERS: - * LinkedListBuffer - Pointer to the resource linked list + * PARAMETERS: LinkedListBuffer - Pointer to the resource linked list * OutputBuffer - Pointer to the user's buffer * OutputBufferLength - Size of OutputBuffer * @@ -509,7 +493,7 @@ AcpiRsCreatePciRoutingTable ( ACPI_STATUS AcpiRsCreateByteStream ( - RESOURCE *LinkedListBuffer, + ACPI_RESOURCE *LinkedListBuffer, UINT8 *OutputBuffer, UINT32 *OutputBufferLength) { @@ -520,9 +504,7 @@ AcpiRsCreateByteStream ( FUNCTION_TRACE ("RsCreateByteStream"); - DEBUG_PRINT (VERBOSE_INFO, - ("RsCreateByteStream: LinkedListBuffer = %p\n", - LinkedListBuffer)); + DEBUG_PRINTP (VERBOSE_INFO, ("LinkedListBuffer = %p\n", LinkedListBuffer)); /* * Params already validated, so we don't re-validate here @@ -531,12 +513,10 @@ AcpiRsCreateByteStream ( * the buffer size needed for the byte stream. */ Status = AcpiRsCalculateByteStreamLength (LinkedListBuffer, - &ByteStreamSizeNeeded); + &ByteStreamSizeNeeded); - DEBUG_PRINT (VERBOSE_INFO, - ("RsCreateByteStream: ByteStreamSizeNeeded=%X, %s\n", - ByteStreamSizeNeeded, - AcpiCmFormatException (Status))); + DEBUG_PRINTP (VERBOSE_INFO, ("ByteStreamSizeNeeded=%X, %s\n", + ByteStreamSizeNeeded, AcpiUtFormatException (Status))); /* * Exit with the error passed back @@ -558,9 +538,8 @@ AcpiRsCreateByteStream ( */ MEMSET (OutputBuffer, 0x00, *OutputBufferLength); - Status = AcpiRsListToByteStream (LinkedListBuffer, - ByteStreamSizeNeeded, - &OutputBuffer); + Status = AcpiRsListToByteStream (LinkedListBuffer, ByteStreamSizeNeeded, + &OutputBuffer); /* * Exit with the error passed back @@ -570,10 +549,9 @@ AcpiRsCreateByteStream ( return_ACPI_STATUS (Status); } - DEBUG_PRINT (VERBOSE_INFO, - ("RsListToByteStream: OutputBuffer = %p\n", - OutputBuffer)); + DEBUG_PRINTP (VERBOSE_INFO, ("OutputBuffer = %p\n", OutputBuffer)); } + else { *OutputBufferLength = ByteStreamSizeNeeded; diff --git a/sys/contrib/dev/acpica/rsdump.c b/sys/contrib/dev/acpica/rsdump.c index 70127ee..abaf8ec 100644 --- a/sys/contrib/dev/acpica/rsdump.c +++ b/sys/contrib/dev/acpica/rsdump.c @@ -1,7 +1,7 @@ /******************************************************************************* * - * Module Name: rsdump - Functions do dump out the resource structures. - * $Revision: 16 $ + * Module Name: rsdump - Functions to display the resource structures. + * $Revision: 19 $ * ******************************************************************************/ @@ -120,7 +120,7 @@ #include "acpi.h" #include "acresrc.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rsdump") @@ -130,7 +130,7 @@ * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -138,28 +138,24 @@ void AcpiRsDumpIrq ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - IRQ_RESOURCE *IrqData = (IRQ_RESOURCE*) Data; + ACPI_RESOURCE_IRQ *IrqData = (ACPI_RESOURCE_IRQ *) Data; UINT8 Index = 0; AcpiOsPrintf ("\tIRQ Resource\n"); AcpiOsPrintf ("\t\t%s Triggered\n", - LEVEL_SENSITIVE == IrqData->EdgeLevel ? - "Level" : "Edge"); + LEVEL_SENSITIVE == IrqData->EdgeLevel ? "Level" : "Edge"); AcpiOsPrintf ("\t\tActive %s\n", - ACTIVE_LOW == IrqData->ActiveHighLow ? - "Low" : "High"); + ACTIVE_LOW == IrqData->ActiveHighLow ? "Low" : "High"); AcpiOsPrintf ("\t\t%s\n", - SHARED == IrqData->SharedExclusive ? - "Shared" : "Exclusive"); + SHARED == IrqData->SharedExclusive ? "Shared" : "Exclusive"); - AcpiOsPrintf ("\t\t%X Interrupts ( ", - IrqData->NumberOfInterrupts); + AcpiOsPrintf ("\t\t%X Interrupts ( ", IrqData->NumberOfInterrupts); for (Index = 0; Index < IrqData->NumberOfInterrupts; Index++) { @@ -177,7 +173,7 @@ AcpiRsDumpIrq ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -185,9 +181,9 @@ AcpiRsDumpIrq ( void AcpiRsDumpDma ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - DMA_RESOURCE *DmaData = (DMA_RESOURCE*) Data; + ACPI_RESOURCE_DMA *DmaData = (ACPI_RESOURCE_DMA *) Data; UINT8 Index = 0; @@ -217,8 +213,8 @@ AcpiRsDumpDma ( } AcpiOsPrintf ("\t\t%sBus Master\n", - BUS_MASTER == DmaData->BusMaster ? - "" : "Not a "); + BUS_MASTER == DmaData->BusMaster ? "" : "Not a "); + switch (DmaData->Transfer) { @@ -239,8 +235,7 @@ AcpiRsDumpDma ( break; } - AcpiOsPrintf ("\t\tNumber of Channels: %X ( ", - DmaData->NumberOfChannels); + AcpiOsPrintf ("\t\tNumber of Channels: %X ( ", DmaData->NumberOfChannels); for (Index = 0; Index < DmaData->NumberOfChannels; Index++) { @@ -258,7 +253,7 @@ AcpiRsDumpDma ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -266,14 +261,14 @@ AcpiRsDumpDma ( void AcpiRsDumpStartDependentFunctions ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - START_DEPENDENT_FUNCTIONS_RESOURCE *SdfData = - (START_DEPENDENT_FUNCTIONS_RESOURCE*) Data; + ACPI_RESOURCE_START_DPF *SdfData = (ACPI_RESOURCE_START_DPF *) Data; AcpiOsPrintf ("\tStart Dependent Functions Resource\n"); + switch (SdfData->CompatibilityPriority) { case GOOD_CONFIGURATION: @@ -323,7 +318,7 @@ AcpiRsDumpStartDependentFunctions ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -331,9 +326,9 @@ AcpiRsDumpStartDependentFunctions ( void AcpiRsDumpIo ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - IO_RESOURCE *IoData = (IO_RESOURCE*) Data; + ACPI_RESOURCE_IO *IoData = (ACPI_RESOURCE_IO *) Data; AcpiOsPrintf ("\tIo Resource\n"); @@ -363,7 +358,7 @@ AcpiRsDumpIo ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -371,9 +366,9 @@ AcpiRsDumpIo ( void AcpiRsDumpFixedIo ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - FIXED_IO_RESOURCE *FixedIoData = (FIXED_IO_RESOURCE*) Data; + ACPI_RESOURCE_FIXED_IO *FixedIoData = (ACPI_RESOURCE_FIXED_IO *) Data; AcpiOsPrintf ("\tFixed Io Resource\n"); @@ -393,7 +388,7 @@ AcpiRsDumpFixedIo ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -401,9 +396,9 @@ AcpiRsDumpFixedIo ( void AcpiRsDumpVendorSpecific ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - VENDOR_RESOURCE *VendorData = (VENDOR_RESOURCE*) Data; + ACPI_RESOURCE_VENDOR *VendorData = (ACPI_RESOURCE_VENDOR *) Data; UINT16 Index = 0; @@ -427,7 +422,7 @@ AcpiRsDumpVendorSpecific ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -435,9 +430,9 @@ AcpiRsDumpVendorSpecific ( void AcpiRsDumpMemory24 ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - MEMORY24_RESOURCE *Memory24Data = (MEMORY24_RESOURCE*) Data; + ACPI_RESOURCE_MEM24 *Memory24Data = (ACPI_RESOURCE_MEM24 *) Data; AcpiOsPrintf ("\t24-Bit Memory Range Resource\n"); @@ -469,7 +464,7 @@ AcpiRsDumpMemory24 ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -477,9 +472,9 @@ AcpiRsDumpMemory24 ( void AcpiRsDumpMemory32 ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - MEMORY32_RESOURCE *Memory32Data = (MEMORY32_RESOURCE*) Data; + ACPI_RESOURCE_MEM32 *Memory32Data = (ACPI_RESOURCE_MEM32 *) Data; AcpiOsPrintf ("\t32-Bit Memory Range Resource\n"); @@ -519,9 +514,9 @@ AcpiRsDumpMemory32 ( void AcpiRsDumpFixedMemory32 ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - FIXED_MEMORY32_RESOURCE *FixedMemory32Data = (FIXED_MEMORY32_RESOURCE*) Data; + ACPI_RESOURCE_FIXED_MEM32 *FixedMemory32Data = (ACPI_RESOURCE_FIXED_MEM32 *) Data; AcpiOsPrintf ("\t32-Bit Fixed Location Memory Range Resource\n"); @@ -547,7 +542,7 @@ AcpiRsDumpFixedMemory32 ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -555,9 +550,9 @@ AcpiRsDumpFixedMemory32 ( void AcpiRsDumpAddress16 ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - ADDRESS16_RESOURCE *Address16Data = (ADDRESS16_RESOURCE*) Data; + ACPI_RESOURCE_ADDRESS16 *Address16Data = (ACPI_RESOURCE_ADDRESS16 *) Data; AcpiOsPrintf ("\t16-Bit Address Space Resource\n"); @@ -673,12 +668,12 @@ AcpiRsDumpAddress16 ( AcpiOsPrintf ("\t\tAddress Length: %08X\n", Address16Data->AddressLength); - if (0xFF != Address16Data->ResourceSourceIndex) + if (0xFF != Address16Data->ResourceSource.Index) { AcpiOsPrintf ("\t\tResource Source Index: %X\n", - Address16Data->ResourceSourceIndex); + Address16Data->ResourceSource.Index); AcpiOsPrintf ("\t\tResource Source: %s\n", - Address16Data->ResourceSource); + Address16Data->ResourceSource.StringPtr); } return; @@ -691,7 +686,7 @@ AcpiRsDumpAddress16 ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -699,9 +694,9 @@ AcpiRsDumpAddress16 ( void AcpiRsDumpAddress32 ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - ADDRESS32_RESOURCE *Address32Data = (ADDRESS32_RESOURCE*) Data; + ACPI_RESOURCE_ADDRESS32 *Address32Data = (ACPI_RESOURCE_ADDRESS32 *) Data; AcpiOsPrintf ("\t32-Bit Address Space Resource\n"); @@ -816,12 +811,155 @@ AcpiRsDumpAddress32 ( AcpiOsPrintf ("\t\tAddress Length: %08X\n", Address32Data->AddressLength); - if(0xFF != Address32Data->ResourceSourceIndex) + if(0xFF != Address32Data->ResourceSource.Index) { AcpiOsPrintf ("\t\tResource Source Index: %X\n", - Address32Data->ResourceSourceIndex); + Address32Data->ResourceSource.Index); AcpiOsPrintf ("\t\tResource Source: %s\n", - Address32Data->ResourceSource); + Address32Data->ResourceSource.StringPtr); + } + + return; +} + + +/******************************************************************************* + * + * FUNCTION: AcpiRsDumpAddress64 + * + * PARAMETERS: Data - pointer to the resource structure to dump. + * + * RETURN: None + * + * DESCRIPTION: Prints out the various members of the Data structure type. + * + ******************************************************************************/ + +void +AcpiRsDumpAddress64 ( + ACPI_RESOURCE_DATA *Data) +{ + ACPI_RESOURCE_ADDRESS64 *Address64Data = (ACPI_RESOURCE_ADDRESS64 *) Data; + + + AcpiOsPrintf ("\t64-Bit Address Space Resource\n"); + + switch (Address64Data->ResourceType) + { + case MEMORY_RANGE: + + AcpiOsPrintf ("\t\tResource Type: Memory Range\n"); + + switch (Address64Data->Attribute.Memory.CacheAttribute) + { + case NON_CACHEABLE_MEMORY: + AcpiOsPrintf ("\t\tType Specific: " + "Noncacheable memory\n"); + break; + + case CACHABLE_MEMORY: + AcpiOsPrintf ("\t\tType Specific: " + "Cacheable memory\n"); + break; + + case WRITE_COMBINING_MEMORY: + AcpiOsPrintf ("\t\tType Specific: " + "Write-combining memory\n"); + break; + + case PREFETCHABLE_MEMORY: + AcpiOsPrintf ("\t\tType Specific: " + "Prefetchable memory\n"); + break; + + default: + AcpiOsPrintf ("\t\tType Specific: " + "Invalid cache attribute\n"); + break; + } + + AcpiOsPrintf ("\t\tType Specific: Read%s\n", + READ_WRITE_MEMORY == + Address64Data->Attribute.Memory.ReadWriteAttribute ? + "/Write" : " Only"); + break; + + case IO_RANGE: + + AcpiOsPrintf ("\t\tResource Type: Io Range\n"); + + switch (Address64Data->Attribute.Io.RangeAttribute) + { + case NON_ISA_ONLY_RANGES: + AcpiOsPrintf ("\t\tType Specific: " + "Non-ISA Io Addresses\n"); + break; + + case ISA_ONLY_RANGES: + AcpiOsPrintf ("\t\tType Specific: " + "ISA Io Addresses\n"); + break; + + case ENTIRE_RANGE: + AcpiOsPrintf ("\t\tType Specific: " + "ISA and non-ISA Io Addresses\n"); + break; + + default: + AcpiOsPrintf ("\t\tType Specific: " + "Invalid Range attribute"); + break; + } + break; + + case BUS_NUMBER_RANGE: + + AcpiOsPrintf ("\t\tResource Type: Bus Number Range\n"); + break; + + default: + + AcpiOsPrintf ("\t\tInvalid Resource Type..exiting.\n"); + return; + } + + AcpiOsPrintf ("\t\tResource %s\n", + CONSUMER == Address64Data->ProducerConsumer ? + "Consumer" : "Producer"); + + AcpiOsPrintf ("\t\t%s decode\n", + SUB_DECODE == Address64Data->Decode ? + "Subtractive" : "Positive"); + + AcpiOsPrintf ("\t\tMin address is %s fixed\n", + ADDRESS_FIXED == Address64Data->MinAddressFixed ? + "" : "not "); + + AcpiOsPrintf ("\t\tMax address is %s fixed\n", + ADDRESS_FIXED == Address64Data->MaxAddressFixed ? + "" : "not "); + + AcpiOsPrintf ("\t\tGranularity: %16X\n", + Address64Data->Granularity); + + AcpiOsPrintf ("\t\tAddress range min: %16X\n", + Address64Data->MinAddressRange); + + AcpiOsPrintf ("\t\tAddress range max: %16X\n", + Address64Data->MaxAddressRange); + + AcpiOsPrintf ("\t\tAddress translation offset: %16X\n", + Address64Data->AddressTranslationOffset); + + AcpiOsPrintf ("\t\tAddress Length: %16X\n", + Address64Data->AddressLength); + + if(0xFF != Address64Data->ResourceSource.Index) + { + AcpiOsPrintf ("\t\tResource Source Index: %X\n", + Address64Data->ResourceSource.Index); + AcpiOsPrintf ("\t\tResource Source: %s\n", + Address64Data->ResourceSource.StringPtr); } return; @@ -834,7 +972,7 @@ AcpiRsDumpAddress32 ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Prints out the various members of the Data structure type. * @@ -842,9 +980,9 @@ AcpiRsDumpAddress32 ( void AcpiRsDumpExtendedIrq ( - RESOURCE_DATA *Data) + ACPI_RESOURCE_DATA *Data) { - EXTENDED_IRQ_RESOURCE *ExtIrqData = (EXTENDED_IRQ_RESOURCE*) Data; + ACPI_RESOURCE_EXT_IRQ *ExtIrqData = (ACPI_RESOURCE_EXT_IRQ *) Data; UINT8 Index = 0; @@ -876,12 +1014,12 @@ AcpiRsDumpExtendedIrq ( AcpiOsPrintf (")\n"); - if(0xFF != ExtIrqData->ResourceSourceIndex) + if(0xFF != ExtIrqData->ResourceSource.Index) { AcpiOsPrintf ("\t\tResource Source Index: %X", - ExtIrqData->ResourceSourceIndex); + ExtIrqData->ResourceSource.Index); AcpiOsPrintf ("\t\tResource Source: %s", - ExtIrqData->ResourceSource); + ExtIrqData->ResourceSource.StringPtr); } return; @@ -894,7 +1032,7 @@ AcpiRsDumpExtendedIrq ( * * PARAMETERS: Data - pointer to the resource structure to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Dispatches the structure to the correct dump routine. * @@ -902,7 +1040,7 @@ AcpiRsDumpExtendedIrq ( void AcpiRsDumpResourceList ( - RESOURCE *Resource) + ACPI_RESOURCE *Resource) { UINT8 Count = 0; BOOLEAN Done = FALSE; @@ -916,62 +1054,66 @@ AcpiRsDumpResourceList ( switch (Resource->Id) { - case Irq: + case ACPI_RSTYPE_IRQ: AcpiRsDumpIrq (&Resource->Data); break; - case Dma: + case ACPI_RSTYPE_DMA: AcpiRsDumpDma (&Resource->Data); break; - case StartDependentFunctions: + case ACPI_RSTYPE_START_DPF: AcpiRsDumpStartDependentFunctions (&Resource->Data); break; - case EndDependentFunctions: + case ACPI_RSTYPE_END_DPF: AcpiOsPrintf ("\tEndDependentFunctions Resource\n"); /* AcpiRsDumpEndDependentFunctions (Resource->Data);*/ break; - case Io: + case ACPI_RSTYPE_IO: AcpiRsDumpIo (&Resource->Data); break; - case FixedIo: + case ACPI_RSTYPE_FIXED_IO: AcpiRsDumpFixedIo (&Resource->Data); break; - case VendorSpecific: + case ACPI_RSTYPE_VENDOR: AcpiRsDumpVendorSpecific (&Resource->Data); break; - case EndTag: + case ACPI_RSTYPE_END_TAG: /*RsDumpEndTag (Resource->Data);*/ AcpiOsPrintf ("\tEndTag Resource\n"); Done = TRUE; break; - case Memory24: + case ACPI_RSTYPE_MEM24: AcpiRsDumpMemory24 (&Resource->Data); break; - case Memory32: + case ACPI_RSTYPE_MEM32: AcpiRsDumpMemory32 (&Resource->Data); break; - case FixedMemory32: + case ACPI_RSTYPE_FIXED_MEM32: AcpiRsDumpFixedMemory32 (&Resource->Data); break; - case Address16: + case ACPI_RSTYPE_ADDRESS16: AcpiRsDumpAddress16 (&Resource->Data); break; - case Address32: + case ACPI_RSTYPE_ADDRESS32: AcpiRsDumpAddress32 (&Resource->Data); break; - case ExtendedIrq: + case ACPI_RSTYPE_ADDRESS64: + AcpiRsDumpAddress64 (&Resource->Data); + break; + + case ACPI_RSTYPE_EXT_IRQ: AcpiRsDumpExtendedIrq (&Resource->Data); break; @@ -981,8 +1123,7 @@ AcpiRsDumpResourceList ( } - Resource = (RESOURCE *) ((NATIVE_UINT) Resource + - (NATIVE_UINT) Resource->Length); + Resource = POINTER_ADD (ACPI_RESOURCE, Resource, Resource->Length); } } @@ -995,7 +1136,7 @@ AcpiRsDumpResourceList ( * * PARAMETERS: Data - pointer to the routing table to dump. * - * RETURN: + * RETURN: None * * DESCRIPTION: Dispatches the structures to the correct dump routine. * diff --git a/sys/contrib/dev/acpica/rsio.c b/sys/contrib/dev/acpica/rsio.c index 9244f58..c979585 100644 --- a/sys/contrib/dev/acpica/rsio.c +++ b/sys/contrib/dev/acpica/rsio.c @@ -1,12 +1,7 @@ /******************************************************************************* * - * Module Name: rsio - AcpiRsIoResource - * AcpiRsFixedIoResource - * AcpiRsIoStream - * AcpiRsFixedIoStream - * AcpiRsDmaResource - * AcpiRsDmaStream - * $Revision: 12 $ + * Module Name: rsio - IO and DMA resource descriptors + * $Revision: 14 $ * ******************************************************************************/ @@ -124,7 +119,7 @@ #include "acpi.h" #include "acresrc.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rsio") @@ -133,20 +128,20 @@ * FUNCTION: AcpiRsIoResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -158,21 +153,21 @@ AcpiRsIoResource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - UINT32 StructSize = sizeof (IO_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_IO); FUNCTION_TRACE ("RsIoResource"); + /* * The number of bytes consumed are Constant */ *BytesConsumed = 8; - OutputStruct->Id = Io; + OutputStruct->Id = ACPI_RSTYPE_IO; /* * Check Decode @@ -223,7 +218,6 @@ AcpiRsIoResource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -233,20 +227,20 @@ AcpiRsIoResource ( * FUNCTION: AcpiRsFixedIoResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -258,21 +252,21 @@ AcpiRsFixedIoResource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - UINT32 StructSize = sizeof (FIXED_IO_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_IO); FUNCTION_TRACE ("RsFixedIoResource"); + /* * The number of bytes consumed are Constant */ *BytesConsumed = 4; - OutputStruct->Id = FixedIo; + OutputStruct->Id = ACPI_RSTYPE_FIXED_IO; /* * Check Range Base Address @@ -299,7 +293,6 @@ AcpiRsFixedIoResource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -311,19 +304,19 @@ AcpiRsFixedIoResource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsIoStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -334,6 +327,7 @@ AcpiRsIoStream ( FUNCTION_TRACE ("RsIoStream"); + /* * The descriptor field is static */ @@ -383,9 +377,7 @@ AcpiRsIoStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -397,19 +389,19 @@ AcpiRsIoStream ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsFixedIoStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -420,6 +412,7 @@ AcpiRsFixedIoStream ( FUNCTION_TRACE ("RsFixedIoStream"); + /* * The descriptor field is static */ @@ -446,9 +439,7 @@ AcpiRsFixedIoStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -458,20 +449,20 @@ AcpiRsFixedIoStream ( * FUNCTION: AcpiRsDmaResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -483,21 +474,21 @@ AcpiRsDmaResource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT8 Temp8 = 0; UINT8 Index; UINT8 i; - UINT32 StructSize = sizeof(DMA_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_DMA); FUNCTION_TRACE ("RsDmaResource"); + /* * The number of bytes consumed are Constant */ *BytesConsumed = 3; - OutputStruct->Id = Dma; + OutputStruct->Id = ACPI_RSTYPE_DMA; /* * Point to the 8-bits of Byte 1 @@ -558,7 +549,6 @@ AcpiRsDmaResource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -570,19 +560,19 @@ AcpiRsDmaResource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsDmaStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -629,9 +619,7 @@ AcpiRsDmaStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rsirq.c b/sys/contrib/dev/acpica/rsirq.c index 586195e..ae7af71 100644 --- a/sys/contrib/dev/acpica/rsirq.c +++ b/sys/contrib/dev/acpica/rsirq.c @@ -1,10 +1,7 @@ /******************************************************************************* * - * Module Name: rsirq - AcpiRsIrqResource, - * AcpiRsIrqStream - * AcpiRsExtendedIrqResource - * AcpiRsExtendedIrqStream - * $Revision: 13 $ + * Module Name: rsirq - IRQ resource descriptors + * $Revision: 17 $ * ******************************************************************************/ @@ -122,7 +119,7 @@ #include "acpi.h" #include "acresrc.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rsirq") @@ -131,20 +128,20 @@ * FUNCTION: AcpiRsIrqResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -156,24 +153,24 @@ AcpiRsIrqResource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; UINT8 Index; UINT8 i; - UINT32 StructSize = sizeof (IRQ_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_IRQ); FUNCTION_TRACE ("RsIrqResource"); + /* * The number of bytes consumed are contained in the descriptor * (Bits:0-1) */ Temp8 = *Buffer; *BytesConsumed = (Temp8 & 0x03) + 1; - OutputStruct->Id = Irq; + OutputStruct->Id = ACPI_RSTYPE_IRQ; /* * Point to the 16-bits of Bytes 1 and 2 @@ -229,8 +226,8 @@ AcpiRsIrqResource ( { /* * Only _LL and _HE polarity/trigger interrupts - * are allowed (ACPI spec v1.0b ection 6.4.2.1), - * so an error will occur if we reach this point + * are allowed (ACPI spec v1.0b ection 6.4.2.1), + * so an error will occur if we reach this point */ return_ACPI_STATUS (AE_BAD_DATA); } @@ -246,7 +243,7 @@ AcpiRsIrqResource ( { /* * Assume Edge Sensitive, Active High, Non-Sharable - * per ACPI Specification + * per ACPI Specification */ OutputStruct->Data.Irq.EdgeLevel = EDGE_SENSITIVE; OutputStruct->Data.Irq.ActiveHighLow = ACTIVE_HIGH; @@ -262,7 +259,6 @@ AcpiRsIrqResource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -274,19 +270,19 @@ AcpiRsIrqResource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsIrqStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -302,7 +298,7 @@ AcpiRsIrqStream ( /* * The descriptor field is set based upon whether a third byte is - * needed to contain the IRQ Information. + * needed to contain the IRQ Information. */ if (EDGE_SENSITIVE == LinkedList->Data.Irq.EdgeLevel && ACTIVE_HIGH == LinkedList->Data.Irq.ActiveHighLow && @@ -311,6 +307,7 @@ AcpiRsIrqStream ( *Buffer = 0x22; IRQInfoByteNeeded = FALSE; } + else { *Buffer = 0x23; @@ -361,9 +358,7 @@ AcpiRsIrqStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -373,20 +368,20 @@ AcpiRsIrqStream ( * FUNCTION: AcpiRsExtendedIrqResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -398,16 +393,17 @@ AcpiRsExtendedIrqResource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; + NATIVE_CHAR *TempPtr; UINT8 Index; - UINT32 StructSize = sizeof (EXTENDED_IRQ_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_EXT_IRQ); FUNCTION_TRACE ("RsExtendedIrqResource"); + /* * Point past the Descriptor to get the number of bytes consumed */ @@ -415,7 +411,7 @@ AcpiRsExtendedIrqResource ( MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); *BytesConsumed = Temp16 + 3; - OutputStruct->Id = ExtendedIrq; + OutputStruct->Id = ACPI_RSTYPE_EXT_IRQ; /* * Point to the Byte3 @@ -446,8 +442,8 @@ AcpiRsExtendedIrqResource ( { /* * Only _LL and _HE polarity/trigger interrupts - * are allowed (ACPI spec v1.0b ection 6.4.2.1), - * so an error will occur if we reach this point + * are allowed (ACPI spec v1.0b ection 6.4.2.1), + * so an error will occur if we reach this point */ return_ACPI_STATUS (AE_BAD_DATA); } @@ -456,8 +452,7 @@ AcpiRsExtendedIrqResource ( /* * Check for sharable */ - OutputStruct->Data.ExtendedIrq.SharedExclusive = - (Temp8 >> 3) & 0x01; + OutputStruct->Data.ExtendedIrq.SharedExclusive = (Temp8 >> 3) & 0x01; /* * Point to Byte4 (IRQ Table length) @@ -469,9 +464,9 @@ AcpiRsExtendedIrqResource ( /* * Add any additional structure size to properly calculate - * the next pointer at the end of this function + * the next pointer at the end of this function */ - StructSize += (Temp8 - 1) * 4; + StructSize += (Temp8 - 1) * 4; /* * Point to Byte5 (First IRQ Number) @@ -493,34 +488,40 @@ AcpiRsExtendedIrqResource ( /* * This will leave us pointing to the Resource Source Index - * If it is present, then save it off and calculate the - * pointer to where the null terminated string goes: - * Each Interrupt takes 32-bits + the 5 bytes of the - * stream that are default. + * If it is present, then save it off and calculate the + * pointer to where the null terminated string goes: + * Each Interrupt takes 32-bits + the 5 bytes of the + * stream that are default. */ if (*BytesConsumed > - (UINT32)(OutputStruct->Data.ExtendedIrq.NumberOfInterrupts * - 4) + 5) + (UINT32)(OutputStruct->Data.ExtendedIrq.NumberOfInterrupts * 4) + 5) { /* Dereference the Index */ Temp8 = *Buffer; - OutputStruct->Data.ExtendedIrq.ResourceSourceIndex = - (UINT32)Temp8; + OutputStruct->Data.ExtendedIrq.ResourceSource.Index = (UINT32) Temp8; /* Point to the String */ Buffer += 1; + /* + * Point the String pointer to the end of this structure. + */ + OutputStruct->Data.ExtendedIrq.ResourceSource.StringPtr = + (NATIVE_CHAR *)(OutputStruct + StructSize); + + TempPtr = OutputStruct->Data.ExtendedIrq.ResourceSource.StringPtr; + /* Copy the string into the buffer */ Index = 0; while (0x00 != *Buffer) { - OutputStruct->Data.ExtendedIrq.ResourceSource[Index] = - *Buffer; + *TempPtr = *Buffer; + TempPtr += 1; Buffer += 1; Index += 1; } @@ -528,24 +529,23 @@ AcpiRsExtendedIrqResource ( /* * Add the terminating null */ - OutputStruct->Data.ExtendedIrq.ResourceSource[Index] = 0x00; - OutputStruct->Data.ExtendedIrq.ResourceSourceStringLength = - Index + 1; + *TempPtr = 0x00; + OutputStruct->Data.ExtendedIrq.ResourceSource.StringLength = Index + 1; /* - * In order for the StructSize to fall on a 32-bit boundry, - * calculate the length of the string and expand the - * StructSize to the next 32-bit boundry. + * In order for the StructSize to fall on a 32-bit boundary, + * calculate the length of the string and expand the + * StructSize to the next 32-bit boundary. */ Temp8 = (UINT8) (Index + 1); - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); + StructSize += ROUND_UP_TO_32BITS (Temp8); } else { - OutputStruct->Data.ExtendedIrq.ResourceSourceIndex = 0x00; - OutputStruct->Data.ExtendedIrq.ResourceSourceStringLength = 0; - OutputStruct->Data.ExtendedIrq.ResourceSource[0] = 0x00; + OutputStruct->Data.ExtendedIrq.ResourceSource.Index = 0x00; + OutputStruct->Data.ExtendedIrq.ResourceSource.StringLength = 0; + OutputStruct->Data.ExtendedIrq.ResourceSource.StringPtr = NULL; } /* @@ -557,7 +557,6 @@ AcpiRsExtendedIrqResource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -569,10 +568,10 @@ AcpiRsExtendedIrqResource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the * the appropriate bytes in a byte stream @@ -581,7 +580,7 @@ AcpiRsExtendedIrqResource ( ACPI_STATUS AcpiRsExtendedIrqStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -604,7 +603,6 @@ AcpiRsExtendedIrqStream ( /* * Set a pointer to the Length field - to be filled in later */ - LengthField = (UINT16 *)Buffer; Buffer += 2; @@ -612,7 +610,6 @@ AcpiRsExtendedIrqStream ( * Set the Interrupt vector flags */ Temp8 = (UINT8)(LinkedList->Data.ExtendedIrq.ProducerConsumer & 0x01); - Temp8 |= ((LinkedList->Data.ExtendedIrq.SharedExclusive & 0x01) << 3); if (LEVEL_SENSITIVE == LinkedList->Data.ExtendedIrq.EdgeLevel && @@ -636,8 +633,7 @@ AcpiRsExtendedIrqStream ( *Buffer = Temp8; Buffer += 1; - for (Index = 0; - Index < LinkedList->Data.ExtendedIrq.NumberOfInterrupts; + for (Index = 0; Index < LinkedList->Data.ExtendedIrq.NumberOfInterrupts; Index++) { MOVE_UNALIGNED32_TO_32 (Buffer, @@ -648,9 +644,9 @@ AcpiRsExtendedIrqStream ( /* * Resource Source Index and Resource Source are optional */ - if (0 != LinkedList->Data.ExtendedIrq.ResourceSourceStringLength) + if (0 != LinkedList->Data.ExtendedIrq.ResourceSource.StringLength) { - *Buffer = (UINT8) LinkedList->Data.ExtendedIrq.ResourceSourceIndex; + *Buffer = (UINT8) LinkedList->Data.ExtendedIrq.ResourceSource.Index; Buffer += 1; TempPointer = (NATIVE_CHAR *) Buffer; @@ -658,27 +654,26 @@ AcpiRsExtendedIrqStream ( /* * Copy the string */ - STRCPY (TempPointer, LinkedList->Data.ExtendedIrq.ResourceSource); + STRCPY (TempPointer, + LinkedList->Data.ExtendedIrq.ResourceSource.StringPtr); /* * Buffer needs to be set to the length of the sting + one for the - * terminating null + * terminating null */ - Buffer += (STRLEN (LinkedList->Data.ExtendedIrq.ResourceSource) + 1); + Buffer += (STRLEN (LinkedList->Data.ExtendedIrq.ResourceSource.StringPtr) + 1); } /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); /* * Set the length field to the number of bytes consumed - * minus the header size (3 bytes) + * minus the header size (3 bytes) */ *LengthField = (UINT16) (*BytesConsumed - 3); - return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rslist.c b/sys/contrib/dev/acpica/rslist.c index 60e10b4..d7ec0f9 100644 --- a/sys/contrib/dev/acpica/rslist.c +++ b/sys/contrib/dev/acpica/rslist.c @@ -1,8 +1,7 @@ /******************************************************************************* * - * Module Name: rslist - AcpiRsByteStreamToList - * AcpiListToByteStream - * $Revision: 11 $ + * Module Name: rslist - Linked list utilities + * $Revision: 17 $ * ******************************************************************************/ @@ -120,20 +119,65 @@ #include "acpi.h" #include "acresrc.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rslist") /******************************************************************************* * + * FUNCTION: AcpiRsGetResourceType + * + * PARAMETERS: ResourceStartByte - Byte 0 of a resource descriptor + * + * RETURN: The Resource Type (Name) with no extraneous bits + * + * DESCRIPTION: Extract the Resource Type/Name from the first byte of + * a resource descriptor. + * + ******************************************************************************/ + +UINT8 +AcpiRsGetResourceType ( + UINT8 ResourceStartByte) +{ + + /* + * Determine if this is a small or large resource + */ + switch (ResourceStartByte & RESOURCE_DESC_TYPE_MASK) + { + case RESOURCE_DESC_TYPE_SMALL: + + /* + * Small Resource Type -- Only bits 6:3 are valid + */ + return ((UINT8) (ResourceStartByte & RESOURCE_DESC_SMALL_MASK)); + break; + + + case RESOURCE_DESC_TYPE_LARGE: + + /* + * Large Resource Type -- All bits are valid + */ + return (ResourceStartByte); + break; + } + + return (0xFF); +} + + +/******************************************************************************* + * * FUNCTION: AcpiRsByteStreamToList * * PARAMETERS: ByteStreamBuffer - Pointer to the resource byte stream * ByteStreamBufferLength - Length of ByteStreamBuffer * OutputBuffer - Pointer to the buffer that will - * contain the output structures + * contain the output structures * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Takes the resource byte stream and parses it, creating a * linked list of resources in the caller's output buffer @@ -162,222 +206,170 @@ AcpiRsByteStreamToList ( FALSE == EndTagProcessed) { /* - * Look at the next byte in the stream + * The next byte in the stream is the resource type */ - ResourceType = *ByteStreamBuffer; + ResourceType = AcpiRsGetResourceType (*ByteStreamBuffer); - /* - * See if this is a small or large resource - */ - if(ResourceType & 0x80) + switch (ResourceType) { + case RESOURCE_DESC_MEMORY_24: + /* + * 24-Bit Memory Resource + */ + Status = AcpiRsMemory24Resource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_LARGE_VENDOR: + /* + * Vendor Defined Resource + */ + Status = AcpiRsVendorResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_MEMORY_32: + /* + * 32-Bit Memory Range Resource + */ + Status = AcpiRsMemory32RangeResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_FIXED_MEMORY_32: + /* + * 32-Bit Fixed Memory Resource + */ + Status = AcpiRsFixedMemory32Resource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_QWORD_ADDRESS_SPACE: + /* + * 64-Bit Address Resource + */ + Status = AcpiRsAddress64Resource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_DWORD_ADDRESS_SPACE: + /* + * 32-Bit Address Resource + */ + Status = AcpiRsAddress32Resource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_WORD_ADDRESS_SPACE: + /* + * 16-Bit Address Resource + */ + Status = AcpiRsAddress16Resource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_EXTENDED_XRUPT: /* - * Large Resource Type - */ - switch (ResourceType) - { - case MEMORY_RANGE_24: - /* - * 24-Bit Memory Resource - */ - Status = AcpiRsMemory24Resource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case LARGE_VENDOR_DEFINED: - /* - * Vendor Defined Resource - */ - Status = AcpiRsVendorResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case MEMORY_RANGE_32: - /* - * 32-Bit Memory Range Resource - */ - Status = AcpiRsMemory32RangeResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case FIXED_MEMORY_RANGE_32: - /* - * 32-Bit Fixed Memory Resource - */ - Status = AcpiRsFixedMemory32Resource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case DWORD_ADDRESS_SPACE: - /* - * 32-Bit Address Resource - */ - Status = AcpiRsAddress32Resource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case WORD_ADDRESS_SPACE: - /* - * 16-Bit Address Resource - */ - Status = AcpiRsAddress16Resource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case EXTENDED_IRQ: - /* - * Extended IRQ - */ - Status = AcpiRsExtendedIrqResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - -/* TBD: [Future] 64-bit not currently supported */ -/* - case 0x8A: - break; -*/ - - default: - /* - * If we get here, everything is out of sync, - * so exit with an error - */ - return_ACPI_STATUS (AE_AML_ERROR); - break; - } + * Extended IRQ + */ + Status = AcpiRsExtendedIrqResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_IRQ_FORMAT: + /* + * IRQ Resource + */ + Status = AcpiRsIrqResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_DMA_FORMAT: + /* + * DMA Resource + */ + Status = AcpiRsDmaResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_START_DEPENDENT: + /* + * Start Dependent Functions Resource + */ + Status = AcpiRsStartDependentFunctionsResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_END_DEPENDENT: + /* + * End Dependent Functions Resource + */ + Status = AcpiRsEndDependentFunctionsResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_IO_PORT: + /* + * IO Port Resource + */ + Status = AcpiRsIoResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_FIXED_IO_PORT: + /* + * Fixed IO Port Resource + */ + Status = AcpiRsFixedIoResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_SMALL_VENDOR: + /* + * Vendor Specific Resource + */ + Status = AcpiRsVendorResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + case RESOURCE_DESC_END_TAG: + /* + * End Tag + */ + EndTagProcessed = TRUE; + Status = AcpiRsEndTagResource (ByteStreamBuffer, + &BytesConsumed, Buffer, &StructureSize); + break; + + + default: + /* + * Invalid/Unknowns resource type + */ + Status = AE_AML_ERROR; + break; } - else + + if (!ACPI_SUCCESS(Status)) { - /* - * Small Resource Type - * Only bits 7:3 are valid - */ - ResourceType >>= 3; - - switch(ResourceType) - { - case IRQ_FORMAT: - /* - * IRQ Resource - */ - Status = AcpiRsIrqResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case DMA_FORMAT: - /* - * DMA Resource - */ - Status = AcpiRsDmaResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case START_DEPENDENT_TAG: - /* - * Start Dependent Functions Resource - */ - Status = AcpiRsStartDependentFunctionsResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case END_DEPENDENT_TAG: - /* - * End Dependent Functions Resource - */ - Status = AcpiRsEndDependentFunctionsResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case IO_PORT_DESCRIPTOR: - /* - * IO Port Resource - */ - Status = AcpiRsIoResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case FIXED_LOCATION_IO_DESCRIPTOR: - /* - * Fixed IO Port Resource - */ - Status = AcpiRsFixedIoResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case SMALL_VENDOR_DEFINED: - /* - * Vendor Specific Resource - */ - Status = AcpiRsVendorResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case END_TAG: - /* - * End Tag - */ - Status = AcpiRsEndTagResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - EndTagProcessed = TRUE; - - break; - - default: - /* - * If we get here, everything is out of sync, - * so exit with an error - */ - return_ACPI_STATUS (AE_AML_ERROR); - break; - - } /* switch */ - } /* end else */ + return_ACPI_STATUS (Status); + } /* * Update the return value and counter @@ -414,15 +406,15 @@ AcpiRsByteStreamToList ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * ByteSteamSizeNeeded - Calculated size of the byte stream - * needed from calling - * AcpiRsCalculateByteStreamLength() - * The size of the OutputBuffer is - * guaranteed to be >= - * ByteStreamSizeNeeded + * needed from calling + * AcpiRsCalculateByteStreamLength() + * The size of the OutputBuffer is + * guaranteed to be >= + * ByteStreamSizeNeeded * OutputBuffer - Pointer to the buffer that will - * contain the byte stream + * contain the byte stream * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Takes the resource linked list and parses it, creating a * byte stream of resources in the caller's output buffer @@ -431,7 +423,7 @@ AcpiRsByteStreamToList ( ACPI_STATUS AcpiRsListToByteStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT32 ByteStreamSizeNeeded, UINT8 **OutputBuffer) { @@ -447,76 +439,62 @@ AcpiRsListToByteStream ( { switch (LinkedList->Id) { - case Irq: + case ACPI_RSTYPE_IRQ: /* * IRQ Resource */ - Status = AcpiRsIrqStream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsIrqStream (LinkedList, &Buffer, &BytesConsumed); break; - case Dma: + case ACPI_RSTYPE_DMA: /* * DMA Resource */ - Status = AcpiRsDmaStream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsDmaStream (LinkedList, &Buffer, &BytesConsumed); break; - case StartDependentFunctions: + case ACPI_RSTYPE_START_DPF: /* * Start Dependent Functions Resource */ Status = AcpiRsStartDependentFunctionsStream (LinkedList, - &Buffer, - &BytesConsumed); + &Buffer, &BytesConsumed); break; - case EndDependentFunctions: + case ACPI_RSTYPE_END_DPF: /* * End Dependent Functions Resource */ Status = AcpiRsEndDependentFunctionsStream (LinkedList, - &Buffer, - &BytesConsumed); + &Buffer, &BytesConsumed); break; - case Io: + case ACPI_RSTYPE_IO: /* * IO Port Resource */ - Status = AcpiRsIoStream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsIoStream (LinkedList, &Buffer, &BytesConsumed); break; - case FixedIo: + case ACPI_RSTYPE_FIXED_IO: /* * Fixed IO Port Resource */ - Status = AcpiRsFixedIoStream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsFixedIoStream (LinkedList, &Buffer, &BytesConsumed); break; - case VendorSpecific: + case ACPI_RSTYPE_VENDOR: /* * Vendor Defined Resource */ - Status = AcpiRsVendorStream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsVendorStream (LinkedList, &Buffer, &BytesConsumed); break; - case EndTag: + case ACPI_RSTYPE_END_TAG: /* * End Tag */ - Status = AcpiRsEndTagStream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsEndTagStream (LinkedList, &Buffer, &BytesConsumed); /* * An End Tag indicates the end of the Resource Template @@ -524,58 +502,59 @@ AcpiRsListToByteStream ( Done = TRUE; break; - case Memory24: + case ACPI_RSTYPE_MEM24: /* * 24-Bit Memory Resource */ - Status = AcpiRsMemory24Stream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsMemory24Stream (LinkedList, &Buffer, &BytesConsumed); break; - case Memory32: + case ACPI_RSTYPE_MEM32: /* * 32-Bit Memory Range Resource */ - Status = AcpiRsMemory32RangeStream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsMemory32RangeStream (LinkedList, &Buffer, + &BytesConsumed); break; - case FixedMemory32: + case ACPI_RSTYPE_FIXED_MEM32: /* * 32-Bit Fixed Memory Resource */ - Status = AcpiRsFixedMemory32Stream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsFixedMemory32Stream (LinkedList, &Buffer, + &BytesConsumed); break; - case Address16: + case ACPI_RSTYPE_ADDRESS16: /* * 16-Bit Address Descriptor Resource */ - Status = AcpiRsAddress16Stream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsAddress16Stream (LinkedList, &Buffer, + &BytesConsumed); break; - case Address32: + case ACPI_RSTYPE_ADDRESS32: /* * 32-Bit Address Descriptor Resource */ - Status = AcpiRsAddress32Stream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsAddress32Stream (LinkedList, &Buffer, + &BytesConsumed); + break; + + case ACPI_RSTYPE_ADDRESS64: + /* + * 64-Bit Address Descriptor Resource + */ + Status = AcpiRsAddress64Stream (LinkedList, &Buffer, + &BytesConsumed); break; - case ExtendedIrq: + case ACPI_RSTYPE_EXT_IRQ: /* * Extended IRQ Resource */ - Status = AcpiRsExtendedIrqStream (LinkedList, - &Buffer, - &BytesConsumed); + Status = AcpiRsExtendedIrqStream (LinkedList, &Buffer, + &BytesConsumed); break; default: @@ -583,11 +562,17 @@ AcpiRsListToByteStream ( * If we get here, everything is out of sync, * so exit with an error */ - return_ACPI_STATUS (AE_BAD_DATA); + Status = AE_BAD_DATA; break; } /* switch (LinkedList->Id) */ + + if (!ACPI_SUCCESS(Status)) + { + return_ACPI_STATUS (Status); + } + /* * Set the Buffer to point to the open byte */ @@ -596,10 +581,10 @@ AcpiRsListToByteStream ( /* * Point to the next object */ - LinkedList = (RESOURCE *) ((NATIVE_UINT) LinkedList + - (NATIVE_UINT) LinkedList->Length); + LinkedList = POINTER_ADD (ACPI_RESOURCE, + LinkedList, LinkedList->Length); } - return_ACPI_STATUS (AE_OK); + return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rsmemory.c b/sys/contrib/dev/acpica/rsmemory.c index 21af073..368f765 100644 --- a/sys/contrib/dev/acpica/rsmemory.c +++ b/sys/contrib/dev/acpica/rsmemory.c @@ -1,12 +1,7 @@ /******************************************************************************* * - * Module Name: rsmem24 - AcpiRsMemory24Resource - * AcpiRsMemory24Stream - * AcpiRsMemory32RangeResource - * AcpiRsFixedMemory32Resource - * AcpiRsMemory32RangeStream - * AcpiRsFixedMemory32Stream - * $Revision: 12 $ + * Module Name: rsmem24 - Memory resource descriptors + * $Revision: 14 $ * ******************************************************************************/ @@ -124,7 +119,7 @@ #include "acpi.h" #include "acresrc.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rsmemory") @@ -133,20 +128,20 @@ * FUNCTION: AcpiRsMemory24Resource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -158,15 +153,15 @@ AcpiRsMemory24Resource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - UINT32 StructSize = sizeof (MEMORY24_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_MEM24); FUNCTION_TRACE ("RsMemory24Resource"); + /* * Point past the Descriptor to get the number of bytes consumed */ @@ -175,7 +170,7 @@ AcpiRsMemory24Resource ( MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); Buffer += 2; *BytesConsumed = Temp16 + 3; - OutputStruct->Id = Memory24; + OutputStruct->Id = ACPI_RSTYPE_MEM24; /* * Check Byte 3 the Read/Write bit @@ -220,7 +215,6 @@ AcpiRsMemory24Resource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -232,19 +226,19 @@ AcpiRsMemory24Resource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsMemory24Stream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -255,6 +249,7 @@ AcpiRsMemory24Stream ( FUNCTION_TRACE ("RsMemory24Stream"); + /* * The descriptor field is static */ @@ -302,9 +297,7 @@ AcpiRsMemory24Stream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -314,20 +307,20 @@ AcpiRsMemory24Stream ( * FUNCTION: AcpiRsMemory32RangeResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -339,15 +332,15 @@ AcpiRsMemory32RangeResource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - UINT32 StructSize = sizeof (MEMORY32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_MEM32); FUNCTION_TRACE ("RsMemory32RangeResource"); + /* * Point past the Descriptor to get the number of bytes consumed */ @@ -357,11 +350,11 @@ AcpiRsMemory32RangeResource ( Buffer += 2; *BytesConsumed = Temp16 + 3; - OutputStruct->Id = Memory32; + OutputStruct->Id = ACPI_RSTYPE_MEM32; /* * Point to the place in the output buffer where the data portion will - * begin. + * begin. * 1. Set the RESOURCE_DATA * Data to point to it's own address, then * 2. Set the pointer to the next address. * @@ -411,7 +404,6 @@ AcpiRsMemory32RangeResource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -421,20 +413,20 @@ AcpiRsMemory32RangeResource ( * FUNCTION: AcpiRsFixedMemory32Resource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -446,15 +438,15 @@ AcpiRsFixedMemory32Resource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - UINT32 StructSize = sizeof (FIXED_MEMORY32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_MEM32); FUNCTION_TRACE ("RsFixedMemory32Resource"); + /* * Point past the Descriptor to get the number of bytes consumed */ @@ -464,7 +456,7 @@ AcpiRsFixedMemory32Resource ( Buffer += 2; *BytesConsumed = Temp16 + 3; - OutputStruct->Id = FixedMemory32; + OutputStruct->Id = ACPI_RSTYPE_FIXED_MEM32; /* * Check Byte 3 the Read/Write bit @@ -495,7 +487,6 @@ AcpiRsFixedMemory32Resource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -507,19 +498,19 @@ AcpiRsFixedMemory32Resource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsMemory32RangeStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -530,6 +521,7 @@ AcpiRsMemory32RangeStream ( FUNCTION_TRACE ("RsMemory32RangeStream"); + /* * The descriptor field is static */ @@ -578,9 +570,7 @@ AcpiRsMemory32RangeStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -592,19 +582,19 @@ AcpiRsMemory32RangeStream ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsFixedMemory32Stream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -615,6 +605,7 @@ AcpiRsFixedMemory32Stream ( FUNCTION_TRACE ("RsFixedMemory32Stream"); + /* * The descriptor field is static */ @@ -653,9 +644,7 @@ AcpiRsFixedMemory32Stream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rsmisc.c b/sys/contrib/dev/acpica/rsmisc.c index 2336ab9..54d8656 100644 --- a/sys/contrib/dev/acpica/rsmisc.c +++ b/sys/contrib/dev/acpica/rsmisc.c @@ -1,14 +1,7 @@ /******************************************************************************* * - * Module Name: rsmisc - AcpiRsEndTagResource - * AcpiRsEndTagStream - * AcpiRsVendorResource - * AcpiRsVendorStream - * AcpiRsStartDependentFunctionsResource - * AcpiRsEndDependentFunctionsResource - * AcpiRsStartDependentFunctionsStream - * AcpiRsEndDependentFunctionsStream - * $Revision: 12 $ + * Module Name: rsmisc - Miscellaneous resource descriptors + * $Revision: 15 $ * ******************************************************************************/ @@ -126,7 +119,7 @@ #include "acpi.h" #include "acresrc.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rsmisc") @@ -135,20 +128,20 @@ * FUNCTION: AcpiRsEndTagResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -159,12 +152,13 @@ AcpiRsEndTagResource ( UINT8 **OutputBuffer, UINT32 *StructureSize) { - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT32 StructSize = RESOURCE_LENGTH; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; + UINT32 StructSize = ACPI_RESOURCE_LENGTH; FUNCTION_TRACE ("RsEndTagResource"); + /* * The number of bytes consumed is static */ @@ -173,7 +167,7 @@ AcpiRsEndTagResource ( /* * Fill out the structure */ - OutputStruct->Id = EndTag; + OutputStruct->Id = ACPI_RSTYPE_END_TAG; /* * Set the Length parameter @@ -184,7 +178,6 @@ AcpiRsEndTagResource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -196,19 +189,19 @@ AcpiRsEndTagResource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsEndTagStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -218,6 +211,7 @@ AcpiRsEndTagStream ( FUNCTION_TRACE ("RsEndTagStream"); + /* * The descriptor field is static */ @@ -226,7 +220,7 @@ AcpiRsEndTagStream ( /* * Set the Checksum - zero means that the resource data is treated as if - * the checksum operation succeeded (ACPI Spec 1.0b Section 6.4.2.8) + * the checksum operation succeeded (ACPI Spec 1.0b Section 6.4.2.8) */ Temp8 = 0; @@ -236,9 +230,7 @@ AcpiRsEndTagStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -248,20 +240,20 @@ AcpiRsEndTagStream ( * FUNCTION: AcpiRsVendorResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -273,16 +265,16 @@ AcpiRsVendorResource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; UINT8 Index; - UINT32 StructSize = sizeof (VENDOR_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_VENDOR); FUNCTION_TRACE ("RsVendorResource"); + /* * Dereference the Descriptor to find if this is a large or small item. */ @@ -292,9 +284,8 @@ AcpiRsVendorResource ( { /* * Large Item + * Point to the length field */ - /* Point to the length field */ - Buffer += 1; /* Dereference */ @@ -314,10 +305,8 @@ AcpiRsVendorResource ( { /* * Small Item + * Dereference the size */ - - /* Dereference the size */ - Temp16 = (UINT8)(*Buffer & 0x07); /* Calculate bytes consumed */ @@ -329,7 +318,7 @@ AcpiRsVendorResource ( Buffer += 1; } - OutputStruct->Id = VendorSpecific; + OutputStruct->Id = ACPI_RSTYPE_VENDOR; OutputStruct->Data.VendorSpecific.Length = Temp16; for (Index = 0; Index < Temp16; Index++) @@ -339,9 +328,9 @@ AcpiRsVendorResource ( } /* - * In order for the StructSize to fall on a 32-bit boundry, - * calculate the length of the vendor string and expand the - * StructSize to the next 32-bit boundry. + * In order for the StructSize to fall on a 32-bit boundary, + * calculate the length of the vendor string and expand the + * StructSize to the next 32-bit boundary. */ StructSize += ROUND_UP_TO_32BITS (Temp16); @@ -354,7 +343,6 @@ AcpiRsVendorResource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -366,19 +354,19 @@ AcpiRsVendorResource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsVendorStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -390,16 +378,14 @@ AcpiRsVendorStream ( FUNCTION_TRACE ("RsVendorStream"); + /* * Dereference the length to find if this is a large or small item. */ - if(LinkedList->Data.VendorSpecific.Length > 7) { /* * Large Item - */ - /* * Set the descriptor field and length bytes */ *Buffer = 0x84; @@ -415,9 +401,6 @@ AcpiRsVendorStream ( { /* * Small Item - */ - - /* * Set the descriptor field */ Temp8 = 0x70; @@ -441,9 +424,7 @@ AcpiRsVendorStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -453,20 +434,20 @@ AcpiRsVendorStream ( * FUNCTION: AcpiRsStartDependentFunctionsResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -478,15 +459,14 @@ AcpiRsStartDependentFunctionsResource ( UINT32 *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT8 Temp8 = 0; - UINT32 StructSize = - sizeof(START_DEPENDENT_FUNCTIONS_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; + UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_START_DPF); FUNCTION_TRACE ("RsStartDependentFunctionsResource"); + /* * The number of bytes consumed are contained in the descriptor (Bits:0-1) */ @@ -494,7 +474,7 @@ AcpiRsStartDependentFunctionsResource ( *BytesConsumed = (Temp8 & 0x01) + 1; - OutputStruct->Id = StartDependentFunctions; + OutputStruct->Id = ACPI_RSTYPE_START_DPF; /* * Point to Byte 1 if it is used @@ -507,10 +487,9 @@ AcpiRsStartDependentFunctionsResource ( /* * Check Compatibility priority */ - OutputStruct->Data.StartDependentFunctions.CompatibilityPriority = - Temp8 & 0x03; + OutputStruct->Data.StartDpf.CompatibilityPriority = Temp8 & 0x03; - if (3 == OutputStruct->Data.StartDependentFunctions.CompatibilityPriority) + if (3 == OutputStruct->Data.StartDpf.CompatibilityPriority) { return_ACPI_STATUS (AE_AML_ERROR); } @@ -518,10 +497,9 @@ AcpiRsStartDependentFunctionsResource ( /* * Check Performance/Robustness preference */ - OutputStruct->Data.StartDependentFunctions.PerformanceRobustness = - (Temp8 >> 2) & 0x03; + OutputStruct->Data.StartDpf.PerformanceRobustness = (Temp8 >> 2) & 0x03; - if (3 == OutputStruct->Data.StartDependentFunctions.PerformanceRobustness) + if (3 == OutputStruct->Data.StartDpf.PerformanceRobustness) { return_ACPI_STATUS (AE_AML_ERROR); } @@ -529,10 +507,10 @@ AcpiRsStartDependentFunctionsResource ( else { - OutputStruct->Data.StartDependentFunctions.CompatibilityPriority = + OutputStruct->Data.StartDpf.CompatibilityPriority = ACCEPTABLE_CONFIGURATION; - OutputStruct->Data.StartDependentFunctions.PerformanceRobustness = + OutputStruct->Data.StartDpf.PerformanceRobustness = ACCEPTABLE_CONFIGURATION; } @@ -545,7 +523,6 @@ AcpiRsStartDependentFunctionsResource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -555,20 +532,20 @@ AcpiRsStartDependentFunctionsResource ( * FUNCTION: AcpiRsEndDependentFunctionsResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream + * stream * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer + * the number of bytes consumed from + * the ByteStreamBuffer * OutputBuffer - Pointer to the user's return buffer * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * the number of bytes in the filled + * in structure * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. + * structure pointed to by the OutputBuffer. Return the + * number of bytes consumed from the byte stream. * ******************************************************************************/ @@ -579,12 +556,13 @@ AcpiRsEndDependentFunctionsResource ( UINT8 **OutputBuffer, UINT32 *StructureSize) { - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT32 StructSize = RESOURCE_LENGTH; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; + UINT32 StructSize = ACPI_RESOURCE_LENGTH; FUNCTION_TRACE ("RsEndDependentFunctionsResource"); + /* * The number of bytes consumed is static */ @@ -593,7 +571,7 @@ AcpiRsEndDependentFunctionsResource ( /* * Fill out the structure */ - OutputStruct->Id = EndDependentFunctions; + OutputStruct->Id = ACPI_RSTYPE_END_DPF; /* * Set the Length parameter @@ -604,7 +582,6 @@ AcpiRsEndDependentFunctionsResource ( * Return the final size of the structure */ *StructureSize = StructSize; - return_ACPI_STATUS (AE_OK); } @@ -616,19 +593,19 @@ AcpiRsEndDependentFunctionsResource ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsStartDependentFunctionsStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed) { @@ -638,14 +615,15 @@ AcpiRsStartDependentFunctionsStream ( FUNCTION_TRACE ("RsStartDependentFunctionsStream"); + /* * The descriptor field is set based upon whether a byte is needed - * to contain Priority data. + * to contain Priority data. */ if (ACCEPTABLE_CONFIGURATION == - LinkedList->Data.StartDependentFunctions.CompatibilityPriority && + LinkedList->Data.StartDpf.CompatibilityPriority && ACCEPTABLE_CONFIGURATION == - LinkedList->Data.StartDependentFunctions.PerformanceRobustness) + LinkedList->Data.StartDpf.PerformanceRobustness) { *Buffer = 0x30; } @@ -658,13 +636,10 @@ AcpiRsStartDependentFunctionsStream ( * Set the Priority Byte Definition */ Temp8 = 0; - Temp8 = (UINT8) - ((LinkedList->Data.StartDependentFunctions.PerformanceRobustness & - 0x03) << 2); - Temp8 |= - (LinkedList->Data.StartDependentFunctions.CompatibilityPriority & - 0x03); - + Temp8 = (UINT8) ((LinkedList->Data.StartDpf.PerformanceRobustness & + 0x03) << 2); + Temp8 |= (LinkedList->Data.StartDpf.CompatibilityPriority & + 0x03); *Buffer = Temp8; } @@ -673,9 +648,7 @@ AcpiRsStartDependentFunctionsStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -687,19 +660,19 @@ AcpiRsStartDependentFunctionsStream ( * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * the number of bytes of the + * OutputBuffer used * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code + * RETURN: Status * * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream + * the appropriate bytes in a byte stream * ******************************************************************************/ ACPI_STATUS AcpiRsEndDependentFunctionsStream ( - RESOURCE *LinkedList, + ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, UINT32 *BytesConsumed ) @@ -709,6 +682,7 @@ AcpiRsEndDependentFunctionsStream ( FUNCTION_TRACE ("RsEndDependentFunctionsStream"); + /* * The descriptor field is static */ @@ -718,9 +692,7 @@ AcpiRsEndDependentFunctionsStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - + *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rsutils.c b/sys/contrib/dev/acpica/rsutils.c index fb14be3..1225549 100644 --- a/sys/contrib/dev/acpica/rsutils.c +++ b/sys/contrib/dev/acpica/rsutils.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsutils - Utilities for the resource manager - * $Revision: 14 $ + * $Revision: 19 $ * ******************************************************************************/ @@ -122,7 +122,7 @@ #include "acresrc.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rsutils") @@ -134,7 +134,7 @@ * RetBuffer - a pointer to a buffer structure for the * results * - * RETURN: Status - the status of the call + * 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 @@ -174,7 +174,7 @@ AcpiRsGetPrtMethodData ( { /* Return object is required */ - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _PRT\n")); + DEBUG_PRINTP (ACPI_ERROR, ("No object was returned from _PRT\n")); return_ACPI_STATUS (AE_TYPE); } @@ -196,9 +196,8 @@ AcpiRsGetPrtMethodData ( * byte stream buffer that comes back from the _CRS method * execution. */ - Status = AcpiRsCreatePciRoutingTable (RetObj, - RetBuffer->Pointer, - &BufferSpaceNeeded); + Status = AcpiRsCreatePciRoutingTable (RetObj, RetBuffer->Pointer, + &BufferSpaceNeeded); /* * Tell the user how much of the buffer we have used or is needed @@ -211,8 +210,7 @@ AcpiRsGetPrtMethodData ( Cleanup: - AcpiCmRemoveReference (RetObj); - + AcpiUtRemoveReference (RetObj); return_ACPI_STATUS (Status); } @@ -225,7 +223,7 @@ Cleanup: * RetBuffer - a pointer to a buffer structure for the * results * - * RETURN: Status - the status of the call + * 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 @@ -263,7 +261,7 @@ AcpiRsGetCrsMethodData ( { /* Return object is required */ - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _CRS\n")); + DEBUG_PRINTP (ACPI_ERROR, ("No object was returned from _CRS\n")); return_ACPI_STATUS (AE_TYPE); } @@ -284,15 +282,9 @@ AcpiRsGetCrsMethodData ( * byte stream buffer that comes back from the _CRS method * execution. */ - Status = AcpiRsCreateResourceList (RetObj, - RetBuffer->Pointer, - &BufferSpaceNeeded); - + Status = AcpiRsCreateResourceList (RetObj, RetBuffer->Pointer, + &BufferSpaceNeeded); - if (ACPI_SUCCESS (Status)) - { - DUMP_RESOURCE_LIST(RetBuffer->Pointer); - } /* * Tell the user how much of the buffer we have used or is needed @@ -305,8 +297,7 @@ AcpiRsGetCrsMethodData ( Cleanup: - AcpiCmRemoveReference (RetObj); - + AcpiUtRemoveReference (RetObj); return_ACPI_STATUS (Status); } @@ -319,7 +310,7 @@ Cleanup: * RetBuffer - a pointer to a buffer structure for the * results * - * RETURN: Status - the status of the call + * 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 @@ -357,7 +348,7 @@ AcpiRsGetPrsMethodData ( { /* Return object is required */ - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _PRS\n")); + DEBUG_PRINTP (ACPI_ERROR, ("No object was returned from _PRS\n")); return_ACPI_STATUS (AE_TYPE); } @@ -378,9 +369,8 @@ AcpiRsGetPrsMethodData ( * byte stream buffer that comes back from the _CRS method * execution. */ - Status = AcpiRsCreateResourceList (RetObj, - RetBuffer->Pointer, - &BufferSpaceNeeded); + Status = AcpiRsCreateResourceList (RetObj, RetBuffer->Pointer, + &BufferSpaceNeeded); /* * Tell the user how much of the buffer we have used or is needed @@ -393,8 +383,7 @@ AcpiRsGetPrsMethodData ( Cleanup: - AcpiCmRemoveReference (RetObj); - + AcpiUtRemoveReference (RetObj); return_ACPI_STATUS (Status); } @@ -407,7 +396,7 @@ Cleanup: * InBuffer - a pointer to a buffer structure of the * parameter * - * RETURN: Status - the status of the call + * RETURN: Status * * DESCRIPTION: This function is called to set the _SRS of an object contained * in an object specified by the handle passed in @@ -436,20 +425,19 @@ AcpiRsSetSrsMethodData ( /* * 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. + * resource parameters. It needs to be formatted into a + * byte stream to be sent in as an input parameter. */ BufferSizeNeeded = 0; /* * First call is to get the buffer size needed */ - Status = AcpiRsCreateByteStream (InBuffer->Pointer, - ByteStream, - &BufferSizeNeeded); + Status = AcpiRsCreateByteStream (InBuffer->Pointer, ByteStream, + &BufferSizeNeeded); /* * We expect a return of AE_BUFFER_OVERFLOW - * if not, exit with the error + * if not, exit with the error */ if (AE_BUFFER_OVERFLOW != Status) { @@ -459,7 +447,7 @@ AcpiRsSetSrsMethodData ( /* * Allocate the buffer needed */ - ByteStream = AcpiCmCallocate(BufferSizeNeeded); + ByteStream = AcpiUtCallocate(BufferSizeNeeded); if (NULL == ByteStream) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -468,21 +456,20 @@ AcpiRsSetSrsMethodData ( /* * Now call to convert the linked list into a byte stream */ - Status = AcpiRsCreateByteStream (InBuffer->Pointer, - ByteStream, - &BufferSizeNeeded); + Status = AcpiRsCreateByteStream (InBuffer->Pointer, ByteStream, + &BufferSizeNeeded); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* - * Init the param object + * Init the param object */ - AcpiCmInitStaticObject (&ParamObj); + AcpiUtInitStaticObject (&ParamObj); /* - * Method requires one parameter. Set it up + * Method requires one parameter. Set it up */ Params [0] = &ParamObj; Params [1] = NULL; @@ -495,17 +482,16 @@ AcpiRsSetSrsMethodData ( ParamObj.Buffer.Pointer = ByteStream; /* - * Execute the method, no return value + * Execute the method, no return value */ Status = AcpiNsEvaluateRelative (Handle, "_SRS", Params, NULL); /* - * Clean up and return the status from AcpiNsEvaluateRelative + * Clean up and return the status from AcpiNsEvaluateRelative */ - Cleanup: - AcpiCmFree (ByteStream); + AcpiUtFree (ByteStream); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/rsxface.c b/sys/contrib/dev/acpica/rsxface.c index fa7c7cf..ea31fa2 100644 --- a/sys/contrib/dev/acpica/rsxface.c +++ b/sys/contrib/dev/acpica/rsxface.c @@ -1,7 +1,7 @@ /******************************************************************************* * - * Module Name: rsxface - Public interfaces to the ACPI subsystem - * $Revision: 10 $ + * Module Name: rsxface - Public interfaces to the resource manager + * $Revision: 13 $ * ******************************************************************************/ @@ -122,7 +122,7 @@ #include "acnamesp.h" #include "acresrc.h" -#define _COMPONENT RESOURCE_MANAGER +#define _COMPONENT ACPI_RESOURCES MODULE_NAME ("rsxface") @@ -134,7 +134,7 @@ * RetBuffer - a pointer to a buffer to receive the * current resources for the device * - * RETURN: Status - the status of the call + * 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 @@ -159,11 +159,20 @@ AcpiGetIrqRoutingTable ( FUNCTION_TRACE ("AcpiGetIrqRoutingTable "); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* - * Must have a valid handle and buffer, So we have to have a handle - * and a return buffer structure, and 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, so keep going. + * Must have a valid handle and buffer, So we have to have a handle + * and a return buffer structure, and 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, so keep going. */ if ((!DeviceHandle) || (!RetBuffer) || @@ -173,7 +182,6 @@ AcpiGetIrqRoutingTable ( } Status = AcpiRsGetPrtMethodData (DeviceHandle, RetBuffer); - return_ACPI_STATUS (Status); } @@ -187,7 +195,7 @@ AcpiGetIrqRoutingTable ( * RetBuffer - a pointer to a buffer to receive the * current resources for the device * - * RETURN: Status - the status of the call + * RETURN: Status * * DESCRIPTION: This function is called to get the current resources for a * specific device. The caller must first acquire a handle for @@ -212,11 +220,20 @@ AcpiGetCurrentResources ( FUNCTION_TRACE ("AcpiGetCurrentResources"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* - * Must have a valid handle and buffer, So we have to have a handle - * and a return buffer structure, and 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, so keep going. + * Must have a valid handle and buffer, So we have to have a handle + * and a return buffer structure, and 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, so keep going. */ if ((!DeviceHandle) || (!RetBuffer) || @@ -226,7 +243,6 @@ AcpiGetCurrentResources ( } Status = AcpiRsGetCrsMethodData (DeviceHandle, RetBuffer); - return_ACPI_STATUS (Status); } @@ -240,7 +256,7 @@ AcpiGetCurrentResources ( * RetBuffer - a pointer to a buffer to receive the * resources for the device * - * RETURN: Status - the status of the call + * 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 @@ -262,21 +278,29 @@ AcpiGetPossibleResources ( FUNCTION_TRACE ("AcpiGetPossibleResources"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* - * Must have a valid handle and buffer, So we have to have a handle - * and a return buffer structure, and 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, so keep going. + * Must have a valid handle and buffer, So we have to have a handle + * and a return buffer structure, and 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, so keep going. */ if ((!DeviceHandle) || (!RetBuffer) || ((RetBuffer->Length) && (!RetBuffer->Pointer))) { return_ACPI_STATUS (AE_BAD_PARAMETER); - } + } Status = AcpiRsGetPrsMethodData (DeviceHandle, RetBuffer); - return_ACPI_STATUS (Status); } @@ -290,7 +314,7 @@ AcpiGetPossibleResources ( * InBuffer - a pointer to a buffer containing the * resources to be set for the device * - * RETURN: Status - the status of the call + * RETURN: Status * * DESCRIPTION: This function is called to set the current resources for a * specific device. The caller must first acquire a handle for @@ -309,8 +333,17 @@ AcpiSetCurrentResources ( FUNCTION_TRACE ("AcpiSetCurrentResources"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* - * Must have a valid handle and buffer + * Must have a valid handle and buffer */ if ((!DeviceHandle) || (!InBuffer) || @@ -321,6 +354,5 @@ AcpiSetCurrentResources ( } Status = AcpiRsSetSrsMethodData (DeviceHandle, InBuffer); - return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/tbconvrt.c b/sys/contrib/dev/acpica/tbconvrt.c index c298c35..1196014 100644 --- a/sys/contrib/dev/acpica/tbconvrt.c +++ b/sys/contrib/dev/acpica/tbconvrt.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbconvrt - ACPI Table conversion utilities - * $Revision: 19 $ + * $Revision: 22 $ * *****************************************************************************/ @@ -122,31 +122,10 @@ #include "actbl.h" -#define _COMPONENT TABLE_MANAGER +#define _COMPONENT ACPI_TABLES MODULE_NAME ("tbconvrt") -/* - * Build a GAS structure from earlier ACPI table entries (V1.0 and 0.71 extensions) - * - * 1) Address space - * 2) Length in bytes -- convert to length in bits - * 3) Bit offset is zero - * 4) Reserved field is zero - * 5) Expand address to 64 bits - */ -#define ASL_BUILD_GAS_FROM_ENTRY(a,b,c,d) {a.AddressSpaceId = (UINT8) d;\ - a.RegisterBitWidth = (UINT8) MUL_8 (b);\ - a.RegisterBitOffset = 0;\ - a.Reserved = 0;\ - ACPI_STORE_ADDRESS (a.Address,c);} - - -/* ACPI V1.0 entries -- address space is always I/O */ - -#define ASL_BUILD_GAS_FROM_V1_ENTRY(a,b,c) ASL_BUILD_GAS_FROM_ENTRY(a,b,c,ADDRESS_SPACE_SYSTEM_IO) - - /******************************************************************************* * * FUNCTION: AcpiTbConvertToXsdt @@ -201,7 +180,7 @@ AcpiTbConvertToXsdt ( /* Allocate an XSDT */ - NewTable = AcpiCmCallocate (TableSize); + NewTable = AcpiUtCallocate (TableSize); if (!NewTable) { return (AE_NO_MEMORY); @@ -293,7 +272,7 @@ AcpiTbConvertTableFadt (void) /* AcpiGbl_FADT is valid */ /* Allocate and zero the 2.0 buffer */ - FADT2 = AcpiCmCallocate (sizeof (FADT_DESCRIPTOR_REV2)); + FADT2 = AcpiUtCallocate (sizeof (FADT_DESCRIPTOR_REV2)); if (FADT2 == NULL) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -612,7 +591,7 @@ AcpiTbBuildCommonFacs ( /* Allocate a common FACS */ - CommonFacs = AcpiCmCallocate (sizeof (ACPI_COMMON_FACS)); + CommonFacs = AcpiUtCallocate (sizeof (ACPI_COMMON_FACS)); if (!CommonFacs) { return_ACPI_STATUS (AE_NO_MEMORY); diff --git a/sys/contrib/dev/acpica/tbget.c b/sys/contrib/dev/acpica/tbget.c index 965470c..f79f406 100644 --- a/sys/contrib/dev/acpica/tbget.c +++ b/sys/contrib/dev/acpica/tbget.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbget - ACPI Table get* routines - * $Revision: 43 $ + * $Revision: 46 $ * *****************************************************************************/ @@ -121,7 +121,7 @@ #include "actables.h" -#define _COMPONENT TABLE_MANAGER +#define _COMPONENT ACPI_TABLES MODULE_NAME ("tbget") #define RSDP_CHECKSUM_LENGTH 20 @@ -264,7 +264,7 @@ AcpiTbGetTable ( /* Allocate buffer for the entire table */ - FullTable = AcpiCmAllocate (TableHeader->Length); + FullTable = AcpiUtAllocate (TableHeader->Length); if (!FullTable) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -598,14 +598,14 @@ AcpiTbGetTableRsdt ( char *TableSignature; - FUNCTION_TRACE ("AcpiTbGetTableRsdt"); + FUNCTION_TRACE ("TbGetTableRsdt"); /* * Get the RSDT from the RSDP */ - DEBUG_PRINT (ACPI_INFO, + DEBUG_PRINTP (ACPI_INFO, ("RSDP located at %p, RSDT physical=%p \n", AcpiGbl_RSDP, AcpiGbl_RSDP->RsdtPhysicalAddress)); @@ -638,8 +638,8 @@ AcpiTbGetTableRsdt ( Status = AcpiTbGetTable (PhysicalAddress, NULL, &TableInfo); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, ("GetTableRsdt: Could not get the RSDT, %s\n", - AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, ("Could not get the RSDT, %s\n", + AcpiUtFormatException (Status))); return_ACPI_STATUS (Status); } @@ -687,7 +687,7 @@ AcpiTbGetTableRsdt ( AcpiGbl_XSDT = (XSDT_DESCRIPTOR *) TableInfo.Pointer; - DEBUG_PRINT (ACPI_INFO, ("XSDT located at %p\n", AcpiGbl_XSDT)); + DEBUG_PRINTP (ACPI_INFO, ("XSDT located at %p\n", AcpiGbl_XSDT)); return_ACPI_STATUS (Status); } @@ -738,7 +738,7 @@ AcpiTbGetTableFacs ( * Getting table from a file -- allocate a buffer and * read the table. */ - TablePtr = AcpiCmAllocate (Size); + TablePtr = AcpiUtAllocate (Size); if(!TablePtr) { return_ACPI_STATUS (AE_NO_MEMORY); diff --git a/sys/contrib/dev/acpica/tbinstal.c b/sys/contrib/dev/acpica/tbinstal.c index 2df0fca..745307f 100644 --- a/sys/contrib/dev/acpica/tbinstal.c +++ b/sys/contrib/dev/acpica/tbinstal.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbinstal - ACPI table installation and removal - * $Revision: 36 $ + * $Revision: 39 $ * *****************************************************************************/ @@ -122,7 +122,7 @@ #include "actables.h" -#define _COMPONENT TABLE_MANAGER +#define _COMPONENT ACPI_TABLES MODULE_NAME ("tbinstal") @@ -164,16 +164,16 @@ AcpiTbInstallTable ( /* Lock tables while installing */ - AcpiCmAcquireMutex (ACPI_MTX_TABLES); + AcpiUtAcquireMutex (ACPI_MTX_TABLES); /* Install the table into the global data structure */ Status = AcpiTbInitTableDescriptor (TableInfo->Type, TableInfo); - DEBUG_PRINT (ACPI_INFO, ("%s located at %p\n", + DEBUG_PRINTP (ACPI_INFO, ("%s located at %p\n", AcpiGbl_AcpiTableData[TableInfo->Type].Name, TableInfo->Pointer)); - AcpiCmReleaseMutex (ACPI_MTX_TABLES); + AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (Status); } @@ -241,8 +241,7 @@ AcpiTbRecognizeTable ( TableType = i; Status = AcpiGbl_AcpiTableData[i].Status; - DEBUG_PRINT (ACPI_INFO, - ("TbRecognizeTable: Found %4.4s\n", + DEBUG_PRINTP (ACPI_INFO, ("Found %4.4s\n", AcpiGbl_AcpiTableData[i].Signature)); break; } @@ -274,7 +273,7 @@ AcpiTbRecognizeTable ( if (Status == AE_SUPPORT) { - DEBUG_PRINT (ACPI_INFO, + DEBUG_PRINTP (ACPI_INFO, ("Unsupported table %s (Type %X) was found and discarded\n", AcpiGbl_AcpiTableData[TableType].Name, TableType)); } @@ -346,7 +345,7 @@ AcpiTbInitTableDescriptor ( if (ListHead->Pointer) { - TableDesc = AcpiCmCallocate (sizeof (ACPI_TABLE_DESC)); + TableDesc = AcpiUtCallocate (sizeof (ACPI_TABLE_DESC)); if (!TableDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -384,7 +383,7 @@ AcpiTbInitTableDescriptor ( TableDesc->AmlPointer = (UINT8 *) (TableDesc->Pointer + 1), TableDesc->AmlLength = (UINT32) (TableDesc->Length - (UINT32) sizeof (ACPI_TABLE_HEADER)); - TableDesc->TableId = AcpiCmAllocateOwnerId (OWNER_TYPE_TABLE); + TableDesc->TableId = AcpiUtAllocateOwnerId (OWNER_TYPE_TABLE); TableDesc->LoadedIntoNamespace = FALSE; /* @@ -464,7 +463,7 @@ AcpiTbDeleteAcpiTable ( } - AcpiCmAcquireMutex (ACPI_MTX_TABLES); + AcpiUtAcquireMutex (ACPI_MTX_TABLES); /* Free the table */ @@ -501,7 +500,7 @@ AcpiTbDeleteAcpiTable ( break; } - AcpiCmReleaseMutex (ACPI_MTX_TABLES); + AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_VOID; } @@ -587,7 +586,7 @@ AcpiTbDeleteSingleTable ( case ACPI_MEM_ALLOCATED: - AcpiCmFree (TableDesc->BasePointer); + AcpiUtFree (TableDesc->BasePointer); break; @@ -668,7 +667,7 @@ AcpiTbUninstallTable ( /* Free the table descriptor */ NextDesc = TableDesc->Next; - AcpiCmFree (TableDesc); + AcpiUtFree (TableDesc); } diff --git a/sys/contrib/dev/acpica/tbutils.c b/sys/contrib/dev/acpica/tbutils.c index 9bf9c75..0a4309e 100644 --- a/sys/contrib/dev/acpica/tbutils.c +++ b/sys/contrib/dev/acpica/tbutils.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbutils - Table manipulation utilities - * $Revision: 33 $ + * $Revision: 37 $ * *****************************************************************************/ @@ -121,7 +121,7 @@ #include "acinterp.h" -#define _COMPONENT TABLE_MANAGER +#define _COMPONENT ACPI_TABLES MODULE_NAME ("tbutils") @@ -277,11 +277,14 @@ AcpiTbValidateTableHeader ( ACPI_NAME Signature; + PROC_NAME ("TbValidateTableHeader"); + + /* Verify that this is a valid address */ if (!AcpiOsReadable (TableHeader, sizeof (ACPI_TABLE_HEADER))) { - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("Cannot read table header at %p\n", TableHeader)); return (AE_BAD_ADDRESS); } @@ -290,13 +293,13 @@ AcpiTbValidateTableHeader ( /* Ensure that the signature is 4 ASCII characters */ MOVE_UNALIGNED32_TO_32 (&Signature, &TableHeader->Signature); - if (!AcpiCmValidAcpiName (Signature)) + if (!AcpiUtValidAcpiName (Signature)) { - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("Table signature at %p [%X] has invalid characters\n", TableHeader, &Signature)); - REPORT_WARNING (("Invalid table signature found\n")); + REPORT_WARNING (("Invalid table signature %4.4s found\n", &Signature)); DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER)); return (AE_BAD_SIGNATURE); } @@ -306,7 +309,7 @@ AcpiTbValidateTableHeader ( if (TableHeader->Length < sizeof (ACPI_TABLE_HEADER)) { - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("Invalid length in table header %p name %4.4s\n", TableHeader, &Signature)); diff --git a/sys/contrib/dev/acpica/tbxface.c b/sys/contrib/dev/acpica/tbxface.c index d2bc9cb..4accd25 100644 --- a/sys/contrib/dev/acpica/tbxface.c +++ b/sys/contrib/dev/acpica/tbxface.c @@ -2,7 +2,7 @@ * * Module Name: tbxface - Public interfaces to the ACPI subsystem * ACPI table oriented interfaces - * $Revision: 34 $ + * $Revision: 38 $ * *****************************************************************************/ @@ -123,7 +123,7 @@ #include "actables.h" -#define _COMPONENT TABLE_MANAGER +#define _COMPONENT ACPI_TABLES MODULE_NAME ("tbxface") @@ -144,20 +144,28 @@ ACPI_STATUS AcpiLoadTables ( ACPI_PHYSICAL_ADDRESS RsdpPhysicalAddress) { - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; UINT32 NumberOfTables = 0; FUNCTION_TRACE ("AcpiLoadTables"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Map and validate the RSDP */ Status = AcpiTbVerifyRsdp (RsdpPhysicalAddress); if (ACPI_FAILURE (Status)) { REPORT_ERROR (("AcpiLoadTables: RSDP Failed validation: %s\n", - AcpiCmFormatException (Status))); + AcpiUtFormatException (Status))); goto ErrorExit; } @@ -167,7 +175,7 @@ AcpiLoadTables ( if (ACPI_FAILURE (Status)) { REPORT_ERROR (("AcpiLoadTables: Could not load RSDT: %s\n", - AcpiCmFormatException (Status))); + AcpiUtFormatException (Status))); goto ErrorExit; } @@ -177,11 +185,11 @@ AcpiLoadTables ( if (ACPI_FAILURE (Status)) { REPORT_ERROR (("AcpiLoadTables: Error getting required tables (DSDT/FADT/FACS): %s\n", - AcpiCmFormatException (Status))); + AcpiUtFormatException (Status))); goto ErrorExit; } - DEBUG_PRINT (ACPI_OK, ("ACPI Tables successfully loaded\n")); + DEBUG_PRINTP (ACPI_OK, ("ACPI Tables successfully loaded\n")); /* Load the namespace from the tables */ @@ -190,7 +198,7 @@ AcpiLoadTables ( if (ACPI_FAILURE (Status)) { REPORT_ERROR (("AcpiLoadTables: Could not load namespace: %s\n", - AcpiCmFormatException (Status))); + AcpiUtFormatException (Status))); goto ErrorExit; } @@ -199,7 +207,7 @@ AcpiLoadTables ( ErrorExit: REPORT_ERROR (("AcpiLoadTables: Could not load tables: %s\n", - AcpiCmFormatException (Status))); + AcpiUtFormatException (Status))); return_ACPI_STATUS (Status); } @@ -233,6 +241,15 @@ AcpiLoadTable ( FUNCTION_TRACE ("AcpiLoadTable"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + if (!TablePtr) { return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -289,11 +306,20 @@ AcpiUnloadTable ( ACPI_TABLE_TYPE TableType) { ACPI_TABLE_DESC *ListHead; + ACPI_STATUS Status; FUNCTION_TRACE ("AcpiUnloadTable"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Parameter validation */ if (TableType > ACPI_TABLE_MAX) @@ -362,6 +388,15 @@ AcpiGetTableHeader ( FUNCTION_TRACE ("AcpiGetTableHeader"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + if ((Instance == 0) || (TableType == ACPI_TABLE_RSDP) || (!OutTableHeader)) @@ -444,6 +479,15 @@ AcpiGetTable ( FUNCTION_TRACE ("AcpiGetTable"); + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* * If we have a buffer, we must have a length too */ diff --git a/sys/contrib/dev/acpica/tbxfroot.c b/sys/contrib/dev/acpica/tbxfroot.c index 4bcf9c9..14b09b1 100644 --- a/sys/contrib/dev/acpica/tbxfroot.c +++ b/sys/contrib/dev/acpica/tbxfroot.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbxfroot - Find the root ACPI table (RSDT) - * $Revision: 35 $ + * $Revision: 37 $ * *****************************************************************************/ @@ -121,7 +121,7 @@ #include "actables.h" -#define _COMPONENT TABLE_MANAGER +#define _COMPONENT ACPI_TABLES MODULE_NAME ("tbxfroot") #define RSDP_CHECKSUM_LENGTH 20 @@ -155,7 +155,7 @@ AcpiFindRootPointer ( Status = AcpiTbFindRsdp (&TableInfo); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, ("RSDP structure not found\n")); + DEBUG_PRINTP (ACPI_ERROR, ("RSDP structure not found\n")); return_ACPI_STATUS (AE_NO_ACPI_TABLES); } diff --git a/sys/contrib/dev/acpica/utalloc.c b/sys/contrib/dev/acpica/utalloc.c index 243ee21..ecef385 100644 --- a/sys/contrib/dev/acpica/utalloc.c +++ b/sys/contrib/dev/acpica/utalloc.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: cmalloc - local memory allocation routines - * $Revision: 84 $ + * Module Name: utalloc - local memory allocation routines + * $Revision: 90 $ * *****************************************************************************/ @@ -114,7 +114,7 @@ * *****************************************************************************/ -#define __CMALLOC_C__ +#define __UTALLOC_C__ #include "acpi.h" #include "acparser.h" @@ -122,8 +122,8 @@ #include "acnamesp.h" #include "acglobal.h" -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmalloc") +#define _COMPONENT ACPI_UTILITIES + MODULE_NAME ("utalloc") #ifdef ACPI_DEBUG_TRACK_ALLOCATIONS @@ -133,14 +133,14 @@ * gets compiled out when the ACPI_DEBUG flag is not set. * Every memory allocation is kept track of in a doubly linked list. Each * element contains the caller's component, module name, function name, and - * line number. _CmAllocate and _CmCallocate call AcpiCmAddElementToAllocList - * to add an element to the list; deletion occurs in the bosy of _CmFree. + * line number. _UtAllocate and _UtCallocate call AcpiUtAddElementToAllocList + * to add an element to the list; deletion occurs in the bosy of _UtFree. */ -/***************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiCmSearchAllocList + * FUNCTION: AcpiUtSearchAllocList * * PARAMETERS: Address - Address of allocated memory * @@ -148,13 +148,13 @@ * * DESCRIPTION: Searches for an element in the global allocation tracking list. * - ****************************************************************************/ + ******************************************************************************/ -ALLOCATION_INFO * -AcpiCmSearchAllocList ( +ACPI_ALLOCATION_INFO * +AcpiUtSearchAllocList ( void *Address) { - ALLOCATION_INFO *Element = AcpiGbl_HeadAllocPtr; + ACPI_ALLOCATION_INFO *Element = AcpiGbl_HeadAllocPtr; /* Search for the address. */ @@ -173,9 +173,9 @@ AcpiCmSearchAllocList ( } -/***************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiCmAddElementToAllocList + * FUNCTION: AcpiUtAddElementToAllocList * * PARAMETERS: Address - Address of allocated memory * Size - Size of the allocation @@ -188,10 +188,10 @@ AcpiCmSearchAllocList ( * * DESCRIPTION: Inserts an element into the global allocation tracking list. * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS -AcpiCmAddElementToAllocList ( +AcpiUtAddElementToAllocList ( void *Address, UINT32 Size, UINT8 AllocType, @@ -199,14 +199,14 @@ AcpiCmAddElementToAllocList ( NATIVE_CHAR *Module, UINT32 Line) { - ALLOCATION_INFO *Element; + ACPI_ALLOCATION_INFO *Element; ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("CmAddElementToAllocList", Address); + FUNCTION_TRACE_PTR ("UtAddElementToAllocList", Address); - AcpiCmAcquireMutex (ACPI_MTX_MEMORY); + AcpiUtAcquireMutex (ACPI_MTX_MEMORY); /* Keep track of the running total of all allocations. */ @@ -230,13 +230,10 @@ AcpiCmAddElementToAllocList ( if (NULL == AcpiGbl_HeadAllocPtr) { - AcpiGbl_HeadAllocPtr = - (ALLOCATION_INFO *) AcpiOsCallocate (sizeof (ALLOCATION_INFO)); - + AcpiGbl_HeadAllocPtr = AcpiOsCallocate (sizeof (ACPI_ALLOCATION_INFO)); if (!AcpiGbl_HeadAllocPtr) { - DEBUG_PRINT (ACPI_ERROR, - ("Could not allocate memory info block\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Could not allocate mem info block\n")); Status = AE_NO_MEMORY; goto UnlockAndExit; } @@ -246,12 +243,10 @@ AcpiCmAddElementToAllocList ( else { - AcpiGbl_TailAllocPtr->Next = - (ALLOCATION_INFO *) AcpiOsCallocate (sizeof (ALLOCATION_INFO)); + AcpiGbl_TailAllocPtr->Next = AcpiOsCallocate (sizeof (ACPI_ALLOCATION_INFO)); if (!AcpiGbl_TailAllocPtr->Next) { - DEBUG_PRINT (ACPI_ERROR, - ("Could not allocate memory info block\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Could not allocate mem info block\n")); Status = AE_NO_MEMORY; goto UnlockAndExit; } @@ -267,13 +262,13 @@ AcpiCmAddElementToAllocList ( * This will catch several kinds of problems. */ - Element = AcpiCmSearchAllocList (Address); + Element = AcpiUtSearchAllocList (Address); if (Element) { - REPORT_ERROR (("CmAddElementToAllocList: Address already present in list! (%p)\n", + REPORT_ERROR (("UtAddElementToAllocList: Address already present in list! (%p)\n", Address)); - DEBUG_PRINT (ACPI_ERROR, ("Element %p Address %p\n", Element, Address)); + DEBUG_PRINTP (ACPI_ERROR, ("Element %p Address %p\n", Element, Address)); BREAKPOINT3; } @@ -290,14 +285,14 @@ AcpiCmAddElementToAllocList ( UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_MEMORY); + AcpiUtReleaseMutex (ACPI_MTX_MEMORY); return_ACPI_STATUS (Status); } -/***************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiCmDeleteElementFromAllocList + * FUNCTION: AcpiUtDeleteElementFromAllocList * * PARAMETERS: Address - Address of allocated memory * Component - Component type of caller @@ -308,36 +303,36 @@ UnlockAndExit: * * DESCRIPTION: Deletes an element from the global allocation tracking list. * - ****************************************************************************/ + ******************************************************************************/ void -AcpiCmDeleteElementFromAllocList ( +AcpiUtDeleteElementFromAllocList ( void *Address, UINT32 Component, NATIVE_CHAR *Module, UINT32 Line) { - ALLOCATION_INFO *Element; + ACPI_ALLOCATION_INFO *Element; UINT32 *DwordPtr; UINT32 DwordLen; UINT32 Size; UINT32 i; - FUNCTION_TRACE ("CmDeleteElementFromAllocList"); + FUNCTION_TRACE ("UtDeleteElementFromAllocList"); if (NULL == AcpiGbl_HeadAllocPtr) { /* Boy we got problems. */ _REPORT_ERROR (Module, Line, Component, - ("CmDeleteElementFromAllocList: Empty allocation list, nothing to free!\n")); + ("UtDeleteElementFromAllocList: Empty allocation list, nothing to free!\n")); return_VOID; } - AcpiCmAcquireMutex (ACPI_MTX_MEMORY); + AcpiUtAcquireMutex (ACPI_MTX_MEMORY); /* Keep track of the amount of memory allocated. */ @@ -349,7 +344,7 @@ AcpiCmDeleteElementFromAllocList ( if (Address != AcpiGbl_HeadAllocPtr->Address) { _REPORT_ERROR (Module, Line, Component, - ("CmDeleteElementFromAllocList: Deleting non-allocated memory\n")); + ("UtDeleteElementFromAllocList: Deleting non-allocated memory\n")); goto Cleanup; } @@ -360,8 +355,8 @@ AcpiCmDeleteElementFromAllocList ( AcpiGbl_HeadAllocPtr = NULL; AcpiGbl_TailAllocPtr = NULL; - DEBUG_PRINT (TRACE_ALLOCATIONS, - ("_CmFree: Allocation list deleted. There are no outstanding allocations\n")); + DEBUG_PRINTP (TRACE_ALLOCATIONS, + ("Allocation list deleted. There are no outstanding allocations\n")); goto Cleanup; } @@ -369,7 +364,7 @@ AcpiCmDeleteElementFromAllocList ( /* Search list for this address */ - Element = AcpiCmSearchAllocList (Address); + Element = AcpiUtSearchAllocList (Address); if (Element) { /* cases: head, tail, other */ @@ -419,16 +414,17 @@ AcpiCmDeleteElementFromAllocList ( Size = Element->Size; - MEMSET (Element, 0xEA, sizeof (ALLOCATION_INFO)); + MEMSET (Element, 0xEA, sizeof (ACPI_ALLOCATION_INFO)); if (Size == sizeof (ACPI_OPERAND_OBJECT)) { - DEBUG_PRINT (TRACE_ALLOCATIONS, ("CmDelete: Freeing size %X (ACPI_OPERAND_OBJECT)\n", Size)); + DEBUG_PRINTP (TRACE_ALLOCATIONS, + ("Freeing size %X (ACPI_OPERAND_OBJECT)\n", Size)); } else { - DEBUG_PRINT (TRACE_ALLOCATIONS, ("CmDelete: Freeing size %X\n", Size)); + DEBUG_PRINTP (TRACE_ALLOCATIONS, ("Freeing size %X\n", Size)); } AcpiOsFree (Element); @@ -437,11 +433,10 @@ AcpiCmDeleteElementFromAllocList ( else { _REPORT_ERROR (Module, Line, Component, - ("_CmFree: Entry not found in list\n")); - DEBUG_PRINT (ACPI_ERROR, - ("_CmFree: Entry %p was not found in allocation list\n", + ("_UtFree: Entry not found in list\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Entry %p was not found in allocation list\n", Address)); - AcpiCmReleaseMutex (ACPI_MTX_MEMORY); + AcpiUtReleaseMutex (ACPI_MTX_MEMORY); return_VOID; } @@ -449,15 +444,15 @@ AcpiCmDeleteElementFromAllocList ( Cleanup: AcpiGbl_CurrentAllocSize -= Size; - AcpiCmReleaseMutex (ACPI_MTX_MEMORY); + AcpiUtReleaseMutex (ACPI_MTX_MEMORY); return_VOID; } -/***************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiCmDumpAllocationInfo + * FUNCTION: AcpiUtDumpAllocationInfo * * PARAMETERS: * @@ -465,13 +460,13 @@ Cleanup: * * DESCRIPTION: Print some info about the outstanding allocations. * - ****************************************************************************/ + ******************************************************************************/ void -AcpiCmDumpAllocationInfo ( +AcpiUtDumpAllocationInfo ( void) { - FUNCTION_TRACE ("CmDumpAllocationInfo"); + FUNCTION_TRACE ("UtDumpAllocationInfo"); DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, @@ -518,9 +513,9 @@ AcpiCmDumpAllocationInfo ( } -/***************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiCmDumpCurrentAllocations + * FUNCTION: AcpiUtDumpCurrentAllocations * * PARAMETERS: Component - Component(s) to dump info for. * Module - Module to dump info for. NULL means all. @@ -529,18 +524,18 @@ AcpiCmDumpAllocationInfo ( * * DESCRIPTION: Print a list of all outstanding allocations. * - ****************************************************************************/ + ******************************************************************************/ void -AcpiCmDumpCurrentAllocations ( +AcpiUtDumpCurrentAllocations ( UINT32 Component, NATIVE_CHAR *Module) { - ALLOCATION_INFO *Element = AcpiGbl_HeadAllocPtr; + ACPI_ALLOCATION_INFO *Element = AcpiGbl_HeadAllocPtr; UINT32 i; - FUNCTION_TRACE ("CmDumpCurrentAllocations"); + FUNCTION_TRACE ("UtDumpCurrentAllocations"); if (Element == NULL) @@ -555,7 +550,7 @@ AcpiCmDumpCurrentAllocations ( * Walk the allocation list. */ - AcpiCmAcquireMutex (ACPI_MTX_MEMORY); + AcpiUtAcquireMutex (ACPI_MTX_MEMORY); DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, ("Outstanding allocations:\n")); @@ -578,7 +573,7 @@ AcpiCmDumpCurrentAllocations ( case ACPI_DESC_TYPE_INTERNAL: DEBUG_PRINT_RAW (TRACE_ALLOCATIONS | TRACE_TABLES, (" ObjType %s", - AcpiCmGetTypeName (((ACPI_OPERAND_OBJECT *)(Element->Address))->Common.Type))); + AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)(Element->Address))->Common.Type))); break; case ACPI_DESC_TYPE_PARSER: @@ -610,7 +605,7 @@ AcpiCmDumpCurrentAllocations ( Element = Element->Next; } - AcpiCmReleaseMutex (ACPI_MTX_MEMORY); + AcpiUtReleaseMutex (ACPI_MTX_MEMORY); DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, ("Total number of unfreed allocations = %d(%X)\n", i,i)); @@ -621,9 +616,9 @@ AcpiCmDumpCurrentAllocations ( } #endif /* #ifdef ACPI_DEBUG_TRACK_ALLOCATIONS */ -/***************************************************************************** +/******************************************************************************* * - * FUNCTION: _CmAllocate + * FUNCTION: _UtAllocate * * PARAMETERS: Size - Size of the allocation * Component - Component type of caller @@ -634,10 +629,10 @@ AcpiCmDumpCurrentAllocations ( * * DESCRIPTION: The subsystem's equivalent of malloc. * - ****************************************************************************/ + ******************************************************************************/ void * -_CmAllocate ( +_UtAllocate ( UINT32 Size, UINT32 Component, NATIVE_CHAR *Module, @@ -646,7 +641,7 @@ _CmAllocate ( void *Address = NULL; - FUNCTION_TRACE_U32 ("_CmAllocate", Size); + FUNCTION_TRACE_U32 ("_UtAllocate", Size); /* Check for an inadvertent size of zero bytes */ @@ -654,7 +649,7 @@ _CmAllocate ( if (!Size) { _REPORT_ERROR (Module, Line, Component, - ("CmAllocate: Attempt to allocate zero bytes\n")); + ("UtAllocate: Attempt to allocate zero bytes\n")); Size = 1; } @@ -664,31 +659,30 @@ _CmAllocate ( /* Report allocation error */ _REPORT_ERROR (Module, Line, Component, - ("CmAllocate: Could not allocate size %X\n", Size)); + ("UtAllocate: Could not allocate size %X\n", Size)); - return_VALUE (NULL); + return_PTR (NULL); } #ifdef ACPI_DEBUG_TRACK_ALLOCATIONS - if (ACPI_FAILURE (AcpiCmAddElementToAllocList (Address, Size, MEM_MALLOC, + if (ACPI_FAILURE (AcpiUtAddElementToAllocList (Address, Size, MEM_MALLOC, Component, Module, Line))) { AcpiOsFree (Address); return_PTR (NULL); } - DEBUG_PRINT (TRACE_ALLOCATIONS, - ("CmAllocate: %p Size %X\n", Address, Size)); + DEBUG_PRINTP (TRACE_ALLOCATIONS, ("%p Size %X\n", Address, Size)); #endif return_PTR (Address); } -/***************************************************************************** +/******************************************************************************* * - * FUNCTION: _CmCallocate + * FUNCTION: _UtCallocate * * PARAMETERS: Size - Size of the allocation * Component - Component type of caller @@ -699,10 +693,10 @@ _CmAllocate ( * * DESCRIPTION: Subsystem equivalent of calloc. * - ****************************************************************************/ + ******************************************************************************/ void * -_CmCallocate ( +_UtCallocate ( UINT32 Size, UINT32 Component, NATIVE_CHAR *Module, @@ -711,7 +705,7 @@ _CmCallocate ( void *Address = NULL; - FUNCTION_TRACE_U32 ("_CmCallocate", Size); + FUNCTION_TRACE_U32 ("_UtCallocate", Size); /* Check for an inadvertent size of zero bytes */ @@ -719,25 +713,24 @@ _CmCallocate ( if (!Size) { _REPORT_ERROR (Module, Line, Component, - ("CmCallocate: Attempt to allocate zero bytes\n")); - return_VALUE (NULL); + ("UtCallocate: Attempt to allocate zero bytes\n")); + return_PTR (NULL); } Address = AcpiOsCallocate (Size); - if (!Address) { /* Report allocation error */ _REPORT_ERROR (Module, Line, Component, - ("CmCallocate: Could not allocate size %X\n", Size)); - return_VALUE (NULL); + ("UtCallocate: Could not allocate size %X\n", Size)); + return_PTR (NULL); } #ifdef ACPI_DEBUG_TRACK_ALLOCATIONS - if (ACPI_FAILURE (AcpiCmAddElementToAllocList (Address, Size, MEM_CALLOC, + if (ACPI_FAILURE (AcpiUtAddElementToAllocList (Address, Size, MEM_CALLOC, Component,Module, Line))) { AcpiOsFree (Address); @@ -745,16 +738,15 @@ _CmCallocate ( } #endif - DEBUG_PRINT (TRACE_ALLOCATIONS, - ("CmCallocate: %p Size %X\n", Address, Size)); + DEBUG_PRINTP (TRACE_ALLOCATIONS, ("%p Size %X\n", Address, Size)); return_PTR (Address); } -/***************************************************************************** +/******************************************************************************* * - * FUNCTION: _CmFree + * FUNCTION: _UtFree * * PARAMETERS: Address - Address of the memory to deallocate * Component - Component type of caller @@ -765,33 +757,33 @@ _CmCallocate ( * * DESCRIPTION: Frees the memory at Address * - ****************************************************************************/ + ******************************************************************************/ void -_CmFree ( +_UtFree ( void *Address, UINT32 Component, NATIVE_CHAR *Module, UINT32 Line) { - FUNCTION_TRACE_PTR ("_CmFree", Address); + FUNCTION_TRACE_PTR ("_UtFree", Address); if (NULL == Address) { _REPORT_ERROR (Module, Line, Component, - ("_CmFree: Trying to delete a NULL address\n")); + ("_UtFree: Trying to delete a NULL address\n")); return_VOID; } #ifdef ACPI_DEBUG_TRACK_ALLOCATIONS - AcpiCmDeleteElementFromAllocList (Address, Component, Module, Line); + AcpiUtDeleteElementFromAllocList (Address, Component, Module, Line); #endif AcpiOsFree (Address); - DEBUG_PRINT (TRACE_ALLOCATIONS, ("CmFree: %p freed\n", Address)); + DEBUG_PRINTP (TRACE_ALLOCATIONS, ("%p freed\n", Address)); return_VOID; } diff --git a/sys/contrib/dev/acpica/utclib.c b/sys/contrib/dev/acpica/utclib.c index 2318d9e..5b5b0e0 100644 --- a/sys/contrib/dev/acpica/utclib.c +++ b/sys/contrib/dev/acpica/utclib.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: cmclib - Local implementation of C library functions - * $Revision: 32 $ + * $Revision: 38 $ * *****************************************************************************/ @@ -149,11 +149,11 @@ ******************************************************************************/ -NATIVE_UINT -AcpiCmStrlen ( +UINT32 +AcpiUtStrlen ( const NATIVE_CHAR *String) { - NATIVE_UINT Length = 0; + UINT32 Length = 0; /* Count the string until a null is encountered */ @@ -182,7 +182,7 @@ AcpiCmStrlen ( ******************************************************************************/ NATIVE_CHAR * -AcpiCmStrcpy ( +AcpiUtStrcpy ( NATIVE_CHAR *DstString, const NATIVE_CHAR *SrcString) { @@ -222,7 +222,7 @@ AcpiCmStrcpy ( ******************************************************************************/ NATIVE_CHAR * -AcpiCmStrncpy ( +AcpiUtStrncpy ( NATIVE_CHAR *DstString, const NATIVE_CHAR *SrcString, NATIVE_UINT Count) @@ -264,7 +264,7 @@ AcpiCmStrncpy ( ******************************************************************************/ UINT32 -AcpiCmStrcmp ( +AcpiUtStrcmp ( const NATIVE_CHAR *String1, const NATIVE_CHAR *String2) { @@ -298,7 +298,7 @@ AcpiCmStrcmp ( ******************************************************************************/ UINT32 -AcpiCmStrncmp ( +AcpiUtStrncmp ( const NATIVE_CHAR *String1, const NATIVE_CHAR *String2, NATIVE_UINT Count) @@ -332,7 +332,7 @@ AcpiCmStrncmp ( ******************************************************************************/ NATIVE_CHAR * -AcpiCmStrcat ( +AcpiUtStrcat ( NATIVE_CHAR *DstString, const NATIVE_CHAR *SrcString) { @@ -369,7 +369,7 @@ AcpiCmStrcat ( ******************************************************************************/ NATIVE_CHAR * -AcpiCmStrncat ( +AcpiUtStrncat ( NATIVE_CHAR *DstString, const NATIVE_CHAR *SrcString, NATIVE_UINT Count) @@ -416,7 +416,7 @@ AcpiCmStrncat ( ******************************************************************************/ void * -AcpiCmMemcpy ( +AcpiUtMemcpy ( void *Dest, const void *Src, NATIVE_UINT Count) @@ -452,7 +452,7 @@ AcpiCmMemcpy ( ******************************************************************************/ void * -AcpiCmMemset ( +AcpiUtMemset ( void *Dest, NATIVE_UINT Value, NATIVE_UINT Count) @@ -635,7 +635,7 @@ static const UINT8 _acpi_ctype[257] = { /******************************************************************************* * - * FUNCTION: AcpiCmToUpper + * FUNCTION: AcpiUtToUpper * * PARAMETERS: * @@ -646,7 +646,7 @@ static const UINT8 _acpi_ctype[257] = { ******************************************************************************/ UINT32 -AcpiCmToUpper ( +AcpiUtToUpper ( UINT32 c) { @@ -656,7 +656,7 @@ AcpiCmToUpper ( /******************************************************************************* * - * FUNCTION: AcpiCmToLower + * FUNCTION: AcpiUtToLower * * PARAMETERS: * @@ -667,7 +667,7 @@ AcpiCmToUpper ( ******************************************************************************/ UINT32 -AcpiCmToLower ( +AcpiUtToLower ( UINT32 c) { @@ -677,38 +677,6 @@ AcpiCmToLower ( /******************************************************************************* * - * FUNCTION: strupr - * - * PARAMETERS: SrcString - The source string to convert to - * - * RETURN: SrcString - * - * DESCRIPTION: Convert string to uppercase - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiCmStrupr ( - NATIVE_CHAR *SrcString) -{ - NATIVE_CHAR *String; - - - /* Walk entire string, uppercasing the letters */ - - for (String = SrcString; *String; ) - { - *String = (char) AcpiCmToUpper (*String); - String++; - } - - - return (SrcString); -} - - -/******************************************************************************* - * * FUNCTION: strstr * * PARAMETERS: String1 - @@ -723,14 +691,14 @@ AcpiCmStrupr ( ******************************************************************************/ NATIVE_CHAR * -AcpiCmStrstr ( +AcpiUtStrstr ( NATIVE_CHAR *String1, NATIVE_CHAR *String2) { NATIVE_CHAR *String; - if (AcpiCmStrlen (String2) > AcpiCmStrlen (String1)) + if (AcpiUtStrlen (String2) > AcpiUtStrlen (String1)) { return (NULL); } @@ -768,10 +736,10 @@ AcpiCmStrstr ( ******************************************************************************/ UINT32 -AcpiCmStrtoul ( +AcpiUtStrtoul ( const NATIVE_CHAR *String, NATIVE_CHAR **Terminator, - NATIVE_UINT Base) + UINT32 Base) { UINT32 converted = 0; UINT32 index; @@ -821,7 +789,7 @@ AcpiCmStrtoul ( { if (*String == '0') { - if (AcpiCmToLower (*(++String)) == 'x') + if (AcpiUtToLower (*(++String)) == 'x') { Base = 16; ++String; @@ -859,7 +827,7 @@ AcpiCmStrtoul ( if (Base == 16 && *String == '0' && - AcpiCmToLower (*(++String)) == 'x') + AcpiUtToLower (*(++String)) == 'x') { String++; } @@ -877,7 +845,7 @@ AcpiCmStrtoul ( else { - index = AcpiCmToUpper (*String); + index = AcpiUtToUpper (*String); if (IS_UPPER (index)) { index = index - 'A' + 10; diff --git a/sys/contrib/dev/acpica/utcopy.c b/sys/contrib/dev/acpica/utcopy.c index a081e83..4e5ef80 100644 --- a/sys/contrib/dev/acpica/utcopy.c +++ b/sys/contrib/dev/acpica/utcopy.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: cmcopy - Internal to external object translation utilities - * $Revision: 66 $ + * Module Name: utcopy - Internal to external object translation utilities + * $Revision: 74 $ * *****************************************************************************/ @@ -114,7 +114,7 @@ * *****************************************************************************/ -#define __CMCOPY_C__ +#define __UTCOPY_C__ #include "acpi.h" #include "acinterp.h" @@ -122,14 +122,13 @@ #include "amlcode.h" -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmcopy") - +#define _COMPONENT ACPI_UTILITIES + MODULE_NAME ("utcopy") /******************************************************************************* * - * FUNCTION: AcpiCmCopyIsimpleToEsimple + * FUNCTION: AcpiUtCopyIsimpleToEsimple * * PARAMETERS: *InternalObject - Pointer to the object we are examining * *Buffer - Where the object is returned @@ -145,7 +144,7 @@ ******************************************************************************/ static ACPI_STATUS -AcpiCmCopyIsimpleToEsimple ( +AcpiUtCopyIsimpleToEsimple ( ACPI_OPERAND_OBJECT *InternalObject, ACPI_OBJECT *ExternalObject, UINT8 *DataSpace, @@ -155,7 +154,7 @@ AcpiCmCopyIsimpleToEsimple ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("CmCopyIsimpleToEsimple"); + FUNCTION_TRACE ("UtCopyIsimpleToEsimple"); /* @@ -215,7 +214,7 @@ AcpiCmCopyIsimpleToEsimple ( * This is an object reference. Attempt to dereference it. */ - switch (InternalObject->Reference.OpCode) + switch (InternalObject->Reference.Opcode) { case AML_ZERO_OP: ExternalObject->Type = ACPI_TYPE_INTEGER; @@ -232,7 +231,7 @@ AcpiCmCopyIsimpleToEsimple ( ExternalObject->Integer.Value = ACPI_INTEGER_MAX; break; - case AML_NAMEPATH_OP: + case AML_INT_NAMEPATH_OP: /* * This is a named reference, get the string. We already know that * we have room for it, use max length @@ -242,13 +241,17 @@ AcpiCmCopyIsimpleToEsimple ( ExternalObject->String.Pointer = (NATIVE_CHAR *) DataSpace; Status = AcpiNsHandleToPathname ((ACPI_HANDLE *) InternalObject->Reference.Node, &Length, (char *) DataSpace); + + /* Converted (external) string length is returned from above */ + + ExternalObject->String.Length = Length; break; 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; @@ -266,7 +269,7 @@ AcpiCmCopyIsimpleToEsimple ( case ACPI_TYPE_POWER: - ExternalObject->PowerResource.SystemLevel = + ExternalObject->PowerResource.SystemLevel = InternalObject->PowerResource.SystemLevel; ExternalObject->PowerResource.ResourceOrder = @@ -283,7 +286,6 @@ AcpiCmCopyIsimpleToEsimple ( } - *BufferSpaceUsed = (UINT32) ROUND_UP_TO_NATIVE_WORD (Length); return_ACPI_STATUS (Status); @@ -292,7 +294,7 @@ AcpiCmCopyIsimpleToEsimple ( /******************************************************************************* * - * FUNCTION: AcpiCmCopyIelementToEelement + * FUNCTION: AcpiUtCopyIelementToEelement * * PARAMETERS: ACPI_PKG_CALLBACK * @@ -303,7 +305,7 @@ AcpiCmCopyIsimpleToEsimple ( ******************************************************************************/ ACPI_STATUS -AcpiCmCopyIelementToEelement ( +AcpiUtCopyIelementToEelement ( UINT8 ObjectType, ACPI_OPERAND_OBJECT *SourceObject, ACPI_GENERIC_STATE *State, @@ -316,7 +318,6 @@ AcpiCmCopyIelementToEelement ( ACPI_OBJECT *TargetObject; - ThisIndex = State->Pkg.Index; TargetObject = (ACPI_OBJECT *) &((ACPI_OBJECT *)(State->Pkg.DestObject))->Package.Elements[ThisIndex]; @@ -324,13 +325,13 @@ AcpiCmCopyIelementToEelement ( switch (ObjectType) { - case 0: + case ACPI_COPY_TYPE_SIMPLE: /* * This is a simple or null object -- get the size */ - Status = AcpiCmCopyIsimpleToEsimple (SourceObject, + Status = AcpiUtCopyIsimpleToEsimple (SourceObject, TargetObject, Info->FreeSpace, &ObjectSpace); if (ACPI_FAILURE (Status)) { @@ -339,7 +340,7 @@ AcpiCmCopyIelementToEelement ( break; - case 1: + case ACPI_COPY_TYPE_PACKAGE: /* * Build the package object @@ -375,7 +376,7 @@ AcpiCmCopyIelementToEelement ( /******************************************************************************* * - * FUNCTION: AcpiCmCopyIpackageToEpackage + * FUNCTION: AcpiUtCopyIpackageToEpackage * * PARAMETERS: *InternalObject - Pointer to the object we are returning * *Buffer - Where the object is returned @@ -388,12 +389,12 @@ AcpiCmCopyIelementToEelement ( * * The buffer is assumed to have sufficient space for the object. * The caller must have verified the buffer length needed using the - * AcpiCmGetObjectSize function before calling this function. + * AcpiUtGetObjectSize function before calling this function. * ******************************************************************************/ static ACPI_STATUS -AcpiCmCopyIpackageToEpackage ( +AcpiUtCopyIpackageToEpackage ( ACPI_OPERAND_OBJECT *InternalObject, UINT8 *Buffer, UINT32 *SpaceUsed) @@ -403,7 +404,7 @@ AcpiCmCopyIpackageToEpackage ( ACPI_PKG_INFO Info; - FUNCTION_TRACE ("CmCopyIpackageToEpackage"); + FUNCTION_TRACE ("UtCopyIpackageToEpackage"); /* @@ -420,7 +421,6 @@ AcpiCmCopyIpackageToEpackage ( Info.FreeSpace = Buffer + ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - ExternalObject->Type = InternalObject->Common.Type; ExternalObject->Package.Count = InternalObject->Package.Count; ExternalObject->Package.Elements = (ACPI_OBJECT *) Info.FreeSpace; @@ -435,8 +435,8 @@ AcpiCmCopyIpackageToEpackage ( ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - Status = AcpiCmWalkPackageTree (InternalObject, ExternalObject, - AcpiCmCopyIelementToEelement, &Info); + Status = AcpiUtWalkPackageTree (InternalObject, ExternalObject, + AcpiUtCopyIelementToEelement, &Info); *SpaceUsed = Info.Length; @@ -446,12 +446,12 @@ AcpiCmCopyIpackageToEpackage ( /******************************************************************************* * - * FUNCTION: AcpiCmCopyIobjectToEobject + * FUNCTION: AcpiUtCopyIobjectToEobject * * PARAMETERS: *InternalObject - The internal object to be converted * *BufferPtr - Where the object is returned * - * RETURN: Status + * RETURN: Status * * DESCRIPTION: This function is called to build an API object to be returned to * the caller. @@ -459,23 +459,23 @@ AcpiCmCopyIpackageToEpackage ( ******************************************************************************/ ACPI_STATUS -AcpiCmCopyIobjectToEobject ( +AcpiUtCopyIobjectToEobject ( ACPI_OPERAND_OBJECT *InternalObject, ACPI_BUFFER *RetBuffer) { ACPI_STATUS Status; - FUNCTION_TRACE ("CmCopyIobjectToEobject"); + FUNCTION_TRACE ("UtCopyIobjectToEobject"); if (IS_THIS_OBJECT_TYPE (InternalObject, ACPI_TYPE_PACKAGE)) { /* - * Package object: Copy all subobjects (including + * Package object: Copy all subobjects (including * nested packages) */ - Status = AcpiCmCopyIpackageToEpackage (InternalObject, + Status = AcpiUtCopyIpackageToEpackage (InternalObject, RetBuffer->Pointer, &RetBuffer->Length); } @@ -484,7 +484,7 @@ AcpiCmCopyIobjectToEobject ( /* * Build a simple object (no nested objects) */ - Status = AcpiCmCopyIsimpleToEsimple (InternalObject, + Status = AcpiUtCopyIsimpleToEsimple (InternalObject, (ACPI_OBJECT *) RetBuffer->Pointer, ((UINT8 *) RetBuffer->Pointer + ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), @@ -500,10 +500,9 @@ AcpiCmCopyIobjectToEobject ( } - /******************************************************************************* * - * FUNCTION: AcpiCmCopyEsimpleToIsimple + * FUNCTION: AcpiUtCopyEsimpleToIsimple * * PARAMETERS: *ExternalObject - The external object to be converted * *InternalObject - Where the internal object is returned @@ -518,12 +517,12 @@ AcpiCmCopyIobjectToEobject ( ******************************************************************************/ ACPI_STATUS -AcpiCmCopyEsimpleToIsimple ( +AcpiUtCopyEsimpleToIsimple ( ACPI_OBJECT *ExternalObject, ACPI_OPERAND_OBJECT *InternalObject) { - FUNCTION_TRACE ("CmCopyEsimpleToIsimple"); + FUNCTION_TRACE ("UtCopyEsimpleToIsimple"); InternalObject->Common.Type = (UINT8) ExternalObject->Type; @@ -569,7 +568,7 @@ AcpiCmCopyEsimpleToIsimple ( /******************************************************************************* * - * FUNCTION: AcpiCmCopyEpackageToIpackage + * FUNCTION: AcpiUtCopyEpackageToIpackage * * PARAMETERS: *InternalObject - Pointer to the object we are returning * *Buffer - Where the object is returned @@ -582,12 +581,12 @@ AcpiCmCopyEsimpleToIsimple ( * * The buffer is assumed to have sufficient space for the object. * The caller must have verified the buffer length needed using the - * AcpiCmGetObjectSize function before calling this function. + * AcpiUtGetObjectSize function before calling this function. * ******************************************************************************/ static ACPI_STATUS -AcpiCmCopyEpackageToIpackage ( +AcpiUtCopyEpackageToIpackage ( ACPI_OPERAND_OBJECT *InternalObject, UINT8 *Buffer, UINT32 *SpaceUsed) @@ -601,7 +600,7 @@ AcpiCmCopyEpackageToIpackage ( ACPI_OBJECT *ThisExternalObj; - FUNCTION_TRACE ("CmCopyEpackageToIpackage"); + FUNCTION_TRACE ("UtCopyEpackageToIpackage"); /* @@ -637,7 +636,7 @@ AcpiCmCopyEpackageToIpackage ( /******************************************************************************* * - * FUNCTION: AcpiCmCopyEobjectToIobject + * FUNCTION: AcpiUtCopyEobjectToIobject * * PARAMETERS: *InternalObject - The external object to be converted * *BufferPtr - Where the internal object is returned @@ -649,14 +648,14 @@ AcpiCmCopyEpackageToIpackage ( ******************************************************************************/ ACPI_STATUS -AcpiCmCopyEobjectToIobject ( +AcpiUtCopyEobjectToIobject ( ACPI_OBJECT *ExternalObject, ACPI_OPERAND_OBJECT *InternalObject) { ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiCmCopyEobjectToIobject"); + FUNCTION_TRACE ("UtCopyEobjectToIobject"); if (ExternalObject->Type == ACPI_TYPE_PACKAGE) @@ -670,12 +669,11 @@ AcpiCmCopyEobjectToIobject ( * control methods only. This is a very, very rare case. */ /* - Status = AcpiCmCopyEpackageToIpackage(InternalObject, + Status = AcpiUtCopyEpackageToIpackage(InternalObject, RetBuffer->Pointer, &RetBuffer->Length); */ - DEBUG_PRINT (ACPI_ERROR, - ("AcpiCmCopyEobjectToIobject: Packages as parameters not implemented!\n")); + DEBUG_PRINTP (ACPI_ERROR, ("Packages as parameters not implemented!\n")); return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } @@ -685,7 +683,7 @@ AcpiCmCopyEobjectToIobject ( /* * Build a simple object (no nested objects) */ - Status = AcpiCmCopyEsimpleToIsimple (ExternalObject, InternalObject); + Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, InternalObject); /* * build simple does not include the object size in the length * so we add it in here @@ -696,10 +694,9 @@ AcpiCmCopyEobjectToIobject ( } - /******************************************************************************* * - * FUNCTION: AcpiCmCopyIelementToIelement + * FUNCTION: AcpiUtCopyIelementToIelement * * PARAMETERS: ACPI_PKG_CALLBACK * @@ -710,7 +707,7 @@ AcpiCmCopyEobjectToIobject ( ******************************************************************************/ ACPI_STATUS -AcpiCmCopyIelementToIelement ( +AcpiUtCopyIelementToIelement ( UINT8 ObjectType, ACPI_OPERAND_OBJECT *SourceObject, ACPI_GENERIC_STATE *State, @@ -722,9 +719,8 @@ AcpiCmCopyIelementToIelement ( ACPI_OPERAND_OBJECT *TargetObject; - ThisIndex = State->Pkg.Index; - ThisTargetPtr = (ACPI_OPERAND_OBJECT **) + ThisTargetPtr = (ACPI_OPERAND_OBJECT **) &State->Pkg.DestObject->Package.Elements[ThisIndex]; switch (ObjectType) @@ -734,13 +730,13 @@ AcpiCmCopyIelementToIelement ( /* * This is a simple object, just copy it */ - TargetObject = AcpiCmCreateInternalObject (SourceObject->Common.Type); + TargetObject = AcpiUtCreateInternalObject (SourceObject->Common.Type); if (!TargetObject) { return (AE_NO_MEMORY); } - Status = AcpiAmlStoreObjectToObject (SourceObject, TargetObject, + Status = AcpiExStoreObjectToObject (SourceObject, TargetObject, (ACPI_WALK_STATE *) Context); if (ACPI_FAILURE (Status)) { @@ -753,10 +749,10 @@ AcpiCmCopyIelementToIelement ( case 1: /* - * This object is a package - go down another nesting level + * This object is a package - go down another nesting level * Create and build the package object */ - TargetObject = AcpiCmCreateInternalObject (ACPI_TYPE_PACKAGE); + TargetObject = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE); if (!TargetObject) { /* TBD: must delete package created up to this point */ @@ -788,7 +784,7 @@ AcpiCmCopyIelementToIelement ( /******************************************************************************* * - * FUNCTION: AcpiCmCopyIpackageToIpackage + * FUNCTION: AcpiUtCopyIpackageToIpackage * * PARAMETERS: *SourceObj - Pointer to the source package object * *DestObj - Where the internal object is returned @@ -801,15 +797,14 @@ AcpiCmCopyIelementToIelement ( ******************************************************************************/ ACPI_STATUS -AcpiCmCopyIpackageToIpackage ( +AcpiUtCopyIpackageToIpackage ( ACPI_OPERAND_OBJECT *SourceObj, ACPI_OPERAND_OBJECT *DestObj, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("CmCopyIpackageToIpackage"); - + FUNCTION_TRACE ("UtCopyIpackageToIpackage"); DestObj->Common.Type = SourceObj->Common.Type; @@ -820,7 +815,7 @@ AcpiCmCopyIpackageToIpackage ( * Create the object array and walk the source package tree */ - DestObj->Package.Elements = AcpiCmCallocate ((SourceObj->Package.Count + 1) * + DestObj->Package.Elements = AcpiUtCallocate ((SourceObj->Package.Count + 1) * sizeof (void *)); DestObj->Package.NextElement = DestObj->Package.Elements; @@ -832,8 +827,8 @@ AcpiCmCopyIpackageToIpackage ( } - Status = AcpiCmWalkPackageTree (SourceObj, DestObj, - AcpiCmCopyIelementToIelement, WalkState); + Status = AcpiUtWalkPackageTree (SourceObj, DestObj, + AcpiUtCopyIelementToIelement, WalkState); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/utdebug.c b/sys/contrib/dev/acpica/utdebug.c index 5792a13..0a27da2 100644 --- a/sys/contrib/dev/acpica/utdebug.c +++ b/sys/contrib/dev/acpica/utdebug.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: cmdebug - Debug print routines - * $Revision: 64 $ + * Module Name: utdebug - Debug print routines + * $Revision: 72 $ * *****************************************************************************/ @@ -114,14 +114,16 @@ * *****************************************************************************/ -#define __CMDEBUG_C__ +#define __UTDEBUG_C__ #include "acpi.h" -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmdebug") +#define _COMPONENT ACPI_UTILITIES + MODULE_NAME ("utdebug") +UINT32 PrevThreadId = 0xFFFFFFFF; + /***************************************************************************** * * FUNCTION: Get/Set debug level @@ -344,7 +346,7 @@ FunctionStatusExit ( " %2.2ld Exiting Function: %s, %s\n", AcpiGbl_NestingLevel, FunctionName, - AcpiCmFormatException (Status)); + AcpiUtFormatException (Status)); AcpiGbl_NestingLevel--; } @@ -446,6 +448,10 @@ DebugPrint ( ...) { va_list args; + UINT32 ThreadId; + + + ThreadId = AcpiOsGetThreadId (); /* Both the level and the component must be enabled */ @@ -455,7 +461,26 @@ DebugPrint ( { va_start (args, Format); - AcpiOsPrintf ("%8s-%04d: ", ModuleName, LineNumber); + if (ThreadId != PrevThreadId) + { + if (TRACE_THREADS & AcpiDbgLevel) + { + AcpiOsPrintf ("\n**** Context Switch from TID %X to TID %X ****\n\n", + PrevThreadId, ThreadId); + } + + PrevThreadId = ThreadId; + } + + if (TRACE_THREADS & AcpiDbgLevel) + { + AcpiOsPrintf ("%8s-%04d[%04X]: ", ModuleName, LineNumber, ThreadId); + } + else + { + AcpiOsPrintf ("%8s-%04d: ", ModuleName, LineNumber); + } + AcpiOsVprintf (Format, args); } } @@ -481,9 +506,31 @@ DebugPrintPrefix ( NATIVE_CHAR *ModuleName, UINT32 LineNumber) { + UINT32 ThreadId; + + + ThreadId = AcpiOsGetThreadId (); + + if (ThreadId != PrevThreadId) + { + if (TRACE_THREADS & AcpiDbgLevel) + { + AcpiOsPrintf ("\n**** Context Switch from TID %X to TID %X ****\n\n", + PrevThreadId, ThreadId); + } + PrevThreadId = ThreadId; + } + + if (TRACE_THREADS & AcpiDbgLevel) + { + AcpiOsPrintf ("%8s-%04d[%04X]: ", ModuleName, LineNumber, ThreadId); + } + else + { + AcpiOsPrintf ("%8s-%04d: ", ModuleName, LineNumber); + } - AcpiOsPrintf ("%8s-%04d: ", ModuleName, LineNumber); } @@ -518,7 +565,7 @@ DebugPrintRaw ( /***************************************************************************** * - * FUNCTION: AcpiCmDumpBuffer + * FUNCTION: AcpiUtDumpBuffer * * PARAMETERS: Buffer - Buffer to dump * Count - Amount to dump, in bytes @@ -531,7 +578,7 @@ DebugPrintRaw ( ****************************************************************************/ void -AcpiCmDumpBuffer ( +AcpiUtDumpBuffer ( UINT8 *Buffer, UINT32 Count, UINT32 Display, diff --git a/sys/contrib/dev/acpica/utdelete.c b/sys/contrib/dev/acpica/utdelete.c index 34a42ae..8a7409a 100644 --- a/sys/contrib/dev/acpica/utdelete.c +++ b/sys/contrib/dev/acpica/utdelete.c @@ -1,7 +1,7 @@ /******************************************************************************* * - * Module Name: cmdelete - object deletion and reference count utilities - * $Revision: 62 $ + * Module Name: utdelete - object deletion and reference count utilities + * $Revision: 71 $ * ******************************************************************************/ @@ -114,7 +114,7 @@ * *****************************************************************************/ -#define __CMDELETE_C__ +#define __UTDELETE_C__ #include "acpi.h" #include "acinterp.h" @@ -122,13 +122,13 @@ #include "actables.h" #include "acparser.h" -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmdelete") +#define _COMPONENT ACPI_UTILITIES + MODULE_NAME ("utdelete") /******************************************************************************* * - * FUNCTION: AcpiCmDeleteInternalObj + * FUNCTION: AcpiUtDeleteInternalObj * * PARAMETERS: *Object - Pointer to the list to be deleted * @@ -140,14 +140,14 @@ ******************************************************************************/ void -AcpiCmDeleteInternalObj ( +AcpiUtDeleteInternalObj ( ACPI_OPERAND_OBJECT *Object) { void *ObjPointer = NULL; ACPI_OPERAND_OBJECT *HandlerDesc; - FUNCTION_TRACE_PTR ("CmDeleteInternalObj", Object); + FUNCTION_TRACE_PTR ("UtDeleteInternalObj", Object); if (!Object) @@ -165,8 +165,7 @@ AcpiCmDeleteInternalObj ( case ACPI_TYPE_STRING: - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: **** String %p, ptr %p\n", + DEBUG_PRINTP (ACPI_INFO, ("**** String %p, ptr %p\n", Object, Object->String.Pointer)); /* Free the actual string buffer */ @@ -177,8 +176,7 @@ AcpiCmDeleteInternalObj ( case ACPI_TYPE_BUFFER: - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: **** Buffer %p, ptr %p\n", + DEBUG_PRINTP (ACPI_INFO, ("**** Buffer %p, ptr %p\n", Object, Object->Buffer.Pointer)); /* Free the actual buffer */ @@ -189,8 +187,7 @@ AcpiCmDeleteInternalObj ( case ACPI_TYPE_PACKAGE: - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: **** Package of count %X\n", + DEBUG_PRINTP (ACPI_INFO, (" **** Package of count %X\n", Object->Package.Count)); /* @@ -206,18 +203,17 @@ AcpiCmDeleteInternalObj ( case ACPI_TYPE_MUTEX: - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: ***** Mutex %p, Semaphore %p\n", + DEBUG_PRINTP (ACPI_INFO, ("***** Mutex %p, Semaphore %p\n", Object, Object->Mutex.Semaphore)); + AcpiExUnlinkMutex (Object); AcpiOsDeleteSemaphore (Object->Mutex.Semaphore); break; case ACPI_TYPE_EVENT: - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: ***** Event %p, Semaphore %p\n", + DEBUG_PRINTP (ACPI_INFO, ("***** Event %p, Semaphore %p\n", Object, Object->Event.Semaphore)); AcpiOsDeleteSemaphore (Object->Event.Semaphore); @@ -227,8 +223,7 @@ AcpiCmDeleteInternalObj ( case ACPI_TYPE_METHOD: - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: ***** Method %p\n", Object)); + DEBUG_PRINTP (ACPI_INFO, ("***** Method %p\n", Object)); /* Delete the method semaphore if it exists */ @@ -243,10 +238,7 @@ AcpiCmDeleteInternalObj ( case ACPI_TYPE_REGION: - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: ***** Region %p\n", - Object)); - + DEBUG_PRINTP (ACPI_INFO, ("***** Region %p\n", Object)); if (Object->Region.Extra) { @@ -264,20 +256,18 @@ AcpiCmDeleteInternalObj ( /* Now we can free the Extra object */ - AcpiCmDeleteObjectDesc (Object->Region.Extra); + AcpiUtDeleteObjectDesc (Object->Region.Extra); } break; - case ACPI_TYPE_FIELD_UNIT: + case ACPI_TYPE_BUFFER_FIELD: - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: ***** FieldUnit %p\n", - Object)); + DEBUG_PRINTP (ACPI_INFO, ("***** Buffer Field %p\n", Object)); - if (Object->FieldUnit.Extra) + if (Object->BufferField.Extra) { - AcpiCmDeleteObjectDesc (Object->FieldUnit.Extra); + AcpiUtDeleteObjectDesc (Object->BufferField.Extra); } break; @@ -289,15 +279,13 @@ AcpiCmDeleteInternalObj ( /* * Delete any allocated memory found above */ - if (ObjPointer) { if (!AcpiTbSystemTablePointer (ObjPointer)) { - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: Deleting Obj Ptr %p \n", ObjPointer)); + DEBUG_PRINTP (ACPI_INFO, ("Deleting Obj Ptr %p \n", ObjPointer)); - AcpiCmFree (ObjPointer); + AcpiUtFree (ObjPointer); } } @@ -306,19 +294,16 @@ AcpiCmDeleteInternalObj ( if (Object->Common.Flags & AOPOBJ_STATIC_ALLOCATION) { - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: Object %p [%s] static allocation, no delete\n", - Object, AcpiCmGetTypeName (Object->Common.Type))); + DEBUG_PRINTP (ACPI_INFO, ("Object %p [%s] static allocation, no delete\n", + Object, AcpiUtGetTypeName (Object->Common.Type))); } if (!(Object->Common.Flags & AOPOBJ_STATIC_ALLOCATION)) { - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: Deleting object %p [%s]\n", - Object, AcpiCmGetTypeName (Object->Common.Type))); - - AcpiCmDeleteObjectDesc (Object); + DEBUG_PRINTP (ACPI_INFO, ("Deleting object %p [%s]\n", + Object, AcpiUtGetTypeName (Object->Common.Type))); + AcpiUtDeleteObjectDesc (Object); } return_VOID; @@ -327,7 +312,7 @@ AcpiCmDeleteInternalObj ( /******************************************************************************* * - * FUNCTION: AcpiCmDeleteInternalObjectList + * FUNCTION: AcpiUtDeleteInternalObjectList * * PARAMETERS: *ObjList - Pointer to the list to be deleted * @@ -339,13 +324,13 @@ AcpiCmDeleteInternalObj ( ******************************************************************************/ ACPI_STATUS -AcpiCmDeleteInternalObjectList ( +AcpiUtDeleteInternalObjectList ( ACPI_OPERAND_OBJECT **ObjList) { ACPI_OPERAND_OBJECT **InternalObj; - FUNCTION_TRACE ("CmDeleteInternalObjectList"); + FUNCTION_TRACE ("UtDeleteInternalObjectList"); /* Walk the null-terminated internal list */ @@ -366,14 +351,14 @@ AcpiCmDeleteInternalObjectList ( * TBD: [Investigate] This might not be the right thing to do, * depending on how the internal package object was allocated!!! */ - AcpiCmDeleteInternalObj (*InternalObj); + AcpiUtDeleteInternalObj (*InternalObj); } } /* Free the combined parameter pointer list and object array */ - AcpiCmFree (ObjList); + AcpiUtFree (ObjList); return_ACPI_STATUS (AE_OK); } @@ -381,7 +366,7 @@ AcpiCmDeleteInternalObjectList ( /******************************************************************************* * - * FUNCTION: AcpiCmUpdateRefCount + * FUNCTION: AcpiUtUpdateRefCount * * PARAMETERS: *Object - Object whose ref count is to be updated * Action - What to do @@ -393,7 +378,7 @@ AcpiCmDeleteInternalObjectList ( ******************************************************************************/ static void -AcpiCmUpdateRefCount ( +AcpiUtUpdateRefCount ( ACPI_OPERAND_OBJECT *Object, UINT32 Action) { @@ -401,6 +386,8 @@ AcpiCmUpdateRefCount ( UINT16 NewCount; + PROC_NAME ("UtUpdateRefCount"); + if (!Object) { return; @@ -422,8 +409,7 @@ AcpiCmUpdateRefCount ( NewCount++; Object->Common.ReferenceCount = NewCount; - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateRefCount: Obj %p Refs=%X, [Incremented]\n", + DEBUG_PRINTP (ACPI_INFO, ("Obj %p Refs=%X, [Incremented]\n", Object, NewCount)); break; @@ -432,8 +418,7 @@ AcpiCmUpdateRefCount ( if (Count < 1) { - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateRefCount: Obj %p Refs=%X, can't decrement! (Set to 0)\n", + DEBUG_PRINTP (ACPI_INFO, ("Obj %p Refs=%X, can't decrement! (Set to 0)\n", Object, NewCount)); NewCount = 0; @@ -443,22 +428,20 @@ AcpiCmUpdateRefCount ( { NewCount--; - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateRefCount: Obj %p Refs=%X, [Decremented]\n", + DEBUG_PRINTP (ACPI_INFO, ("Obj %p Refs=%X, [Decremented]\n", Object, NewCount)); } if (Object->Common.Type == ACPI_TYPE_METHOD) { - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateRefCount: Method Obj %p Refs=%X, [Decremented]\n", + DEBUG_PRINTP (ACPI_INFO, ("Method Obj %p Refs=%X, [Decremented]\n", Object, NewCount)); } Object->Common.ReferenceCount = NewCount; if (NewCount == 0) { - AcpiCmDeleteInternalObj (Object); + AcpiUtDeleteInternalObj (Object); } break; @@ -466,20 +449,18 @@ AcpiCmUpdateRefCount ( case REF_FORCE_DELETE: - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateRefCount: Obj %p Refs=%X, Force delete! (Set to 0)\n", + DEBUG_PRINTP (ACPI_INFO, ("Obj %p Refs=%X, Force delete! (Set to 0)\n", Object, Count)); NewCount = 0; Object->Common.ReferenceCount = NewCount; - AcpiCmDeleteInternalObj (Object); + AcpiUtDeleteInternalObj (Object); break; default: - DEBUG_PRINT (ACPI_ERROR, - ("CmUpdateRefCount: Unknown action (%X)\n", Action)); + DEBUG_PRINTP (ACPI_ERROR, ("Unknown action (%X)\n", Action)); break; } @@ -492,8 +473,8 @@ AcpiCmUpdateRefCount ( if (Count > MAX_REFERENCE_COUNT) { - DEBUG_PRINT (ACPI_ERROR, - ("CmUpdateRefCount: **** AE_ERROR **** Invalid Reference Count (%X) in object %p\n\n", + DEBUG_PRINTP (ACPI_ERROR, + ("**** AE_ERROR **** Invalid Reference Count (%X) in object %p\n\n", Count, Object)); } @@ -503,7 +484,7 @@ AcpiCmUpdateRefCount ( /******************************************************************************* * - * FUNCTION: AcpiCmUpdateObjectReference + * FUNCTION: AcpiUtUpdateObjectReference * * PARAMETERS: *Object - Increment ref count for this object * and all sub-objects @@ -524,7 +505,7 @@ AcpiCmUpdateRefCount ( ******************************************************************************/ ACPI_STATUS -AcpiCmUpdateObjectReference ( +AcpiUtUpdateObjectReference ( ACPI_OPERAND_OBJECT *Object, UINT16 Action) { @@ -536,7 +517,7 @@ AcpiCmUpdateObjectReference ( ACPI_GENERIC_STATE *State; - FUNCTION_TRACE_PTR ("CmUpdateObjectReference", Object); + FUNCTION_TRACE_PTR ("UtUpdateObjectReference", Object); /* Ignore a null object ptr */ @@ -553,29 +534,24 @@ AcpiCmUpdateObjectReference ( if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED)) { - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateObjectReference: Object %p is NS handle\n", - Object)); + DEBUG_PRINTP (ACPI_INFO, ("Object %p is NS handle\n", Object)); return_ACPI_STATUS (AE_OK); } if (AcpiTbSystemTablePointer (Object)) { - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateObjectReference: **** Object %p is Pcode Ptr\n", - Object)); + DEBUG_PRINTP (ACPI_INFO, ("**** Object %p is Pcode Ptr\n", Object)); return_ACPI_STATUS (AE_OK); } - State = AcpiCmCreateUpdateState (Object, Action); + State = AcpiUtCreateUpdateState (Object, Action); while (State) { - Object = State->Update.Object; Action = State->Update.Value; - AcpiCmDeleteGenericState (State); + AcpiUtDeleteGenericState (State); /* * All sub-objects must have their reference count incremented also. @@ -586,15 +562,15 @@ AcpiCmUpdateObjectReference ( case ACPI_TYPE_DEVICE: - Status = AcpiCmCreateUpdateStateAndPush (Object->Device.AddrHandler, + Status = AcpiUtCreateUpdateStateAndPush (Object->Device.AddrHandler, Action, &StateList); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } - AcpiCmUpdateRefCount (Object->Device.SysHandler, Action); - AcpiCmUpdateRefCount (Object->Device.DrvHandler, Action); + AcpiUtUpdateRefCount (Object->Device.SysHandler, Action); + AcpiUtUpdateRefCount (Object->Device.DrvHandler, Action); break; @@ -606,7 +582,7 @@ AcpiCmUpdateObjectReference ( while (Next) { New = Next->AddrHandler.Next; - AcpiCmUpdateRefCount (Next, Action); + AcpiUtUpdateRefCount (Next, Action); Next = New; } @@ -627,7 +603,7 @@ AcpiCmUpdateObjectReference ( * these are simply ignored */ - Status = AcpiCmCreateUpdateStateAndPush ( + Status = AcpiUtCreateUpdateStateAndPush ( Object->Package.Elements[i], Action, &StateList); if (ACPI_FAILURE (Status)) { @@ -637,10 +613,10 @@ AcpiCmUpdateObjectReference ( break; - case ACPI_TYPE_FIELD_UNIT: + case ACPI_TYPE_BUFFER_FIELD: - Status = AcpiCmCreateUpdateStateAndPush ( - Object->FieldUnit.Container, Action, &StateList); + Status = AcpiUtCreateUpdateStateAndPush ( + Object->BufferField.BufferObj, Action, &StateList); if (ACPI_FAILURE (Status)) { @@ -649,10 +625,10 @@ AcpiCmUpdateObjectReference ( break; - case INTERNAL_TYPE_DEF_FIELD: + case INTERNAL_TYPE_REGION_FIELD: - Status = AcpiCmCreateUpdateStateAndPush ( - Object->Field.Container, Action, &StateList); + Status = AcpiUtCreateUpdateStateAndPush ( + Object->Field.RegionObj, Action, &StateList); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -662,15 +638,33 @@ AcpiCmUpdateObjectReference ( case INTERNAL_TYPE_BANK_FIELD: - Status = AcpiCmCreateUpdateStateAndPush ( - Object->BankField.BankSelect, Action, &StateList); + Status = AcpiUtCreateUpdateStateAndPush ( + Object->BankField.BankRegisterObj, Action, &StateList); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } - Status = AcpiCmCreateUpdateStateAndPush ( - Object->BankField.Container, Action, &StateList); + Status = AcpiUtCreateUpdateStateAndPush ( + Object->BankField.RegionObj, Action, &StateList); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + break; + + + case INTERNAL_TYPE_INDEX_FIELD: + + Status = AcpiUtCreateUpdateStateAndPush ( + Object->IndexField.IndexObj, Action, &StateList); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + Status = AcpiUtCreateUpdateStateAndPush ( + Object->IndexField.DataObj, Action, &StateList); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -681,11 +675,11 @@ AcpiCmUpdateObjectReference ( case ACPI_TYPE_REGION: /* TBD: [Investigate] - AcpiCmUpdateRefCount (Object->Region.AddrHandler, Action); + AcpiUtUpdateRefCount (Object->Region.AddrHandler, Action); */ /* Status = - AcpiCmCreateUpdateStateAndPush (Object->Region.AddrHandler, + AcpiUtCreateUpdateStateAndPush (Object->Region.AddrHandler, Action, &StateList); if (ACPI_FAILURE (Status)) { @@ -707,12 +701,12 @@ AcpiCmUpdateObjectReference ( * main object to be deleted. */ - AcpiCmUpdateRefCount (Object, Action); + AcpiUtUpdateRefCount (Object, Action); /* Move on to the next object to be updated */ - State = AcpiCmPopGenericState (&StateList); + State = AcpiUtPopGenericState (&StateList); } @@ -722,7 +716,7 @@ AcpiCmUpdateObjectReference ( /******************************************************************************* * - * FUNCTION: AcpiCmAddReference + * FUNCTION: AcpiUtAddReference * * PARAMETERS: *Object - Object whose reference count is to be * incremented @@ -734,18 +728,18 @@ AcpiCmUpdateObjectReference ( ******************************************************************************/ void -AcpiCmAddReference ( +AcpiUtAddReference ( ACPI_OPERAND_OBJECT *Object) { - FUNCTION_TRACE_PTR ("CmAddReference", Object); + FUNCTION_TRACE_PTR ("UtAddReference", Object); /* * Ensure that we have a valid object */ - if (!AcpiCmValidInternalObject (Object)) + if (!AcpiUtValidInternalObject (Object)) { return_VOID; } @@ -754,7 +748,7 @@ AcpiCmAddReference ( * We have a valid ACPI internal object, now increment the reference count */ - AcpiCmUpdateObjectReference (Object, REF_INCREMENT); + AcpiUtUpdateObjectReference (Object, REF_INCREMENT); return_VOID; } @@ -762,7 +756,7 @@ AcpiCmAddReference ( /******************************************************************************* * - * FUNCTION: AcpiCmRemoveReference + * FUNCTION: AcpiUtRemoveReference * * PARAMETERS: *Object - Object whose ref count will be decremented * @@ -773,24 +767,24 @@ AcpiCmAddReference ( ******************************************************************************/ void -AcpiCmRemoveReference ( +AcpiUtRemoveReference ( ACPI_OPERAND_OBJECT *Object) { - FUNCTION_TRACE_PTR ("CmRemoveReference", Object); + FUNCTION_TRACE_PTR ("UtRemoveReference", Object); /* * Ensure that we have a valid object */ - if (!AcpiCmValidInternalObject (Object)) + if (!AcpiUtValidInternalObject (Object)) { return_VOID; } - DEBUG_PRINT (ACPI_INFO, ("CmRemoveReference: Obj %p Refs=%X\n", - Object, Object->Common.ReferenceCount)); + DEBUG_PRINTP (ACPI_INFO, ("Obj %p Refs=%X\n", + Object, Object->Common.ReferenceCount)); /* * Decrement the reference count, and only actually delete the object @@ -798,8 +792,7 @@ AcpiCmRemoveReference ( * of all subobjects!) */ - AcpiCmUpdateObjectReference (Object, REF_DECREMENT); - + AcpiUtUpdateObjectReference (Object, REF_DECREMENT); return_VOID; } diff --git a/sys/contrib/dev/acpica/uteval.c b/sys/contrib/dev/acpica/uteval.c index 2987090..3dc815f 100644 --- a/sys/contrib/dev/acpica/uteval.c +++ b/sys/contrib/dev/acpica/uteval.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: cmeval - Object evaluation - * $Revision: 21 $ + * Module Name: uteval - Object evaluation + * $Revision: 27 $ * *****************************************************************************/ @@ -114,20 +114,20 @@ * *****************************************************************************/ -#define __CMEVAL_C__ +#define __UTEVAL_C__ #include "acpi.h" #include "acnamesp.h" #include "acinterp.h" -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmeval") +#define _COMPONENT ACPI_UTILITIES + MODULE_NAME ("uteval") -/**************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiCmEvaluateNumericObject + * FUNCTION: AcpiUtEvaluateNumericObject * * PARAMETERS: *ObjectName - Object name to be evaluated * DeviceNode - Node for the device @@ -140,10 +140,10 @@ * * NOTE: Internal function, no parameter validation * - ***************************************************************************/ + ******************************************************************************/ ACPI_STATUS -AcpiCmEvaluateNumericObject ( +AcpiUtEvaluateNumericObject ( NATIVE_CHAR *ObjectName, ACPI_NAMESPACE_NODE *DeviceNode, ACPI_INTEGER *Address) @@ -152,7 +152,7 @@ AcpiCmEvaluateNumericObject ( ACPI_STATUS Status; - FUNCTION_TRACE ("CmEvaluateNumericObject"); + FUNCTION_TRACE ("UtEvaluateNumericObject"); /* Execute the method */ @@ -162,16 +162,14 @@ AcpiCmEvaluateNumericObject ( { if (Status == AE_NOT_FOUND) { - DEBUG_PRINT (ACPI_INFO, - ("%s on %4.4s was not found\n", ObjectName, - &DeviceNode->Name)); + DEBUG_PRINTP (ACPI_INFO, ("%s on %4.4s was not found\n", + ObjectName, &DeviceNode->Name)); } else { - DEBUG_PRINT (ACPI_ERROR, - ("%s on %4.4s failed with status %4.4x\n", ObjectName, - &DeviceNode->Name, - AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, ("%s on %4.4s failed with status %s\n", + ObjectName, &DeviceNode->Name, + AcpiUtFormatException (Status))); } return_ACPI_STATUS (Status); @@ -182,8 +180,8 @@ AcpiCmEvaluateNumericObject ( if (!ObjDesc) { - DEBUG_PRINT (ACPI_ERROR, - ("No object was returned from %s\n", ObjectName)); + DEBUG_PRINTP (ACPI_ERROR, ("No object was returned from %s\n", + ObjectName)); return_ACPI_STATUS (AE_TYPE); } @@ -192,7 +190,7 @@ AcpiCmEvaluateNumericObject ( if (ObjDesc->Common.Type != ACPI_TYPE_INTEGER) { Status = AE_TYPE; - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("Type returned from %s was not a number: %X \n", ObjectName, ObjDesc->Common.Type)); } @@ -207,15 +205,15 @@ AcpiCmEvaluateNumericObject ( /* On exit, we must delete the return object */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } -/**************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiCmExecute_HID + * FUNCTION: AcpiUtExecute_HID * * PARAMETERS: DeviceNode - Node for the device * *Hid - Where the HID is returned @@ -227,18 +225,18 @@ AcpiCmEvaluateNumericObject ( * * NOTE: Internal function, no parameter validation * - ***************************************************************************/ + ******************************************************************************/ ACPI_STATUS -AcpiCmExecute_HID ( +AcpiUtExecute_HID ( ACPI_NAMESPACE_NODE *DeviceNode, - DEVICE_ID *Hid) + ACPI_DEVICE_ID *Hid) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; - FUNCTION_TRACE ("CmExecute_HID"); + FUNCTION_TRACE ("UtExecute_HID"); /* Execute the method */ @@ -249,17 +247,14 @@ AcpiCmExecute_HID ( { if (Status == AE_NOT_FOUND) { - DEBUG_PRINT (ACPI_INFO, - ("_HID on %4.4s was not found\n", + DEBUG_PRINTP (ACPI_INFO, ("_HID on %4.4s was not found\n", &DeviceNode->Name)); } else { - DEBUG_PRINT (ACPI_ERROR, - ("_HID on %4.4s failed with status %4.4x\n", - &DeviceNode->Name, - AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, ("_HID on %4.4s failed %s\n", + &DeviceNode->Name, AcpiUtFormatException (Status))); } return_ACPI_STATUS (Status); @@ -269,7 +264,7 @@ AcpiCmExecute_HID ( if (!ObjDesc) { - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _HID\n")); + DEBUG_PRINTP (ACPI_ERROR, ("No object was returned from _HID\n")); return_ACPI_STATUS (AE_TYPE); } @@ -277,14 +272,13 @@ AcpiCmExecute_HID ( * A _HID can return either a Number (32 bit compressed EISA ID) or * a string */ - if ((ObjDesc->Common.Type != ACPI_TYPE_INTEGER) && (ObjDesc->Common.Type != ACPI_TYPE_STRING)) { Status = AE_TYPE; - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("Type returned from _HID not a number or string: %s(%X) \n", - AcpiCmGetTypeName (ObjDesc->Common.Type), ObjDesc->Common.Type)); + AcpiUtGetTypeName (ObjDesc->Common.Type), ObjDesc->Common.Type)); } else @@ -293,7 +287,7 @@ AcpiCmExecute_HID ( { /* Convert the Numeric HID to string */ - AcpiAmlEisaIdToString ((UINT32) ObjDesc->Integer.Value, Hid->Buffer); + AcpiExEisaIdToString ((UINT32) ObjDesc->Integer.Value, Hid->Buffer); } else @@ -307,15 +301,15 @@ AcpiCmExecute_HID ( /* On exit, we must delete the return object */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } -/**************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiCmExecute_UID + * FUNCTION: AcpiUtExecute_UID * * PARAMETERS: DeviceNode - Node for the device * *Uid - Where the UID is returned @@ -327,17 +321,20 @@ AcpiCmExecute_HID ( * * NOTE: Internal function, no parameter validation * - ***************************************************************************/ + ******************************************************************************/ ACPI_STATUS -AcpiCmExecute_UID ( +AcpiUtExecute_UID ( ACPI_NAMESPACE_NODE *DeviceNode, - DEVICE_ID *Uid) + ACPI_DEVICE_ID *Uid) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; + PROC_NAME ("UtExecute_UID"); + + /* Execute the method */ Status = AcpiNsEvaluateRelative (DeviceNode, @@ -346,17 +343,15 @@ AcpiCmExecute_UID ( { if (Status == AE_NOT_FOUND) { - DEBUG_PRINT (ACPI_INFO, - ("_UID on %4.4s was not found\n", + DEBUG_PRINTP (ACPI_INFO, ("_UID on %4.4s was not found\n", &DeviceNode->Name)); } else { - DEBUG_PRINT (ACPI_ERROR, - ("_UID on %4.4s failed with status %4.4x\n", - &DeviceNode->Name, - AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, + ("_UID on %4.4s failed %s\n", + &DeviceNode->Name, AcpiUtFormatException (Status))); } return (Status); @@ -366,7 +361,7 @@ AcpiCmExecute_UID ( if (!ObjDesc) { - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _UID\n")); + DEBUG_PRINTP (ACPI_ERROR, ("No object was returned from _UID\n")); return (AE_TYPE); } @@ -374,12 +369,11 @@ AcpiCmExecute_UID ( * A _UID can return either a Number (32 bit compressed EISA ID) or * a string */ - if ((ObjDesc->Common.Type != ACPI_TYPE_INTEGER) && (ObjDesc->Common.Type != ACPI_TYPE_STRING)) { Status = AE_TYPE; - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("Type returned from _UID was not a number or string: %X \n", ObjDesc->Common.Type)); } @@ -390,7 +384,7 @@ AcpiCmExecute_UID ( { /* Convert the Numeric UID to string */ - AcpiAmlUnsignedIntegerToString (ObjDesc->Integer.Value, Uid->Buffer); + AcpiExUnsignedIntegerToString (ObjDesc->Integer.Value, Uid->Buffer); } else @@ -404,14 +398,15 @@ AcpiCmExecute_UID ( /* On exit, we must delete the return object */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); return (Status); } -/**************************************************************************** + +/******************************************************************************* * - * FUNCTION: AcpiCmExecute_STA + * FUNCTION: AcpiUtExecute_STA * * PARAMETERS: DeviceNode - Node for the device * *Flags - Where the status flags are returned @@ -423,10 +418,10 @@ AcpiCmExecute_UID ( * * NOTE: Internal function, no parameter validation * - ***************************************************************************/ + ******************************************************************************/ ACPI_STATUS -AcpiCmExecute_STA ( +AcpiUtExecute_STA ( ACPI_NAMESPACE_NODE *DeviceNode, UINT32 *Flags) { @@ -434,7 +429,8 @@ AcpiCmExecute_STA ( ACPI_STATUS Status; - FUNCTION_TRACE ("CmExecute_STA"); + FUNCTION_TRACE ("UtExecute_STA"); + /* Execute the method */ @@ -442,7 +438,7 @@ AcpiCmExecute_STA ( METHOD_NAME__STA, NULL, &ObjDesc); if (AE_NOT_FOUND == Status) { - DEBUG_PRINT (ACPI_INFO, + DEBUG_PRINTP (ACPI_INFO, ("_STA on %4.4s was not found, assuming present.\n", &DeviceNode->Name)); @@ -452,10 +448,9 @@ AcpiCmExecute_STA ( else if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, - ("_STA on %4.4s failed with status %s\n", + DEBUG_PRINTP (ACPI_ERROR, ("_STA on %4.4s failed %s\n", &DeviceNode->Name, - AcpiCmFormatException (Status))); + AcpiUtFormatException (Status))); } else /* success */ @@ -464,7 +459,7 @@ AcpiCmExecute_STA ( if (!ObjDesc) { - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _STA\n")); + DEBUG_PRINTP (ACPI_ERROR, ("No object was returned from _STA\n")); return_ACPI_STATUS (AE_TYPE); } @@ -473,7 +468,7 @@ AcpiCmExecute_STA ( if (ObjDesc->Common.Type != ACPI_TYPE_INTEGER) { Status = AE_TYPE; - DEBUG_PRINT (ACPI_ERROR, + DEBUG_PRINTP (ACPI_ERROR, ("Type returned from _STA was not a number: %X \n", ObjDesc->Common.Type)); } @@ -487,7 +482,7 @@ AcpiCmExecute_STA ( /* On exit, we must delete the return object */ - AcpiCmRemoveReference (ObjDesc); + AcpiUtRemoveReference (ObjDesc); } return_ACPI_STATUS (Status); diff --git a/sys/contrib/dev/acpica/utglobal.c b/sys/contrib/dev/acpica/utglobal.c index 2cea5c6..f96a279 100644 --- a/sys/contrib/dev/acpica/utglobal.c +++ b/sys/contrib/dev/acpica/utglobal.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: cmglobal - Global variables for the ACPI subsystem - * $Revision: 116 $ + * Module Name: utglobal - Global variables for the ACPI subsystem + * $Revision: 122 $ * *****************************************************************************/ @@ -114,7 +114,7 @@ * *****************************************************************************/ -#define __CMGLOBAL_C__ +#define __UTGLOBAL_C__ #define DEFINE_ACPI_GLOBALS #include "acpi.h" @@ -124,8 +124,8 @@ #include "amlcode.h" -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmglobal") +#define _COMPONENT ACPI_UTILITIES + MODULE_NAME ("utglobal") /****************************************************************************** @@ -149,7 +149,7 @@ UINT32 AcpiDbgLevel = NORMAL_DEFAULT; /* Debug switch - layer (component) mask */ -UINT32 AcpiDbgLayer = COMPONENT_DEFAULT; +UINT32 AcpiDbgLayer = ACPI_COMPONENT_DEFAULT; UINT32 AcpiGbl_NestingLevel = 0; @@ -182,22 +182,23 @@ UINT8 AcpiGbl_DecodeTo8bit [8] = {1,2,4,8,16,32,64,128}; * * Initial values are currently supported only for types String and Number. * To avoid type punning, both are specified as strings in this table. + * + * NOTES: + * 1) _SB_ is defined to be a device to allow _SB_/_INI to be run + * during the initialization sequence. */ PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] = { {"_GPE", INTERNAL_TYPE_DEF_ANY}, {"_PR_", INTERNAL_TYPE_DEF_ANY}, - {"_SB_", INTERNAL_TYPE_DEF_ANY}, + {"_SB_", ACPI_TYPE_DEVICE}, {"_SI_", INTERNAL_TYPE_DEF_ANY}, {"_TZ_", INTERNAL_TYPE_DEF_ANY}, {"_REV", ACPI_TYPE_INTEGER, "2"}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_GL_", ACPI_TYPE_MUTEX, "0"}, - - /* Table terminator */ - - {NULL, ACPI_TYPE_ANY} + {NULL, ACPI_TYPE_ANY} /* Table terminator */ }; @@ -296,7 +297,7 @@ NATIVE_CHAR *MsgAcpiErrorBreak = "*** Break on ACPI_ERROR ***\n" /***************************************************************************** * - * FUNCTION: AcpiCmGetMutexName + * FUNCTION: AcpiUtGetMutexName * * PARAMETERS: None. * @@ -307,7 +308,7 @@ NATIVE_CHAR *MsgAcpiErrorBreak = "*** Break on ACPI_ERROR ***\n" ****************************************************************************/ NATIVE_CHAR * -AcpiCmGetMutexName ( +AcpiUtGetMutexName ( UINT32 MutexId) { @@ -348,18 +349,18 @@ static NATIVE_CHAR *AcpiGbl_NsTypeNames[] = /* printable names of AC /* 11 */ "Power", /* 12 */ "Processor", /* 13 */ "Thermal", - /* 14 */ "BufferFld", + /* 14 */ "BuffField", /* 15 */ "DdbHandle", /* 16 */ "DebugObj", - /* 17 */ "DefField", - /* 18 */ "BnkField", - /* 19 */ "IdxField", + /* 17 */ "RegnField", + /* 18 */ "BankField", + /* 19 */ "IndxField", /* 20 */ "Reference", /* 21 */ "Alias", /* 22 */ "Notify", /* 23 */ "AddrHndlr", /* 24 */ "Resource", - /* 25 */ "DefFldDfn", + /* 25 */ "RgnFldDfn", /* 26 */ "BnkFldDfn", /* 27 */ "IdxFldDfn", /* 28 */ "If", @@ -374,7 +375,7 @@ static NATIVE_CHAR *AcpiGbl_NsTypeNames[] = /* printable names of AC /***************************************************************************** * - * FUNCTION: AcpiCmGetTypeName + * FUNCTION: AcpiUtGetTypeName * * PARAMETERS: None. * @@ -385,7 +386,7 @@ static NATIVE_CHAR *AcpiGbl_NsTypeNames[] = /* printable names of AC ****************************************************************************/ NATIVE_CHAR * -AcpiCmGetTypeName ( +AcpiUtGetTypeName ( UINT32 Type) { @@ -414,7 +415,7 @@ NATIVE_CHAR *AcpiGbl_RegionTypes[NUM_REGION_TYPES] = /***************************************************************************** * - * FUNCTION: AcpiCmGetRegionName + * FUNCTION: AcpiUtGetRegionName * * PARAMETERS: None. * @@ -425,7 +426,7 @@ NATIVE_CHAR *AcpiGbl_RegionTypes[NUM_REGION_TYPES] = ****************************************************************************/ NATIVE_CHAR * -AcpiCmGetRegionName ( +AcpiUtGetRegionName ( UINT8 SpaceId) { @@ -492,7 +493,7 @@ NATIVE_CHAR *AcpiGbl_UpdateRules[NUM_UPDATE_RULES] = /***************************************************************************** * - * FUNCTION: AcpiCmValidObjectType + * FUNCTION: AcpiUtValidObjectType * * PARAMETERS: None. * @@ -503,7 +504,7 @@ NATIVE_CHAR *AcpiGbl_UpdateRules[NUM_UPDATE_RULES] = ****************************************************************************/ BOOLEAN -AcpiCmValidObjectType ( +AcpiUtValidObjectType ( UINT32 Type) { @@ -522,7 +523,7 @@ AcpiCmValidObjectType ( /***************************************************************************** * - * FUNCTION: AcpiCmFormatException + * FUNCTION: AcpiUtFormatException * * PARAMETERS: Status - Acpi status to be formatted * @@ -533,7 +534,7 @@ AcpiCmValidObjectType ( ****************************************************************************/ NATIVE_CHAR * -AcpiCmFormatException ( +AcpiUtFormatException ( ACPI_STATUS Status) { NATIVE_CHAR *Exception = "UNKNOWN_STATUS"; @@ -596,7 +597,7 @@ AcpiCmFormatException ( /**************************************************************************** * - * FUNCTION: AcpiCmAllocateOwnerId + * FUNCTION: AcpiUtAllocateOwnerId * * PARAMETERS: IdType - Type of ID (method or table) * @@ -605,16 +606,16 @@ AcpiCmFormatException ( ***************************************************************************/ ACPI_OWNER_ID -AcpiCmAllocateOwnerId ( +AcpiUtAllocateOwnerId ( UINT32 IdType) { ACPI_OWNER_ID OwnerId = 0xFFFF; - FUNCTION_TRACE ("CmAllocateOwnerId"); + FUNCTION_TRACE ("UtAllocateOwnerId"); - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); switch (IdType) { @@ -643,7 +644,7 @@ AcpiCmAllocateOwnerId ( } - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); return_VALUE (OwnerId); } @@ -651,7 +652,7 @@ AcpiCmAllocateOwnerId ( /**************************************************************************** * - * FUNCTION: AcpiCmInitGlobals + * FUNCTION: AcpiUtInitGlobals * * PARAMETERS: none * @@ -661,13 +662,13 @@ AcpiCmAllocateOwnerId ( ***************************************************************************/ void -AcpiCmInitGlobals ( +AcpiUtInitGlobals ( void) { UINT32 i; - FUNCTION_TRACE ("CmInitGlobals"); + FUNCTION_TRACE ("UtInitGlobals"); /* ACPI table structure */ @@ -696,7 +697,7 @@ AcpiCmInitGlobals ( for (i = 0; i < NUM_MTX; i++) { AcpiGbl_AcpiMutexInfo[i].Mutex = NULL; - AcpiGbl_AcpiMutexInfo[i].Locked = FALSE; + AcpiGbl_AcpiMutexInfo[i].OwnerId = ACPI_MUTEX_NOT_ACQUIRED; AcpiGbl_AcpiMutexInfo[i].UseCount = 0; } @@ -723,7 +724,6 @@ AcpiCmInitGlobals ( AcpiGbl_SystemFlags = 0; AcpiGbl_StartupFlags = 0; - AcpiGbl_GlobalLockSet = FALSE; AcpiGbl_RsdpOriginalLocation = 0; AcpiGbl_CmSingleStep = FALSE; AcpiGbl_DbTerminateThreads = FALSE; diff --git a/sys/contrib/dev/acpica/utinit.c b/sys/contrib/dev/acpica/utinit.c index f2972a0..4a96268 100644 --- a/sys/contrib/dev/acpica/utinit.c +++ b/sys/contrib/dev/acpica/utinit.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: cminit - Common ACPI subsystem initialization - * $Revision: 93 $ + * Module Name: utinit - Common ACPI subsystem initialization + * $Revision: 96 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ *****************************************************************************/ -#define __CMINIT_C__ +#define __UTINIT_C__ #include "acpi.h" #include "achware.h" @@ -124,8 +124,8 @@ #include "acparser.h" #include "acdispat.h" -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cminit") +#define _COMPONENT ACPI_UTILITIES + MODULE_NAME ("utinit") #define ACPI_OFFSET(d,o) ((UINT32) &(((d *)0)->o)) @@ -133,7 +133,7 @@ /******************************************************************************* * - * FUNCTION: AcpiCmFadtRegisterError + * FUNCTION: AcpiUtFadtRegisterError * * PARAMETERS: *RegisterName - Pointer to string identifying register * Value - Actual register contents value @@ -147,7 +147,7 @@ ******************************************************************************/ static ACPI_STATUS -AcpiCmFadtRegisterError ( +AcpiUtFadtRegisterError ( NATIVE_CHAR *RegisterName, UINT32 Value, UINT32 Offset) @@ -164,7 +164,7 @@ AcpiCmFadtRegisterError ( /****************************************************************************** * - * FUNCTION: AcpiCmValidateFadt + * FUNCTION: AcpiUtValidateFadt * * PARAMETERS: None * @@ -175,7 +175,7 @@ AcpiCmFadtRegisterError ( ******************************************************************************/ ACPI_STATUS -AcpiCmValidateFadt ( +AcpiUtValidateFadt ( void) { ACPI_STATUS Status = AE_OK; @@ -188,46 +188,46 @@ AcpiCmValidateFadt ( if (AcpiGbl_FADT->Pm1EvtLen < 4) { - Status = AcpiCmFadtRegisterError ("PM1_EVT_LEN", + Status = AcpiUtFadtRegisterError ("PM1_EVT_LEN", (UINT32) AcpiGbl_FADT->Pm1EvtLen, ACPI_FADT_OFFSET (Pm1EvtLen)); } if (!AcpiGbl_FADT->Pm1CntLen) { - Status = AcpiCmFadtRegisterError ("PM1_CNT_LEN", 0, + Status = AcpiUtFadtRegisterError ("PM1_CNT_LEN", 0, ACPI_FADT_OFFSET (Pm1CntLen)); } if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1aEvtBlk.Address)) { - Status = AcpiCmFadtRegisterError ("X_PM1a_EVT_BLK", 0, + Status = AcpiUtFadtRegisterError ("X_PM1a_EVT_BLK", 0, ACPI_FADT_OFFSET (XPm1aEvtBlk.Address)); } if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1aCntBlk.Address)) { - Status = AcpiCmFadtRegisterError ("X_PM1a_CNT_BLK", 0, + Status = AcpiUtFadtRegisterError ("X_PM1a_CNT_BLK", 0, ACPI_FADT_OFFSET (XPm1aCntBlk.Address)); } if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPmTmrBlk.Address)) { - Status = AcpiCmFadtRegisterError ("X_PM_TMR_BLK", 0, + Status = AcpiUtFadtRegisterError ("X_PM_TMR_BLK", 0, ACPI_FADT_OFFSET (XPmTmrBlk.Address)); } if ((ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address) && !AcpiGbl_FADT->Pm2CntLen)) { - Status = AcpiCmFadtRegisterError ("PM2_CNT_LEN", + Status = AcpiUtFadtRegisterError ("PM2_CNT_LEN", (UINT32) AcpiGbl_FADT->Pm2CntLen, ACPI_FADT_OFFSET (Pm2CntLen)); } if (AcpiGbl_FADT->PmTmLen < 4) { - Status = AcpiCmFadtRegisterError ("PM_TM_LEN", + Status = AcpiUtFadtRegisterError ("PM_TM_LEN", (UINT32) AcpiGbl_FADT->PmTmLen, ACPI_FADT_OFFSET (PmTmLen)); } @@ -238,7 +238,7 @@ AcpiCmValidateFadt ( if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) && (AcpiGbl_FADT->Gpe0BlkLen & 1)) { - Status = AcpiCmFadtRegisterError ("(x)GPE0_BLK_LEN", + Status = AcpiUtFadtRegisterError ("(x)GPE0_BLK_LEN", (UINT32) AcpiGbl_FADT->Gpe0BlkLen, ACPI_FADT_OFFSET (Gpe0BlkLen)); } @@ -246,7 +246,7 @@ AcpiCmValidateFadt ( if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) && (AcpiGbl_FADT->Gpe1BlkLen & 1)) { - Status = AcpiCmFadtRegisterError ("(x)GPE1_BLK_LEN", + Status = AcpiUtFadtRegisterError ("(x)GPE1_BLK_LEN", (UINT32) AcpiGbl_FADT->Gpe1BlkLen, ACPI_FADT_OFFSET (Gpe1BlkLen)); } @@ -257,7 +257,7 @@ AcpiCmValidateFadt ( /****************************************************************************** * - * FUNCTION: AcpiCmTerminate + * FUNCTION: AcpiUtTerminate * * PARAMETERS: none * @@ -268,22 +268,22 @@ AcpiCmValidateFadt ( ******************************************************************************/ void -AcpiCmTerminate (void) +AcpiUtTerminate (void) { - FUNCTION_TRACE ("CmTerminate"); + FUNCTION_TRACE ("UtTerminate"); /* Free global tables, etc. */ if (AcpiGbl_Gpe0EnableRegisterSave) { - AcpiCmFree (AcpiGbl_Gpe0EnableRegisterSave); + AcpiUtFree (AcpiGbl_Gpe0EnableRegisterSave); } if (AcpiGbl_Gpe1EnableRegisterSave) { - AcpiCmFree (AcpiGbl_Gpe1EnableRegisterSave); + AcpiUtFree (AcpiGbl_Gpe1EnableRegisterSave); } @@ -291,9 +291,9 @@ AcpiCmTerminate (void) } -/****************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiCmSubsystemShutdown + * FUNCTION: AcpiUtSubsystemShutdown * * PARAMETERS: none * @@ -305,23 +305,23 @@ AcpiCmTerminate (void) ******************************************************************************/ ACPI_STATUS -AcpiCmSubsystemShutdown (void) +AcpiUtSubsystemShutdown (void) { - FUNCTION_TRACE ("CmSubsystemShutdown"); + FUNCTION_TRACE ("UtSubsystemShutdown"); /* Just exit if subsystem is already shutdown */ if (AcpiGbl_Shutdown) { - DEBUG_PRINT (ACPI_ERROR, ("ACPI Subsystem is already terminated\n")); + DEBUG_PRINTP (ACPI_ERROR, ("ACPI Subsystem is already terminated\n")); return_ACPI_STATUS (AE_OK); } /* Subsystem appears active, go ahead and shut it down */ AcpiGbl_Shutdown = TRUE; - DEBUG_PRINT (ACPI_INFO, ("Shutting down ACPI Subsystem...\n")); + DEBUG_PRINTP (ACPI_INFO, ("Shutting down ACPI Subsystem...\n")); /* Close the Namespace */ @@ -334,12 +334,12 @@ AcpiCmSubsystemShutdown (void) /* Close the globals */ - AcpiCmTerminate (); + AcpiUtTerminate (); /* Flush the local cache(s) */ - AcpiCmDeleteGenericStateCache (); - AcpiCmDeleteObjectCache (); + AcpiUtDeleteGenericStateCache (); + AcpiUtDeleteObjectCache (); AcpiDsDeleteWalkStateCache (); /* Close the Parser */ @@ -350,7 +350,7 @@ AcpiCmSubsystemShutdown (void) /* Debug only - display leftover memory allocation, if any */ #ifdef ENABLE_DEBUGGER - AcpiCmDumpCurrentAllocations (ACPI_UINT32_MAX, NULL); + AcpiUtDumpCurrentAllocations (ACPI_UINT32_MAX, NULL); #endif return_ACPI_STATUS (AE_OK); diff --git a/sys/contrib/dev/acpica/utmisc.c b/sys/contrib/dev/acpica/utmisc.c index 123e4e1..f5d4b42 100644 --- a/sys/contrib/dev/acpica/utmisc.c +++ b/sys/contrib/dev/acpica/utmisc.c @@ -1,7 +1,7 @@ /******************************************************************************* * - * Module Name: cmutils - common utility procedures - * $Revision: 27 $ + * Module Name: utmisc - common utility procedures + * $Revision: 42 $ * ******************************************************************************/ @@ -115,7 +115,7 @@ *****************************************************************************/ -#define __CMUTILS_C__ +#define __UTMISC_C__ #include "acpi.h" #include "acevents.h" @@ -126,13 +126,13 @@ #include "acdebug.h" -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmutils") +#define _COMPONENT ACPI_UTILITIES + MODULE_NAME ("utmisc") /******************************************************************************* * - * FUNCTION: AcpiCmValidAcpiName + * FUNCTION: AcpiUtValidAcpiName * * PARAMETERS: Character - The character to be examined * @@ -146,7 +146,7 @@ ******************************************************************************/ BOOLEAN -AcpiCmValidAcpiName ( +AcpiUtValidAcpiName ( UINT32 Name) { NATIVE_CHAR *NamePtr = (NATIVE_CHAR *) &Name; @@ -170,7 +170,7 @@ AcpiCmValidAcpiName ( /******************************************************************************* * - * FUNCTION: AcpiCmValidAcpiCharacter + * FUNCTION: AcpiUtValidAcpiCharacter * * PARAMETERS: Character - The character to be examined * @@ -181,7 +181,7 @@ AcpiCmValidAcpiName ( ******************************************************************************/ BOOLEAN -AcpiCmValidAcpiCharacter ( +AcpiUtValidAcpiCharacter ( NATIVE_CHAR Character) { @@ -190,10 +190,40 @@ AcpiCmValidAcpiCharacter ( (Character >= '0' && Character <= '9'))); } +/******************************************************************************* + * + * FUNCTION: AcpiUtStrupr + * + * PARAMETERS: SrcString - The source string to convert to + * + * RETURN: SrcString + * + * DESCRIPTION: Convert string to uppercase + * + ******************************************************************************/ + +NATIVE_CHAR * +AcpiUtStrupr ( + NATIVE_CHAR *SrcString) +{ + NATIVE_CHAR *String; + + + /* Walk entire string, uppercasing the letters */ + + for (String = SrcString; *String; ) + { + *String = (char) TOUPPER (*String); + String++; + } + + + return (SrcString); +} /******************************************************************************* * - * FUNCTION: AcpiCmMutexInitialize + * FUNCTION: AcpiUtMutexInitialize * * PARAMETERS: None. * @@ -204,14 +234,14 @@ AcpiCmValidAcpiCharacter ( ******************************************************************************/ ACPI_STATUS -AcpiCmMutexInitialize ( +AcpiUtMutexInitialize ( void) { UINT32 i; ACPI_STATUS Status; - FUNCTION_TRACE ("CmMutexInitialize"); + FUNCTION_TRACE ("UtMutexInitialize"); /* @@ -219,7 +249,7 @@ AcpiCmMutexInitialize ( */ for (i = 0; i < NUM_MTX; i++) { - Status = AcpiCmCreateMutex (i); + Status = AcpiUtCreateMutex (i); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -232,7 +262,7 @@ AcpiCmMutexInitialize ( /******************************************************************************* * - * FUNCTION: AcpiCmMutexTerminate + * FUNCTION: AcpiUtMutexTerminate * * PARAMETERS: None. * @@ -243,13 +273,13 @@ AcpiCmMutexInitialize ( ******************************************************************************/ void -AcpiCmMutexTerminate ( +AcpiUtMutexTerminate ( void) { UINT32 i; - FUNCTION_TRACE ("CmMutexTerminate"); + FUNCTION_TRACE ("UtMutexTerminate"); /* @@ -257,7 +287,7 @@ AcpiCmMutexTerminate ( */ for (i = 0; i < NUM_MTX; i++) { - AcpiCmDeleteMutex (i); + AcpiUtDeleteMutex (i); } return_VOID; @@ -266,7 +296,7 @@ AcpiCmMutexTerminate ( /******************************************************************************* * - * FUNCTION: AcpiCmCreateMutex + * FUNCTION: AcpiUtCreateMutex * * PARAMETERS: MutexID - ID of the mutex to be created * @@ -277,13 +307,13 @@ AcpiCmMutexTerminate ( ******************************************************************************/ ACPI_STATUS -AcpiCmCreateMutex ( +AcpiUtCreateMutex ( ACPI_MUTEX_HANDLE MutexId) { ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_U32 ("CmCreateMutex", MutexId); + FUNCTION_TRACE_U32 ("UtCreateMutex", MutexId); if (MutexId > MAX_MTX) @@ -295,8 +325,8 @@ AcpiCmCreateMutex ( if (!AcpiGbl_AcpiMutexInfo[MutexId].Mutex) { Status = AcpiOsCreateSemaphore (1, 1, - &AcpiGbl_AcpiMutexInfo[MutexId].Mutex); - AcpiGbl_AcpiMutexInfo[MutexId].Locked = FALSE; + &AcpiGbl_AcpiMutexInfo[MutexId].Mutex); + AcpiGbl_AcpiMutexInfo[MutexId].OwnerId = ACPI_MUTEX_NOT_ACQUIRED; AcpiGbl_AcpiMutexInfo[MutexId].UseCount = 0; } @@ -306,7 +336,7 @@ AcpiCmCreateMutex ( /******************************************************************************* * - * FUNCTION: AcpiCmDeleteMutex + * FUNCTION: AcpiUtDeleteMutex * * PARAMETERS: MutexID - ID of the mutex to be deleted * @@ -317,13 +347,13 @@ AcpiCmCreateMutex ( ******************************************************************************/ ACPI_STATUS -AcpiCmDeleteMutex ( +AcpiUtDeleteMutex ( ACPI_MUTEX_HANDLE MutexId) { ACPI_STATUS Status; - FUNCTION_TRACE_U32 ("CmDeleteMutex", MutexId); + FUNCTION_TRACE_U32 ("UtDeleteMutex", MutexId); if (MutexId > MAX_MTX) @@ -335,7 +365,7 @@ AcpiCmDeleteMutex ( Status = AcpiOsDeleteSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex); AcpiGbl_AcpiMutexInfo[MutexId].Mutex = NULL; - AcpiGbl_AcpiMutexInfo[MutexId].Locked = FALSE; + AcpiGbl_AcpiMutexInfo[MutexId].OwnerId = ACPI_MUTEX_NOT_ACQUIRED; return_ACPI_STATUS (Status); } @@ -343,7 +373,7 @@ AcpiCmDeleteMutex ( /******************************************************************************* * - * FUNCTION: AcpiCmAcquireMutex + * FUNCTION: AcpiUtAcquireMutex * * PARAMETERS: MutexID - ID of the mutex to be acquired * @@ -354,14 +384,16 @@ AcpiCmDeleteMutex ( ******************************************************************************/ ACPI_STATUS -AcpiCmAcquireMutex ( +AcpiUtAcquireMutex ( ACPI_MUTEX_HANDLE MutexId) { ACPI_STATUS Status; + UINT32 i; + UINT32 ThisThreadId; + + PROC_NAME ("UtAcquireMutex"); - DEBUG_PRINT (TRACE_MUTEX, - ("Acquiring Mutex [%s]\n", AcpiCmGetMutexName (MutexId))); if (MutexId > MAX_MTX) { @@ -369,16 +401,58 @@ AcpiCmAcquireMutex ( } + ThisThreadId = AcpiOsGetThreadId (); + + /* + * 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 < MAX_MTX; i++) + { + if (AcpiGbl_AcpiMutexInfo[i].OwnerId == ThisThreadId) + { + if (i == MutexId) + { + DEBUG_PRINTP (ACPI_ERROR, + ("Mutex [%s] already acquired by this thread [%X]\n", + AcpiUtGetMutexName (MutexId), ThisThreadId)); + + return (AE_ALREADY_ACQUIRED); + } + + DEBUG_PRINTP (ACPI_ERROR, + ("Invalid acquire order: Thread %X owns [%s], wants [%s]\n", + ThisThreadId, AcpiUtGetMutexName (i), + AcpiUtGetMutexName (MutexId))); + + return (AE_ACQUIRE_DEADLOCK); + } + } + + + DEBUG_PRINTP (TRACE_MUTEX, + ("Thread %X attempting to acquire Mutex [%s]\n", + ThisThreadId, AcpiUtGetMutexName (MutexId))); + Status = AcpiOsWaitSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex, 1, WAIT_FOREVER); - DEBUG_PRINT (TRACE_MUTEX, ("Acquired Mutex [%s] Status %s\n", - AcpiCmGetMutexName (MutexId), AcpiCmFormatException (Status))); - if (ACPI_SUCCESS (Status)) { - AcpiGbl_AcpiMutexInfo[MutexId].Locked = TRUE; + DEBUG_PRINTP (TRACE_MUTEX, ("Thread %X acquired Mutex [%s]\n", + ThisThreadId, AcpiUtGetMutexName (MutexId))); + AcpiGbl_AcpiMutexInfo[MutexId].UseCount++; + AcpiGbl_AcpiMutexInfo[MutexId].OwnerId = ThisThreadId; + } + + else + { + DEBUG_PRINTP (ACPI_ERROR, ("Thread %X could not acquire Mutex [%s] %s\n", + ThisThreadId, AcpiUtGetMutexName (MutexId), + AcpiUtFormatException (Status))); } return (Status); @@ -387,7 +461,7 @@ AcpiCmAcquireMutex ( /******************************************************************************* * - * FUNCTION: AcpiCmReleaseMutex + * FUNCTION: AcpiUtReleaseMutex * * PARAMETERS: MutexID - ID of the mutex to be released * @@ -398,14 +472,21 @@ AcpiCmAcquireMutex ( ******************************************************************************/ ACPI_STATUS -AcpiCmReleaseMutex ( +AcpiUtReleaseMutex ( ACPI_MUTEX_HANDLE MutexId) { ACPI_STATUS Status; + UINT32 i; + UINT32 ThisThreadId; + + + PROC_NAME ("UtReleaseMutex"); - DEBUG_PRINT (TRACE_MUTEX, - ("Releasing Mutex [%s]\n", AcpiCmGetMutexName (MutexId))); + ThisThreadId = AcpiOsGetThreadId (); + DEBUG_PRINTP (TRACE_MUTEX, + ("Thread %X releasing Mutex [%s]\n", ThisThreadId, + AcpiUtGetMutexName (MutexId))); if (MutexId > MAX_MTX) { @@ -413,19 +494,59 @@ AcpiCmReleaseMutex ( } - AcpiGbl_AcpiMutexInfo[MutexId].Locked = FALSE; /* Mark before unlocking */ + /* + * Mutex must be acquired in order to release it! + */ + if (AcpiGbl_AcpiMutexInfo[MutexId].OwnerId == ACPI_MUTEX_NOT_ACQUIRED) + { + DEBUG_PRINTP (ACPI_ERROR, + ("Mutex [%s] is not acquired, cannot release\n", + AcpiUtGetMutexName (MutexId))); + + return (AE_NOT_ACQUIRED); + } + + + /* + * 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 < MAX_MTX; i++) + { + if (AcpiGbl_AcpiMutexInfo[i].OwnerId == ThisThreadId) + { + if (i == MutexId) + { + continue; + } + + DEBUG_PRINTP (ACPI_ERROR, + ("Invalid release order: owns [%s], releasing [%s]\n", + AcpiUtGetMutexName (i), AcpiUtGetMutexName (MutexId))); + + return (AE_RELEASE_DEADLOCK); + } + } + + + /* Mark unlocked FIRST */ + + AcpiGbl_AcpiMutexInfo[MutexId].OwnerId = ACPI_MUTEX_NOT_ACQUIRED; Status = AcpiOsSignalSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex, 1); if (ACPI_FAILURE (Status)) { - DEBUG_PRINT (ACPI_ERROR, ("Error Releasing Mutex [%s], %s\n", - AcpiCmGetMutexName (MutexId), AcpiCmFormatException (Status))); + DEBUG_PRINTP (ACPI_ERROR, ("Thread %X could not release Mutex [%s] %s\n", + ThisThreadId, AcpiUtGetMutexName (MutexId), + AcpiUtFormatException (Status))); } else { - DEBUG_PRINT (TRACE_MUTEX, ("Released Mutex [%s], %s\n", - AcpiCmGetMutexName (MutexId), AcpiCmFormatException (Status))); + DEBUG_PRINTP (TRACE_MUTEX, ("Thread %X released Mutex [%s]\n", + ThisThreadId, AcpiUtGetMutexName (MutexId))); } return (Status); @@ -434,7 +555,7 @@ AcpiCmReleaseMutex ( /******************************************************************************* * - * FUNCTION: AcpiCmCreateUpdateStateAndPush + * FUNCTION: AcpiUtCreateUpdateStateAndPush * * PARAMETERS: *Object - Object to be added to the new state * Action - Increment/Decrement @@ -447,7 +568,7 @@ AcpiCmReleaseMutex ( ******************************************************************************/ ACPI_STATUS -AcpiCmCreateUpdateStateAndPush ( +AcpiUtCreateUpdateStateAndPush ( ACPI_OPERAND_OBJECT *Object, UINT16 Action, ACPI_GENERIC_STATE **StateList) @@ -462,21 +583,21 @@ AcpiCmCreateUpdateStateAndPush ( return (AE_OK); } - State = AcpiCmCreateUpdateState (Object, Action); + State = AcpiUtCreateUpdateState (Object, Action); if (!State) { return (AE_NO_MEMORY); } - AcpiCmPushGenericState (StateList, State); + AcpiUtPushGenericState (StateList, State); return (AE_OK); } /******************************************************************************* * - * FUNCTION: AcpiCmCreatePkgStateAndPush + * FUNCTION: AcpiUtCreatePkgStateAndPush * * PARAMETERS: *Object - Object to be added to the new state * Action - Increment/Decrement @@ -489,7 +610,7 @@ AcpiCmCreateUpdateStateAndPush ( ******************************************************************************/ ACPI_STATUS -AcpiCmCreatePkgStateAndPush ( +AcpiUtCreatePkgStateAndPush ( void *InternalObject, void *ExternalObject, UINT16 Index, @@ -498,23 +619,21 @@ AcpiCmCreatePkgStateAndPush ( ACPI_GENERIC_STATE *State; - - State = AcpiCmCreatePkgState (InternalObject, ExternalObject, Index); + State = AcpiUtCreatePkgState (InternalObject, ExternalObject, Index); if (!State) { return (AE_NO_MEMORY); } - AcpiCmPushGenericState (StateList, State); + AcpiUtPushGenericState (StateList, State); return (AE_OK); } - /******************************************************************************* * - * FUNCTION: AcpiCmPushGenericState + * FUNCTION: AcpiUtPushGenericState * * PARAMETERS: ListHead - Head of the state stack * State - State object to push @@ -526,11 +645,11 @@ AcpiCmCreatePkgStateAndPush ( ******************************************************************************/ void -AcpiCmPushGenericState ( +AcpiUtPushGenericState ( ACPI_GENERIC_STATE **ListHead, ACPI_GENERIC_STATE *State) { - FUNCTION_TRACE ("CmPushGenericState"); + FUNCTION_TRACE ("UtPushGenericState"); /* Push the state object onto the front of the list (stack) */ @@ -543,7 +662,7 @@ AcpiCmPushGenericState ( /******************************************************************************* * - * FUNCTION: AcpiCmPopGenericState + * FUNCTION: AcpiUtPopGenericState * * PARAMETERS: ListHead - Head of the state stack * @@ -554,7 +673,7 @@ AcpiCmPushGenericState ( ******************************************************************************/ ACPI_GENERIC_STATE * -AcpiCmPopGenericState ( +AcpiUtPopGenericState ( ACPI_GENERIC_STATE **ListHead) { ACPI_GENERIC_STATE *State; @@ -579,7 +698,7 @@ AcpiCmPopGenericState ( /******************************************************************************* * - * FUNCTION: AcpiCmCreateGenericState + * FUNCTION: AcpiUtCreateGenericState * * PARAMETERS: None * @@ -591,12 +710,12 @@ AcpiCmPopGenericState ( ******************************************************************************/ ACPI_GENERIC_STATE * -AcpiCmCreateGenericState (void) +AcpiUtCreateGenericState (void) { ACPI_GENERIC_STATE *State; - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); AcpiGbl_StateCacheRequests++; @@ -613,7 +732,7 @@ AcpiCmCreateGenericState (void) AcpiGbl_StateCacheHits++; AcpiGbl_GenericStateCacheDepth--; - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); DEBUG_PRINT (TRACE_EXEC, ("CreateGenState: State %p from cache\n", State)); } @@ -622,9 +741,9 @@ AcpiCmCreateGenericState (void) { /* The cache is empty, create a new object */ - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); - State = AcpiCmCallocate (sizeof (ACPI_GENERIC_STATE)); + State = AcpiUtCallocate (sizeof (ACPI_GENERIC_STATE)); } /* Initialize */ @@ -644,7 +763,7 @@ AcpiCmCreateGenericState (void) /******************************************************************************* * - * FUNCTION: AcpiCmCreateUpdateState + * FUNCTION: AcpiUtCreateUpdateState * * PARAMETERS: Object - Initial Object to be installed in the * state @@ -659,19 +778,19 @@ AcpiCmCreateGenericState (void) ******************************************************************************/ ACPI_GENERIC_STATE * -AcpiCmCreateUpdateState ( +AcpiUtCreateUpdateState ( ACPI_OPERAND_OBJECT *Object, UINT16 Action) { ACPI_GENERIC_STATE *State; - FUNCTION_TRACE_PTR ("CmCreateUpdateState", Object); + FUNCTION_TRACE_PTR ("UtCreateUpdateState", Object); /* Create the generic state object */ - State = AcpiCmCreateGenericState (); + State = AcpiUtCreateGenericState (); if (!State) { return (NULL); @@ -688,7 +807,7 @@ AcpiCmCreateUpdateState ( /******************************************************************************* * - * FUNCTION: AcpiCmCreatePkgState + * FUNCTION: AcpiUtCreatePkgState * * PARAMETERS: Object - Initial Object to be installed in the * state @@ -703,7 +822,7 @@ AcpiCmCreateUpdateState ( ******************************************************************************/ ACPI_GENERIC_STATE * -AcpiCmCreatePkgState ( +AcpiUtCreatePkgState ( void *InternalObject, void *ExternalObject, UINT16 Index) @@ -711,12 +830,12 @@ AcpiCmCreatePkgState ( ACPI_GENERIC_STATE *State; - FUNCTION_TRACE_PTR ("CmCreatePkgState", InternalObject); + FUNCTION_TRACE_PTR ("UtCreatePkgState", InternalObject); /* Create the generic state object */ - State = AcpiCmCreateGenericState (); + State = AcpiUtCreateGenericState (); if (!State) { return (NULL); @@ -727,16 +846,15 @@ AcpiCmCreatePkgState ( State->Pkg.SourceObject = (ACPI_OPERAND_OBJECT *) InternalObject; State->Pkg.DestObject = ExternalObject; State->Pkg.Index = Index; - State->Pkg.NumPackages = 1; + State->Pkg.NumPackages = 1; return_PTR (State); } - /******************************************************************************* * - * FUNCTION: AcpiCmCreateControlState + * FUNCTION: AcpiUtCreateControlState * * PARAMETERS: None * @@ -748,17 +866,17 @@ AcpiCmCreatePkgState ( ******************************************************************************/ ACPI_GENERIC_STATE * -AcpiCmCreateControlState ( +AcpiUtCreateControlState ( void) { ACPI_GENERIC_STATE *State; - FUNCTION_TRACE ("CmCreateControlState"); + FUNCTION_TRACE ("UtCreateControlState"); /* Create the generic state object */ - State = AcpiCmCreateGenericState (); + State = AcpiUtCreateGenericState (); if (!State) { return (NULL); @@ -775,7 +893,7 @@ AcpiCmCreateControlState ( /******************************************************************************* * - * FUNCTION: AcpiCmDeleteGenericState + * FUNCTION: AcpiUtDeleteGenericState * * PARAMETERS: State - The state object to be deleted * @@ -787,24 +905,24 @@ AcpiCmCreateControlState ( ******************************************************************************/ void -AcpiCmDeleteGenericState ( +AcpiUtDeleteGenericState ( ACPI_GENERIC_STATE *State) { - FUNCTION_TRACE ("CmDeleteGenericState"); + FUNCTION_TRACE ("UtDeleteGenericState"); /* If cache is full, just free this state object */ if (AcpiGbl_GenericStateCacheDepth >= MAX_STATE_CACHE_DEPTH) { - AcpiCmFree (State); + AcpiUtFree (State); } /* Otherwise put this object back into the cache */ else { - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); /* Clear the state */ @@ -818,7 +936,7 @@ AcpiCmDeleteGenericState ( AcpiGbl_GenericStateCacheDepth++; - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); } return_VOID; } @@ -826,7 +944,7 @@ AcpiCmDeleteGenericState ( /******************************************************************************* * - * FUNCTION: AcpiCmDeleteGenericStateCache + * FUNCTION: AcpiUtDeleteGenericStateCache * * PARAMETERS: None * @@ -838,13 +956,13 @@ AcpiCmDeleteGenericState ( ******************************************************************************/ void -AcpiCmDeleteGenericStateCache ( +AcpiUtDeleteGenericStateCache ( void) { ACPI_GENERIC_STATE *Next; - FUNCTION_TRACE ("CmDeleteGenericStateCache"); + FUNCTION_TRACE ("UtDeleteGenericStateCache"); /* Traverse the global cache list */ @@ -854,7 +972,7 @@ AcpiCmDeleteGenericStateCache ( /* Delete one cached state object */ Next = AcpiGbl_GenericStateCache->Common.Next; - AcpiCmFree (AcpiGbl_GenericStateCache); + AcpiUtFree (AcpiGbl_GenericStateCache); AcpiGbl_GenericStateCache = Next; AcpiGbl_GenericStateCacheDepth--; } @@ -865,7 +983,7 @@ AcpiCmDeleteGenericStateCache ( /******************************************************************************* * - * FUNCTION: AcpiCmResolvePackageReferences + * FUNCTION: AcpiUtResolvePackageReferences * * PARAMETERS: ObjDesc - The Package object on which to resolve refs * @@ -876,14 +994,14 @@ AcpiCmDeleteGenericStateCache ( ******************************************************************************/ ACPI_STATUS -AcpiCmResolvePackageReferences ( +AcpiUtResolvePackageReferences ( ACPI_OPERAND_OBJECT *ObjDesc) { UINT32 Count; ACPI_OPERAND_OBJECT *SubObject; - FUNCTION_TRACE ("AcpiCmResolvePackageReferences"); + FUNCTION_TRACE ("AcpiUtResolvePackageReferences"); if (ObjDesc->Common.Type != ACPI_TYPE_PACKAGE) @@ -903,17 +1021,19 @@ AcpiCmResolvePackageReferences ( if (SubObject->Common.Type == INTERNAL_TYPE_REFERENCE) { - if (SubObject->Reference.OpCode == AML_ZERO_OP) + if (SubObject->Reference.Opcode == AML_ZERO_OP) { SubObject->Common.Type = ACPI_TYPE_INTEGER; SubObject->Integer.Value = 0; } - else if (SubObject->Reference.OpCode == AML_ONE_OP) + + else if (SubObject->Reference.Opcode == AML_ONE_OP) { SubObject->Common.Type = ACPI_TYPE_INTEGER; SubObject->Integer.Value = 1; } - else if (SubObject->Reference.OpCode == AML_ONES_OP) + + else if (SubObject->Reference.Opcode == AML_ONES_OP) { SubObject->Common.Type = ACPI_TYPE_INTEGER; SubObject->Integer.Value = ACPI_INTEGER_MAX; @@ -926,9 +1046,9 @@ AcpiCmResolvePackageReferences ( #ifdef ACPI_DEBUG -/****************************************************************************** +/******************************************************************************* * - * FUNCTION: AcpiCmDisplayInitPathname + * FUNCTION: AcpiUtDisplayInitPathname * * PARAMETERS: ObjHandle - Handle whose pathname will be displayed * Path - Additional path string to be appended @@ -937,10 +1057,10 @@ AcpiCmResolvePackageReferences ( * * DESCRIPTION: Display full pathnbame of an object, DEBUG ONLY * - *****************************************************************************/ + ******************************************************************************/ void -AcpiCmDisplayInitPathname ( +AcpiUtDisplayInitPathname ( ACPI_HANDLE ObjHandle, char *Path) { @@ -966,7 +1086,7 @@ AcpiCmDisplayInitPathname ( /******************************************************************************* * - * FUNCTION: AcpiCmWalkPackageTree + * FUNCTION: AcpiUtWalkPackageTree * * PARAMETERS: ObjDesc - The Package object on which to resolve refs * @@ -977,7 +1097,7 @@ AcpiCmDisplayInitPathname ( ******************************************************************************/ ACPI_STATUS -AcpiCmWalkPackageTree ( +AcpiUtWalkPackageTree ( ACPI_OPERAND_OBJECT *SourceObject, void *TargetObject, ACPI_PKG_CALLBACK WalkCallback, @@ -990,10 +1110,10 @@ AcpiCmWalkPackageTree ( ACPI_OPERAND_OBJECT *ThisSourceObj; - FUNCTION_TRACE ("AcpiCmWalkPackageTree"); + FUNCTION_TRACE ("AcpiUtWalkPackageTree"); - State = AcpiCmCreatePkgState (SourceObject, TargetObject, 0); + State = AcpiUtCreatePkgState (SourceObject, TargetObject, 0); if (!State) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -1001,16 +1121,17 @@ AcpiCmWalkPackageTree ( while (State) { - ThisIndex = State->Pkg.Index; - ThisSourceObj = (ACPI_OPERAND_OBJECT *) - State->Pkg.SourceObject->Package.Elements[ThisIndex]; + ThisIndex = State->Pkg.Index; + ThisSourceObj = (ACPI_OPERAND_OBJECT *) + State->Pkg.SourceObject->Package.Elements[ThisIndex]; /* - * Check for + * 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. + * 3) Any type other than a package. Packages are handled in else + * case below. */ if ((!ThisSourceObj) || (!VALID_DESCRIPTOR_TYPE ( @@ -1019,7 +1140,8 @@ AcpiCmWalkPackageTree ( ThisSourceObj, ACPI_TYPE_PACKAGE))) { - Status = WalkCallback (0, ThisSourceObj, State, Context); + Status = WalkCallback (ACPI_COPY_TYPE_SIMPLE, ThisSourceObj, + State, Context); if (ACPI_FAILURE (Status)) { /* TBD: must delete package created up to this point */ @@ -1037,9 +1159,9 @@ AcpiCmWalkPackageTree ( * * Delete this state and pop the previous state (package). */ - AcpiCmDeleteGenericState (State); - State = AcpiCmPopGenericState (&StateList); - + AcpiUtDeleteGenericState (State); + State = AcpiUtPopGenericState (&StateList); + /* Finished when there are no more states */ @@ -1065,7 +1187,8 @@ AcpiCmWalkPackageTree ( { /* This is a sub-object of type package */ - Status = WalkCallback (1, ThisSourceObj, State, Context); + Status = WalkCallback (ACPI_COPY_TYPE_PACKAGE, ThisSourceObj, + State, Context); if (ACPI_FAILURE (Status)) { /* TBD: must delete package created up to this point */ @@ -1074,15 +1197,16 @@ AcpiCmWalkPackageTree ( } - /* + /* * The callback above returned a new target package object. */ /* * Push the current state and create a new one */ - AcpiCmPushGenericState (&StateList, State); - State = AcpiCmCreatePkgState (ThisSourceObj, State->Pkg.ThisTargetObj, 0); + AcpiUtPushGenericState (&StateList, State); + State = AcpiUtCreatePkgState (ThisSourceObj, + State->Pkg.ThisTargetObj, 0); if (!State) { /* TBD: must delete package created up to this point */ @@ -1099,7 +1223,6 @@ AcpiCmWalkPackageTree ( } - /******************************************************************************* * * FUNCTION: _ReportError diff --git a/sys/contrib/dev/acpica/utobject.c b/sys/contrib/dev/acpica/utobject.c index 13869b3..98f866b 100644 --- a/sys/contrib/dev/acpica/utobject.c +++ b/sys/contrib/dev/acpica/utobject.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: cmobject - ACPI object create/delete/size/cache routines - * $Revision: 36 $ + * Module Name: utobject - ACPI object create/delete/size/cache routines + * $Revision: 46 $ * *****************************************************************************/ @@ -114,7 +114,7 @@ * *****************************************************************************/ -#define __CMOBJECT_C__ +#define __UTOBJECT_C__ #include "acpi.h" #include "acinterp.h" @@ -123,13 +123,13 @@ #include "amlcode.h" -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmobject") +#define _COMPONENT ACPI_UTILITIES + MODULE_NAME ("utobject") /******************************************************************************* * - * FUNCTION: _CmCreateInternalObject + * FUNCTION: _UtCreateInternalObject * * PARAMETERS: Address - Address of the memory to deallocate * Component - Component type of caller @@ -141,35 +141,35 @@ * * 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 + * 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 * -_CmCreateInternalObject ( +_UtCreateInternalObject ( NATIVE_CHAR *ModuleName, UINT32 LineNumber, UINT32 ComponentId, - OBJECT_TYPE_INTERNAL Type) + ACPI_OBJECT_TYPE8 Type) { ACPI_OPERAND_OBJECT *Object; - FUNCTION_TRACE_STR ("CmCreateInternalObject", AcpiCmGetTypeName (Type)); + FUNCTION_TRACE_STR ("UtCreateInternalObject", AcpiUtGetTypeName (Type)); /* Allocate the raw object descriptor */ - Object = _CmAllocateObjectDesc (ModuleName, LineNumber, ComponentId); + Object = _UtAllocateObjectDesc (ModuleName, LineNumber, ComponentId); if (!Object) { /* Allocation failure */ - return_VALUE (NULL); + return_PTR (NULL); } /* Save the object type in the object descriptor */ @@ -189,7 +189,7 @@ _CmCreateInternalObject ( /******************************************************************************* * - * FUNCTION: AcpiCmValidInternalObject + * FUNCTION: AcpiUtValidInternalObject * * PARAMETERS: Operand - Object to be validated * @@ -198,16 +198,19 @@ _CmCreateInternalObject ( ******************************************************************************/ BOOLEAN -AcpiCmValidInternalObject ( +AcpiUtValidInternalObject ( void *Object) { + PROC_NAME ("UtValidInternalObject"); + + /* Check for a null pointer */ if (!Object) { DEBUG_PRINT (ACPI_INFO, - ("CmValidInternalObject: **** Null Object Ptr\n")); + ("**** Null Object Ptr\n")); return (FALSE); } @@ -215,8 +218,7 @@ AcpiCmValidInternalObject ( if (AcpiTbSystemTablePointer (Object)) { - DEBUG_PRINT (ACPI_INFO, - ("CmValidInternalObject: **** Object %p is a Pcode Ptr\n", Object)); + DEBUG_PRINTP (ACPI_INFO, ("**** Object %p is a Pcode Ptr\n", Object)); return (FALSE); } @@ -228,23 +230,20 @@ AcpiCmValidInternalObject ( if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED)) { - DEBUG_PRINT (ACPI_INFO, - ("CmValidInternalObject: **** Obj %p is a named obj, not ACPI obj\n", - Object)); + DEBUG_PRINTP (ACPI_INFO, + ("**** Obj %p is a named obj, not ACPI obj\n", Object)); } else if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_PARSER)) { - DEBUG_PRINT (ACPI_INFO, - ("CmValidInternalObject: **** Obj %p is a parser obj, not ACPI obj\n", - Object)); + DEBUG_PRINTP (ACPI_INFO, + ("**** Obj %p is a parser obj, not ACPI obj\n", Object)); } else { - DEBUG_PRINT (ACPI_INFO, - ("CmValidInternalObject: **** Obj %p is of unknown type\n", - Object)); + DEBUG_PRINTP (ACPI_INFO, + ("**** Obj %p is of unknown type\n", Object)); } return (FALSE); @@ -259,7 +258,7 @@ AcpiCmValidInternalObject ( /******************************************************************************* * - * FUNCTION: _CmAllocateObjectDesc + * FUNCTION: _UtAllocateObjectDesc * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) @@ -274,7 +273,7 @@ AcpiCmValidInternalObject ( ******************************************************************************/ void * -_CmAllocateObjectDesc ( +_UtAllocateObjectDesc ( NATIVE_CHAR *ModuleName, UINT32 LineNumber, UINT32 ComponentId) @@ -285,7 +284,7 @@ _CmAllocateObjectDesc ( FUNCTION_TRACE ("_AllocateObjectDesc"); - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); AcpiGbl_ObjectCacheRequests++; @@ -302,18 +301,18 @@ _CmAllocateObjectDesc ( AcpiGbl_ObjectCacheHits++; AcpiGbl_ObjectCacheDepth--; - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); } else { /* The cache is empty, create a new object */ - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); /* Attempt to allocate new descriptor */ - Object = _CmCallocate (sizeof (ACPI_OPERAND_OBJECT), ComponentId, + Object = _UtCallocate (sizeof (ACPI_OPERAND_OBJECT), ComponentId, ModuleName, LineNumber); if (!Object) { @@ -334,8 +333,8 @@ _CmAllocateObjectDesc ( Object->Common.DataType = ACPI_DESC_TYPE_INTERNAL; - DEBUG_PRINT (TRACE_ALLOCATIONS, ("AllocateObjectDesc: %p Size %X\n", - Object, sizeof (ACPI_OPERAND_OBJECT))); + DEBUG_PRINTP (TRACE_ALLOCATIONS, ("%p Size %X\n", + Object, sizeof (ACPI_OPERAND_OBJECT))); return_PTR (Object); } @@ -343,7 +342,7 @@ _CmAllocateObjectDesc ( /******************************************************************************* * - * FUNCTION: AcpiCmDeleteObjectDesc + * FUNCTION: AcpiUtDeleteObjectDesc * * PARAMETERS: Object - Acpi internal object to be deleted * @@ -354,20 +353,19 @@ _CmAllocateObjectDesc ( ******************************************************************************/ void -AcpiCmDeleteObjectDesc ( +AcpiUtDeleteObjectDesc ( ACPI_OPERAND_OBJECT *Object) { - FUNCTION_TRACE_PTR ("AcpiCmDeleteObjectDesc", Object); + FUNCTION_TRACE_PTR ("AcpiUtDeleteObjectDesc", Object); /* Make sure that the object isn't already in the cache */ if (Object->Common.DataType == (ACPI_DESC_TYPE_INTERNAL | ACPI_CACHED_OBJECT)) { - DEBUG_PRINT (ACPI_ERROR, - ("CmDeleteObjectDesc: Obj %p is already in the object cache\n", - Object)); + DEBUG_PRINTP (ACPI_ERROR, + ("Obj %p is already in the object cache\n", Object)); return_VOID; } @@ -375,8 +373,8 @@ AcpiCmDeleteObjectDesc ( if (Object->Common.DataType != ACPI_DESC_TYPE_INTERNAL) { - DEBUG_PRINT (ACPI_ERROR, - ("CmDeleteObjectDesc: Obj %p is not an ACPI object\n", Object)); + DEBUG_PRINTP (ACPI_ERROR, + ("Obj %p is not an ACPI object\n", Object)); return_VOID; } @@ -391,11 +389,11 @@ AcpiCmDeleteObjectDesc ( */ DECREMENT_OBJECT_METRICS (sizeof (ACPI_OPERAND_OBJECT)); - AcpiCmFree (Object); + AcpiUtFree (Object); return_VOID; } - AcpiCmAcquireMutex (ACPI_MTX_CACHES); + AcpiUtAcquireMutex (ACPI_MTX_CACHES); /* Clear the entire object. This is important! */ @@ -409,14 +407,14 @@ AcpiCmDeleteObjectDesc ( AcpiGbl_ObjectCacheDepth++; - AcpiCmReleaseMutex (ACPI_MTX_CACHES); + AcpiUtReleaseMutex (ACPI_MTX_CACHES); return_VOID; } /******************************************************************************* * - * FUNCTION: AcpiCmDeleteObjectCache + * FUNCTION: AcpiUtDeleteObjectCache * * PARAMETERS: None * @@ -428,13 +426,13 @@ AcpiCmDeleteObjectDesc ( ******************************************************************************/ void -AcpiCmDeleteObjectCache ( +AcpiUtDeleteObjectCache ( void) { ACPI_OPERAND_OBJECT *Next; - FUNCTION_TRACE ("CmDeleteObjectCache"); + FUNCTION_TRACE ("UtDeleteObjectCache"); /* Traverse the global cache list */ @@ -452,7 +450,7 @@ AcpiCmDeleteObjectCache ( */ DECREMENT_OBJECT_METRICS (sizeof (ACPI_OPERAND_OBJECT)); - AcpiCmFree (AcpiGbl_ObjectCache); + AcpiUtFree (AcpiGbl_ObjectCache); AcpiGbl_ObjectCache = Next; AcpiGbl_ObjectCacheDepth--; } @@ -463,7 +461,7 @@ AcpiCmDeleteObjectCache ( /******************************************************************************* * - * FUNCTION: AcpiCmInitStaticObject + * FUNCTION: AcpiUtInitStaticObject * * PARAMETERS: ObjDesc - Pointer to a "static" object - on stack * or in the data segment. @@ -476,11 +474,11 @@ AcpiCmDeleteObjectCache ( ******************************************************************************/ void -AcpiCmInitStaticObject ( +AcpiUtInitStaticObject ( ACPI_OPERAND_OBJECT *ObjDesc) { - FUNCTION_TRACE_PTR ("CmInitStaticObject", ObjDesc); + FUNCTION_TRACE_PTR ("UtInitStaticObject", ObjDesc); if (!ObjDesc) @@ -514,7 +512,7 @@ AcpiCmInitStaticObject ( /******************************************************************************* * - * FUNCTION: AcpiCmGetSimpleObjectSize + * FUNCTION: AcpiUtGetSimpleObjectSize * * PARAMETERS: *InternalObject - Pointer to the object we are examining * *RetLength - Where the length is returned @@ -530,7 +528,7 @@ AcpiCmInitStaticObject ( ******************************************************************************/ ACPI_STATUS -AcpiCmGetSimpleObjectSize ( +AcpiUtGetSimpleObjectSize ( ACPI_OPERAND_OBJECT *InternalObject, UINT32 *ObjLength) { @@ -538,7 +536,7 @@ AcpiCmGetSimpleObjectSize ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("CmGetSimpleObjectSize", InternalObject); + FUNCTION_TRACE_PTR ("UtGetSimpleObjectSize", InternalObject); /* Handle a null object (Could be a uninitialized package element -- which is legal) */ @@ -566,9 +564,8 @@ AcpiCmGetSimpleObjectSize ( /* * 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. - * - * TBD:[Investigate] do strings and buffers require alignment also? + * must be accessed bytewise or there may be alignment problems on + * certain processors */ switch (InternalObject->Common.Type) @@ -599,23 +596,31 @@ AcpiCmGetSimpleObjectSize ( case INTERNAL_TYPE_REFERENCE: /* - * The only type that should be here is opcode AML_NAMEPATH_OP -- since + * The only type that should be here is internal opcode NAMEPATH_OP -- since * this means an object reference */ - if (InternalObject->Reference.OpCode != AML_NAMEPATH_OP) + if (InternalObject->Reference.Opcode != AML_INT_NAMEPATH_OP) { - DEBUG_PRINT (ACPI_ERROR, - ("CmGetSimpleObjectSize: Unsupported Reference opcode=%X in object %p\n", - InternalObject->Reference.OpCode, InternalObject)); + DEBUG_PRINTP (ACPI_ERROR, + ("Unsupported Reference opcode=%X in object %p\n", + InternalObject->Reference.Opcode, InternalObject)); Status = AE_TYPE; } + + else + { + /* + * Get the actual length of the full pathname to this object. + * The reference will be converted to the pathname to the object + */ + Length += ROUND_UP_TO_NATIVE_WORD (AcpiNsGetPathnameLength (InternalObject->Reference.Node)); + } break; default: - DEBUG_PRINT (ACPI_ERROR, - ("CmGetSimpleObjectSize: Unsupported type=%X in object %p\n", + DEBUG_PRINTP (ACPI_ERROR, ("Unsupported type=%X in object %p\n", InternalObject->Common.Type, InternalObject)); Status = AE_TYPE; break; @@ -636,18 +641,18 @@ AcpiCmGetSimpleObjectSize ( /******************************************************************************* * - * FUNCTION: AcpiCmCopyPackageToInternal + * FUNCTION: AcpiUtGetElementLength * * PARAMETERS: ACPI_PKG_CALLBACK * * RETURN: Status - the status of the call * - * DESCRIPTION: + * DESCRIPTION: Get the length of one package element. * ******************************************************************************/ ACPI_STATUS -AcpiCmGetElementLength ( +AcpiUtGetElementLength ( UINT8 ObjectType, ACPI_OPERAND_OBJECT *SourceObject, ACPI_GENERIC_STATE *State, @@ -666,7 +671,7 @@ AcpiCmGetElementLength ( * Simple object - just get the size (Null object/entry is handled * here also) and sum it into the running package length */ - Status = AcpiCmGetSimpleObjectSize (SourceObject, &ObjectSpace); + Status = AcpiUtGetSimpleObjectSize (SourceObject, &ObjectSpace); if (ACPI_FAILURE (Status)) { return (Status); @@ -694,23 +699,23 @@ AcpiCmGetElementLength ( /******************************************************************************* * - * FUNCTION: AcpiCmGetPackageObjectSize + * FUNCTION: AcpiUtGetPackageObjectSize * * PARAMETERS: *InternalObject - Pointer to the object we are examining * *RetLength - Where the length is returned * * RETURN: Status * - * DESCRIPTION: This function is called to determine the space required to + * DESCRIPTION: This function is called to determine the space required to * contain a package object for return to an API user. * - * This is moderately complex since a package contains other + * This is moderately complex since a package contains other * objects including packages. * ******************************************************************************/ ACPI_STATUS -AcpiCmGetPackageObjectSize ( +AcpiUtGetPackageObjectSize ( ACPI_OPERAND_OBJECT *InternalObject, UINT32 *ObjLength) { @@ -718,15 +723,15 @@ AcpiCmGetPackageObjectSize ( ACPI_PKG_INFO Info; - FUNCTION_TRACE_PTR ("CmGetPackageObjectSize", InternalObject); + FUNCTION_TRACE_PTR ("UtGetPackageObjectSize", InternalObject); Info.Length = 0; Info.ObjectSpace = 0; Info.NumPackages = 1; - Status = AcpiCmWalkPackageTree (InternalObject, NULL, - AcpiCmGetElementLength, &Info); + Status = AcpiUtWalkPackageTree (InternalObject, NULL, + AcpiUtGetElementLength, &Info); /* * We have handled all of the objects in all levels of the package. @@ -743,15 +748,14 @@ AcpiCmGetPackageObjectSize ( } - /******************************************************************************* * - * FUNCTION: AcpiCmGetObjectSize + * FUNCTION: AcpiUtGetObjectSize * * PARAMETERS: *InternalObject - Pointer to the object we are examining * *RetLength - Where the length will be returned * - * RETURN: Status + * RETURN: Status * * DESCRIPTION: This function is called to determine the space required to * contain an object for return to an API user. @@ -759,7 +763,7 @@ AcpiCmGetPackageObjectSize ( ******************************************************************************/ ACPI_STATUS -AcpiCmGetObjectSize( +AcpiUtGetObjectSize( ACPI_OPERAND_OBJECT *InternalObject, UINT32 *ObjLength) { @@ -769,12 +773,12 @@ AcpiCmGetObjectSize( if ((VALID_DESCRIPTOR_TYPE (InternalObject, ACPI_DESC_TYPE_INTERNAL)) && (IS_THIS_OBJECT_TYPE (InternalObject, ACPI_TYPE_PACKAGE))) { - Status = AcpiCmGetPackageObjectSize (InternalObject, ObjLength); + Status = AcpiUtGetPackageObjectSize (InternalObject, ObjLength); } else { - Status = AcpiCmGetSimpleObjectSize (InternalObject, ObjLength); + Status = AcpiUtGetSimpleObjectSize (InternalObject, ObjLength); } return (Status); diff --git a/sys/contrib/dev/acpica/utxface.c b/sys/contrib/dev/acpica/utxface.c index 92312b9..1e74682 100644 --- a/sys/contrib/dev/acpica/utxface.c +++ b/sys/contrib/dev/acpica/utxface.c @@ -1,7 +1,7 @@ /****************************************************************************** * - * Module Name: cmxface - External interfaces for "global" ACPI functions - * $Revision: 64 $ + * Module Name: utxface - External interfaces for "global" ACPI functions + * $Revision: 72 $ * *****************************************************************************/ @@ -115,7 +115,7 @@ *****************************************************************************/ -#define __CMXFACE_C__ +#define __UTXFACE_C__ #include "acpi.h" #include "acevents.h" @@ -126,8 +126,8 @@ #include "acdebug.h" -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmxface") +#define _COMPONENT ACPI_UTILITIES + MODULE_NAME ("utxface") /******************************************************************************* @@ -154,7 +154,7 @@ AcpiInitializeSubsystem ( /* Initialize all globals used by the subsystem */ - AcpiCmInitGlobals (); + AcpiUtInitGlobals (); /* Initialize the OS-Dependent layer */ @@ -162,17 +162,17 @@ AcpiInitializeSubsystem ( if (ACPI_FAILURE (Status)) { REPORT_ERROR (("OSD failed to initialize, %s\n", - AcpiCmFormatException (Status))); + AcpiUtFormatException (Status))); return_ACPI_STATUS (Status); } /* Create the default mutex objects */ - Status = AcpiCmMutexInitialize (); + Status = AcpiUtMutexInitialize (); if (ACPI_FAILURE (Status)) { REPORT_ERROR (("Global mutex creation failure, %s\n", - AcpiCmFormatException (Status))); + AcpiUtFormatException (Status))); return_ACPI_STATUS (Status); } @@ -185,7 +185,7 @@ AcpiInitializeSubsystem ( if (ACPI_FAILURE (Status)) { REPORT_ERROR (("Namespace initialization failure, %s\n", - AcpiCmFormatException (Status))); + AcpiUtFormatException (Status))); return_ACPI_STATUS (Status); } @@ -223,7 +223,7 @@ AcpiEnableSubsystem ( /* Sanity check the FADT for valid values */ - Status = AcpiCmValidateFadt (); + Status = AcpiUtValidateFadt (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -350,25 +350,36 @@ AcpiEnableSubsystem ( ACPI_STATUS AcpiTerminate (void) { + ACPI_STATUS Status; + FUNCTION_TRACE ("AcpiTerminate"); - /* Terminate the AML Debuger if present */ + + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + /* Terminate the AML Debugger if present */ DEBUGGER_EXEC(AcpiGbl_DbTerminateThreads = TRUE); /* TBD: [Investigate] This is no longer needed?*/ -/* AcpiCmReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); */ +/* AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); */ /* Shutdown and free all resources */ - AcpiCmSubsystemShutdown (); + AcpiUtSubsystemShutdown (); /* Free the mutex objects */ - AcpiCmMutexTerminate (); + AcpiUtMutexTerminate (); /* Now we can shutdown the OS-dependent layer */ @@ -404,11 +415,20 @@ AcpiGetSystemInfo ( { ACPI_SYSTEM_INFO *InfoPtr; UINT32 i; + ACPI_STATUS Status; FUNCTION_TRACE ("AcpiGetSystemInfo"); + /* Ensure that ACPI has been initialized */ + + ACPI_IS_INITIALIZATION_COMPLETE (Status); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* * Must have a valid buffer */ @@ -514,7 +534,7 @@ AcpiFormatException ( /* Convert the exception code (Handles bad exception codes) */ - FormattedException = AcpiCmFormatException (Exception); + FormattedException = AcpiUtFormatException (Exception); /* * Get length of string and check if it will fit in caller's buffer @@ -535,3 +555,68 @@ AcpiFormatException ( return_ACPI_STATUS (AE_OK); } + +/***************************************************************************** + * + * FUNCTION: AcpiAllocate + * + * PARAMETERS: Size - Size of the allocation + * + * RETURN: Address of the allocated memory on success, NULL on failure. + * + * DESCRIPTION: The subsystem's equivalent of malloc. + * External front-end to the Ut* memory manager + * + ****************************************************************************/ + +void * +AcpiAllocate ( + UINT32 Size) +{ + + return (AcpiUtAllocate (Size)); +} + + +/***************************************************************************** + * + * FUNCTION: AcpiCallocate + * + * PARAMETERS: Size - Size of the allocation + * + * RETURN: Address of the allocated memory on success, NULL on failure. + * + * DESCRIPTION: The subsystem's equivalent of calloc. + * External front-end to the Ut* memory manager + * + ****************************************************************************/ + +void * +AcpiCallocate ( + UINT32 Size) +{ + + return (AcpiUtCallocate (Size)); +} + + +/***************************************************************************** + * + * FUNCTION: AcpiFree + * + * PARAMETERS: Address - Address of the memory to deallocate + * + * RETURN: None + * + * DESCRIPTION: Frees the memory at Address + * External front-end to the Ut* memory manager + * + ****************************************************************************/ + +void +AcpiFree ( + void *Address) +{ + + AcpiUtFree (Address); +} -- cgit v1.1