xref: /illumos-gate/usr/src/uts/intel/sys/acpi/aclocal.h (revision 57190917)
17c478bd9Sstevel@tonic-gate /******************************************************************************
27c478bd9Sstevel@tonic-gate  *
37c478bd9Sstevel@tonic-gate  * Name: aclocal.h - Internal data types used across the ACPI subsystem
47c478bd9Sstevel@tonic-gate  *
57c478bd9Sstevel@tonic-gate  *****************************************************************************/
67c478bd9Sstevel@tonic-gate 
77c478bd9Sstevel@tonic-gate /******************************************************************************
87c478bd9Sstevel@tonic-gate  *
97c478bd9Sstevel@tonic-gate  * 1. Copyright Notice
107c478bd9Sstevel@tonic-gate  *
11aa2aa9a6SDana Myers  * Some or all of this work - Copyright (c) 1999 - 2009, Intel Corp.
127c478bd9Sstevel@tonic-gate  * All rights reserved.
137c478bd9Sstevel@tonic-gate  *
147c478bd9Sstevel@tonic-gate  * 2. License
157c478bd9Sstevel@tonic-gate  *
167c478bd9Sstevel@tonic-gate  * 2.1. This is your license from Intel Corp. under its intellectual property
177c478bd9Sstevel@tonic-gate  * rights.  You may have additional license terms from the party that provided
187c478bd9Sstevel@tonic-gate  * you this software, covering your right to use that party's intellectual
197c478bd9Sstevel@tonic-gate  * property rights.
207c478bd9Sstevel@tonic-gate  *
217c478bd9Sstevel@tonic-gate  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
227c478bd9Sstevel@tonic-gate  * copy of the source code appearing in this file ("Covered Code") an
237c478bd9Sstevel@tonic-gate  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
247c478bd9Sstevel@tonic-gate  * base code distributed originally by Intel ("Original Intel Code") to copy,
257c478bd9Sstevel@tonic-gate  * make derivatives, distribute, use and display any portion of the Covered
267c478bd9Sstevel@tonic-gate  * Code in any form, with the right to sublicense such rights; and
277c478bd9Sstevel@tonic-gate  *
287c478bd9Sstevel@tonic-gate  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
297c478bd9Sstevel@tonic-gate  * license (with the right to sublicense), under only those claims of Intel
307c478bd9Sstevel@tonic-gate  * patents that are infringed by the Original Intel Code, to make, use, sell,
317c478bd9Sstevel@tonic-gate  * offer to sell, and import the Covered Code and derivative works thereof
327c478bd9Sstevel@tonic-gate  * solely to the minimum extent necessary to exercise the above copyright
337c478bd9Sstevel@tonic-gate  * license, and in no event shall the patent license extend to any additions
347c478bd9Sstevel@tonic-gate  * to or modifications of the Original Intel Code.  No other license or right
357c478bd9Sstevel@tonic-gate  * is granted directly or by implication, estoppel or otherwise;
367c478bd9Sstevel@tonic-gate  *
377c478bd9Sstevel@tonic-gate  * The above copyright and patent license is granted only if the following
387c478bd9Sstevel@tonic-gate  * conditions are met:
397c478bd9Sstevel@tonic-gate  *
407c478bd9Sstevel@tonic-gate  * 3. Conditions
417c478bd9Sstevel@tonic-gate  *
427c478bd9Sstevel@tonic-gate  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
437c478bd9Sstevel@tonic-gate  * Redistribution of source code of any substantial portion of the Covered
447c478bd9Sstevel@tonic-gate  * Code or modification with rights to further distribute source must include
457c478bd9Sstevel@tonic-gate  * the above Copyright Notice, the above License, this list of Conditions,
467c478bd9Sstevel@tonic-gate  * and the following Disclaimer and Export Compliance provision.  In addition,
477c478bd9Sstevel@tonic-gate  * Licensee must cause all Covered Code to which Licensee contributes to
487c478bd9Sstevel@tonic-gate  * contain a file documenting the changes Licensee made to create that Covered
497c478bd9Sstevel@tonic-gate  * Code and the date of any change.  Licensee must include in that file the
507c478bd9Sstevel@tonic-gate  * documentation of any changes made by any predecessor Licensee.  Licensee
517c478bd9Sstevel@tonic-gate  * must include a prominent statement that the modification is derived,
527c478bd9Sstevel@tonic-gate  * directly or indirectly, from Original Intel Code.
537c478bd9Sstevel@tonic-gate  *
547c478bd9Sstevel@tonic-gate  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
557c478bd9Sstevel@tonic-gate  * Redistribution of source code of any substantial portion of the Covered
567c478bd9Sstevel@tonic-gate  * Code or modification without rights to further distribute source must
577c478bd9Sstevel@tonic-gate  * include the following Disclaimer and Export Compliance provision in the
587c478bd9Sstevel@tonic-gate  * documentation and/or other materials provided with distribution.  In
597c478bd9Sstevel@tonic-gate  * addition, Licensee may not authorize further sublicense of source of any
607c478bd9Sstevel@tonic-gate  * portion of the Covered Code, and must include terms to the effect that the
617c478bd9Sstevel@tonic-gate  * license from Licensee to its licensee is limited to the intellectual
627c478bd9Sstevel@tonic-gate  * property embodied in the software Licensee provides to its licensee, and
637c478bd9Sstevel@tonic-gate  * not to intellectual property embodied in modifications its licensee may
647c478bd9Sstevel@tonic-gate  * make.
657c478bd9Sstevel@tonic-gate  *
667c478bd9Sstevel@tonic-gate  * 3.3. Redistribution of Executable. Redistribution in executable form of any
677c478bd9Sstevel@tonic-gate  * substantial portion of the Covered Code or modification must reproduce the
687c478bd9Sstevel@tonic-gate  * above Copyright Notice, and the following Disclaimer and Export Compliance
697c478bd9Sstevel@tonic-gate  * provision in the documentation and/or other materials provided with the
707c478bd9Sstevel@tonic-gate  * distribution.
717c478bd9Sstevel@tonic-gate  *
727c478bd9Sstevel@tonic-gate  * 3.4. Intel retains all right, title, and interest in and to the Original
737c478bd9Sstevel@tonic-gate  * Intel Code.
747c478bd9Sstevel@tonic-gate  *
757c478bd9Sstevel@tonic-gate  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
767c478bd9Sstevel@tonic-gate  * Intel shall be used in advertising or otherwise to promote the sale, use or
777c478bd9Sstevel@tonic-gate  * other dealings in products derived from or relating to the Covered Code
787c478bd9Sstevel@tonic-gate  * without prior written authorization from Intel.
797c478bd9Sstevel@tonic-gate  *
807c478bd9Sstevel@tonic-gate  * 4. Disclaimer and Export Compliance
817c478bd9Sstevel@tonic-gate  *
827c478bd9Sstevel@tonic-gate  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
837c478bd9Sstevel@tonic-gate  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
847c478bd9Sstevel@tonic-gate  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
857c478bd9Sstevel@tonic-gate  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
867c478bd9Sstevel@tonic-gate  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
877c478bd9Sstevel@tonic-gate  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
887c478bd9Sstevel@tonic-gate  * PARTICULAR PURPOSE.
897c478bd9Sstevel@tonic-gate  *
907c478bd9Sstevel@tonic-gate  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
917c478bd9Sstevel@tonic-gate  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
927c478bd9Sstevel@tonic-gate  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
937c478bd9Sstevel@tonic-gate  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
947c478bd9Sstevel@tonic-gate  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
957c478bd9Sstevel@tonic-gate  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
967c478bd9Sstevel@tonic-gate  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
977c478bd9Sstevel@tonic-gate  * LIMITED REMEDY.
987c478bd9Sstevel@tonic-gate  *
997c478bd9Sstevel@tonic-gate  * 4.3. Licensee shall not export, either directly or indirectly, any of this
1007c478bd9Sstevel@tonic-gate  * software or system incorporating such software without first obtaining any
1017c478bd9Sstevel@tonic-gate  * required license or other approval from the U. S. Department of Commerce or
1027c478bd9Sstevel@tonic-gate  * any other agency or department of the United States Government.  In the
1037c478bd9Sstevel@tonic-gate  * event Licensee exports any such software from the United States or
1047c478bd9Sstevel@tonic-gate  * re-exports any such software from a foreign destination, Licensee shall
1057c478bd9Sstevel@tonic-gate  * ensure that the distribution and export/re-export of the software is in
1067c478bd9Sstevel@tonic-gate  * compliance with all laws, regulations, orders, or other restrictions of the
1077c478bd9Sstevel@tonic-gate  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
1087c478bd9Sstevel@tonic-gate  * any of its subsidiaries will export/re-export any technical data, process,
1097c478bd9Sstevel@tonic-gate  * software, or service, directly or indirectly, to any country for which the
1107c478bd9Sstevel@tonic-gate  * United States government or any agency thereof requires an export license,
1117c478bd9Sstevel@tonic-gate  * other governmental approval, or letter of assurance, without first obtaining
1127c478bd9Sstevel@tonic-gate  * such license, approval or letter.
1137c478bd9Sstevel@tonic-gate  *
1147c478bd9Sstevel@tonic-gate  *****************************************************************************/
1157c478bd9Sstevel@tonic-gate 
1167c478bd9Sstevel@tonic-gate #ifndef __ACLOCAL_H__
1177c478bd9Sstevel@tonic-gate #define __ACLOCAL_H__
1187c478bd9Sstevel@tonic-gate 
119aa2aa9a6SDana Myers 
12027f7c583Smyers /* acpisrc:StructDefs -- for acpisrc conversion */
1217c478bd9Sstevel@tonic-gate 
12227f7c583Smyers #define ACPI_SERIALIZED                 0xFF
1237c478bd9Sstevel@tonic-gate 
1247c478bd9Sstevel@tonic-gate typedef UINT32                          ACPI_MUTEX_HANDLE;
125db2bae30SDana Myers #define ACPI_GLOBAL_LOCK                (ACPI_SEMAPHORE) (-1)
1267c478bd9Sstevel@tonic-gate 
1277c478bd9Sstevel@tonic-gate /* Total number of aml opcodes defined */
1287c478bd9Sstevel@tonic-gate 
1297c478bd9Sstevel@tonic-gate #define AML_NUM_OPCODES                 0x7F
1307c478bd9Sstevel@tonic-gate 
1317c478bd9Sstevel@tonic-gate 
132450d6964Smyers /* Forward declarations */
133450d6964Smyers 
134450d6964Smyers struct acpi_walk_state;
135450d6964Smyers struct acpi_obj_mutex;
136450d6964Smyers union acpi_parse_object;
137450d6964Smyers 
138450d6964Smyers 
1397c478bd9Sstevel@tonic-gate /*****************************************************************************
1407c478bd9Sstevel@tonic-gate  *
1417c478bd9Sstevel@tonic-gate  * Mutex typedefs and structs
1427c478bd9Sstevel@tonic-gate  *
1437c478bd9Sstevel@tonic-gate  ****************************************************************************/
1447c478bd9Sstevel@tonic-gate 
1457c478bd9Sstevel@tonic-gate 
1467c478bd9Sstevel@tonic-gate /*
1477c478bd9Sstevel@tonic-gate  * Predefined handles for the mutex objects used within the subsystem
1487c478bd9Sstevel@tonic-gate  * All mutex objects are automatically created by AcpiUtMutexInitialize.
1497c478bd9Sstevel@tonic-gate  *
15027f7c583Smyers  * The acquire/release ordering protocol is implied via this list. Mutexes
1517c478bd9Sstevel@tonic-gate  * with a lower value must be acquired before mutexes with a higher value.
1527c478bd9Sstevel@tonic-gate  *
15327f7c583Smyers  * NOTE: any changes here must be reflected in the AcpiGbl_MutexNames
15427f7c583Smyers  * table below also!
1557c478bd9Sstevel@tonic-gate  */
15627f7c583Smyers #define ACPI_MTX_INTERPRETER            0   /* AML Interpreter, main lock */
157db2bae30SDana Myers #define ACPI_MTX_NAMESPACE              1   /* ACPI Namespace */
158db2bae30SDana Myers #define ACPI_MTX_TABLES                 2   /* Data for ACPI tables */
15927f7c583Smyers #define ACPI_MTX_EVENTS                 3   /* Data for ACPI events */
16027f7c583Smyers #define ACPI_MTX_CACHES                 4   /* Internal caches, general purposes */
16127f7c583Smyers #define ACPI_MTX_MEMORY                 5   /* Debug memory tracking lists */
16227f7c583Smyers #define ACPI_MTX_DEBUG_CMD_COMPLETE     6   /* AML debugger */
16327f7c583Smyers #define ACPI_MTX_DEBUG_CMD_READY        7   /* AML debugger */
16427f7c583Smyers 
16527f7c583Smyers #define ACPI_MAX_MUTEX                  7
16627f7c583Smyers #define ACPI_NUM_MUTEX                  ACPI_MAX_MUTEX+1
1677c478bd9Sstevel@tonic-gate 
1687c478bd9Sstevel@tonic-gate #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
1697c478bd9Sstevel@tonic-gate #ifdef DEFINE_ACPI_GLOBALS
1707c478bd9Sstevel@tonic-gate 
17127f7c583Smyers /* Debug names for the mutexes above */
1727c478bd9Sstevel@tonic-gate 
17327f7c583Smyers static char                 *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] =
1747c478bd9Sstevel@tonic-gate {
1757c478bd9Sstevel@tonic-gate     "ACPI_MTX_Interpreter",
1767c478bd9Sstevel@tonic-gate     "ACPI_MTX_Namespace",
177db2bae30SDana Myers     "ACPI_MTX_Tables",
1787c478bd9Sstevel@tonic-gate     "ACPI_MTX_Events",
1797c478bd9Sstevel@tonic-gate     "ACPI_MTX_Caches",
1807c478bd9Sstevel@tonic-gate     "ACPI_MTX_Memory",
18127f7c583Smyers     "ACPI_MTX_CommandComplete",
18227f7c583Smyers     "ACPI_MTX_CommandReady"
1837c478bd9Sstevel@tonic-gate };
1847c478bd9Sstevel@tonic-gate 
1857c478bd9Sstevel@tonic-gate #endif
1867c478bd9Sstevel@tonic-gate #endif
1877c478bd9Sstevel@tonic-gate 
188aa2aa9a6SDana Myers /* Lock structure for reader/writer interfaces */
189aa2aa9a6SDana Myers 
190aa2aa9a6SDana Myers typedef struct acpi_rw_lock
191aa2aa9a6SDana Myers {
192aa2aa9a6SDana Myers     ACPI_MUTEX              WriterMutex;
193aa2aa9a6SDana Myers     ACPI_MUTEX              ReaderMutex;
194aa2aa9a6SDana Myers     UINT32                  NumReaders;
195aa2aa9a6SDana Myers 
196aa2aa9a6SDana Myers } ACPI_RW_LOCK;
197aa2aa9a6SDana Myers 
1987c478bd9Sstevel@tonic-gate 
19927f7c583Smyers /*
20027f7c583Smyers  * Predefined handles for spinlocks used within the subsystem.
20127f7c583Smyers  * These spinlocks are created by AcpiUtMutexInitialize
20227f7c583Smyers  */
20327f7c583Smyers #define ACPI_LOCK_GPES                  0
20427f7c583Smyers #define ACPI_LOCK_HARDWARE              1
20527f7c583Smyers 
20627f7c583Smyers #define ACPI_MAX_LOCK                   1
20727f7c583Smyers #define ACPI_NUM_LOCK                   ACPI_MAX_LOCK+1
20827f7c583Smyers 
20927f7c583Smyers 
210450d6964Smyers /* This Thread ID means that the mutex is not in use (unlocked) */
211450d6964Smyers 
212aa2aa9a6SDana Myers #define ACPI_MUTEX_NOT_ACQUIRED         (ACPI_THREAD_ID) -1
213450d6964Smyers 
2147c478bd9Sstevel@tonic-gate /* Table for the global mutexes */
2157c478bd9Sstevel@tonic-gate 
2167c478bd9Sstevel@tonic-gate typedef struct acpi_mutex_info
2177c478bd9Sstevel@tonic-gate {
21827f7c583Smyers     ACPI_MUTEX                      Mutex;
21927f7c583Smyers     UINT32                          UseCount;
22027f7c583Smyers     ACPI_THREAD_ID                  ThreadId;
2217c478bd9Sstevel@tonic-gate 
2227c478bd9Sstevel@tonic-gate } ACPI_MUTEX_INFO;
2237c478bd9Sstevel@tonic-gate 
2247c478bd9Sstevel@tonic-gate 
2257c478bd9Sstevel@tonic-gate /* Lock flag parameter for various interfaces */
2267c478bd9Sstevel@tonic-gate 
2277c478bd9Sstevel@tonic-gate #define ACPI_MTX_DO_NOT_LOCK            0
2287c478bd9Sstevel@tonic-gate #define ACPI_MTX_LOCK                   1
2297c478bd9Sstevel@tonic-gate 
2307c478bd9Sstevel@tonic-gate 
2317c478bd9Sstevel@tonic-gate /* Field access granularities */
2327c478bd9Sstevel@tonic-gate 
2337c478bd9Sstevel@tonic-gate #define ACPI_FIELD_BYTE_GRANULARITY     1
2347c478bd9Sstevel@tonic-gate #define ACPI_FIELD_WORD_GRANULARITY     2
2357c478bd9Sstevel@tonic-gate #define ACPI_FIELD_DWORD_GRANULARITY    4
2367c478bd9Sstevel@tonic-gate #define ACPI_FIELD_QWORD_GRANULARITY    8
2377c478bd9Sstevel@tonic-gate 
2387c478bd9Sstevel@tonic-gate 
23927f7c583Smyers #define ACPI_ENTRY_NOT_FOUND            NULL
24027f7c583Smyers 
24127f7c583Smyers 
2427c478bd9Sstevel@tonic-gate /*****************************************************************************
2437c478bd9Sstevel@tonic-gate  *
2447c478bd9Sstevel@tonic-gate  * Namespace typedefs and structs
2457c478bd9Sstevel@tonic-gate  *
2467c478bd9Sstevel@tonic-gate  ****************************************************************************/
2477c478bd9Sstevel@tonic-gate 
2487c478bd9Sstevel@tonic-gate /* Operational modes of the AML interpreter/scanner */
2497c478bd9Sstevel@tonic-gate 
2507c478bd9Sstevel@tonic-gate typedef enum
2517c478bd9Sstevel@tonic-gate {
25227f7c583Smyers     ACPI_IMODE_LOAD_PASS1           = 0x01,
25327f7c583Smyers     ACPI_IMODE_LOAD_PASS2           = 0x02,
254db2bae30SDana Myers     ACPI_IMODE_EXECUTE              = 0x03
2557c478bd9Sstevel@tonic-gate 
2567c478bd9Sstevel@tonic-gate } ACPI_INTERPRETER_MODE;
2577c478bd9Sstevel@tonic-gate 
25827f7c583Smyers 
25927f7c583Smyers /*
26027f7c583Smyers  * The Namespace Node describes a named object that appears in the AML.
26127f7c583Smyers  * DescriptorType is used to differentiate between internal descriptors.
26227f7c583Smyers  *
26327f7c583Smyers  * The node is optimized for both 32-bit and 64-bit platforms:
26427f7c583Smyers  * 20 bytes for the 32-bit case, 32 bytes for the 64-bit case.
26527f7c583Smyers  *
26627f7c583Smyers  * Note: The DescriptorType and Type fields must appear in the identical
26727f7c583Smyers  * position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT
26827f7c583Smyers  * structures.
26927f7c583Smyers  */
2707c478bd9Sstevel@tonic-gate typedef struct acpi_namespace_node
2717c478bd9Sstevel@tonic-gate {
27227f7c583Smyers     union acpi_operand_object       *Object;        /* Interpreter object */
27327f7c583Smyers     UINT8                           DescriptorType; /* Differentiate object descriptor types */
27427f7c583Smyers     UINT8                           Type;           /* ACPI Type associated with this name */
27527f7c583Smyers     UINT8                           Flags;          /* Miscellaneous flags */
27627f7c583Smyers     ACPI_OWNER_ID                   OwnerId;        /* Node creator */
27727f7c583Smyers     ACPI_NAME_UNION                 Name;           /* ACPI Name, always 4 chars per ACPI spec */
27827f7c583Smyers     struct acpi_namespace_node      *Child;         /* First child */
27927f7c583Smyers     struct acpi_namespace_node      *Peer;          /* Peer. Parent if ANOBJ_END_OF_PEER_LIST set */
28027f7c583Smyers 
28127f7c583Smyers     /*
28227f7c583Smyers      * The following fields are used by the ASL compiler and disassembler only
28327f7c583Smyers      */
28427f7c583Smyers #ifdef ACPI_LARGE_NAMESPACE_NODE
28527f7c583Smyers     union acpi_parse_object         *Op;
28627f7c583Smyers     UINT32                          Value;
28727f7c583Smyers     UINT32                          Length;
288450d6964Smyers #endif
289450d6964Smyers 
2907c478bd9Sstevel@tonic-gate } ACPI_NAMESPACE_NODE;
2917c478bd9Sstevel@tonic-gate 
2927c478bd9Sstevel@tonic-gate 
29327f7c583Smyers /* Namespace Node flags */
2947c478bd9Sstevel@tonic-gate 
29527f7c583Smyers #define ANOBJ_END_OF_PEER_LIST          0x01    /* End-of-list, Peer field points to parent */
296db2bae30SDana Myers #define ANOBJ_TEMPORARY                 0x02    /* Node is create by a method and is temporary */
29727f7c583Smyers #define ANOBJ_METHOD_ARG                0x04    /* Node is a method argument */
29827f7c583Smyers #define ANOBJ_METHOD_LOCAL              0x08    /* Node is a method local */
29927f7c583Smyers #define ANOBJ_SUBTREE_HAS_INI           0x10    /* Used to optimize device initialization */
300aa2aa9a6SDana Myers #define ANOBJ_EVALUATED                 0x20    /* Set on first evaluation of node */
301aa2aa9a6SDana Myers #define ANOBJ_ALLOCATED_BUFFER          0x40    /* Method AML buffer is dynamic (InstallMethod) */
3027c478bd9Sstevel@tonic-gate 
30327f7c583Smyers #define ANOBJ_IS_EXTERNAL               0x08    /* iASL only: This object created via External() */
30427f7c583Smyers #define ANOBJ_METHOD_NO_RETVAL          0x10    /* iASL only: Method has no return value */
30527f7c583Smyers #define ANOBJ_METHOD_SOME_NO_RETVAL     0x20    /* iASL only: Method has at least one return value */
30627f7c583Smyers #define ANOBJ_IS_BIT_OFFSET             0x40    /* iASL only: Reference is a bit offset */
30727f7c583Smyers #define ANOBJ_IS_REFERENCED             0x80    /* iASL only: Object was referenced */
3087c478bd9Sstevel@tonic-gate 
309db2bae30SDana Myers 
310db2bae30SDana Myers /* One internal RSDT for table management */
311db2bae30SDana Myers 
312db2bae30SDana Myers typedef struct acpi_internal_rsdt
3137c478bd9Sstevel@tonic-gate {
314db2bae30SDana Myers     ACPI_TABLE_DESC                 *Tables;
31527f7c583Smyers     UINT32                          Count;
316db2bae30SDana Myers     UINT32                          Size;
317db2bae30SDana Myers     UINT8                           Flags;
318db2bae30SDana Myers 
319db2bae30SDana Myers } ACPI_INTERNAL_RSDT;
320db2bae30SDana Myers 
321db2bae30SDana Myers /* Flags for above */
322db2bae30SDana Myers 
323db2bae30SDana Myers #define ACPI_ROOT_ORIGIN_UNKNOWN        (0)     /* ~ORIGIN_ALLOCATED */
324db2bae30SDana Myers #define ACPI_ROOT_ORIGIN_ALLOCATED      (1)
325db2bae30SDana Myers #define ACPI_ROOT_ALLOW_RESIZE          (2)
3267c478bd9Sstevel@tonic-gate 
327db2bae30SDana Myers 
328db2bae30SDana Myers /* Predefined (fixed) table indexes */
329db2bae30SDana Myers 
330db2bae30SDana Myers #define ACPI_TABLE_INDEX_DSDT           (0)
331db2bae30SDana Myers #define ACPI_TABLE_INDEX_FACS           (1)
3327c478bd9Sstevel@tonic-gate 
3337c478bd9Sstevel@tonic-gate 
3347c478bd9Sstevel@tonic-gate typedef struct acpi_find_context
3357c478bd9Sstevel@tonic-gate {
33627f7c583Smyers     char                            *SearchFor;
33727f7c583Smyers     ACPI_HANDLE                     *List;
33827f7c583Smyers     UINT32                          *Count;
3397c478bd9Sstevel@tonic-gate 
3407c478bd9Sstevel@tonic-gate } ACPI_FIND_CONTEXT;
3417c478bd9Sstevel@tonic-gate 
3427c478bd9Sstevel@tonic-gate 
3437c478bd9Sstevel@tonic-gate typedef struct acpi_ns_search_data
3447c478bd9Sstevel@tonic-gate {
34527f7c583Smyers     ACPI_NAMESPACE_NODE             *Node;
3467c478bd9Sstevel@tonic-gate 
3477c478bd9Sstevel@tonic-gate } ACPI_NS_SEARCH_DATA;
3487c478bd9Sstevel@tonic-gate 
3497c478bd9Sstevel@tonic-gate 
3507c478bd9Sstevel@tonic-gate /* Object types used during package copies */
3517c478bd9Sstevel@tonic-gate 
3527c478bd9Sstevel@tonic-gate #define ACPI_COPY_TYPE_SIMPLE           0
3537c478bd9Sstevel@tonic-gate #define ACPI_COPY_TYPE_PACKAGE          1
3547c478bd9Sstevel@tonic-gate 
35527f7c583Smyers 
3567c478bd9Sstevel@tonic-gate /* Info structure used to convert external<->internal namestrings */
3577c478bd9Sstevel@tonic-gate 
3587c478bd9Sstevel@tonic-gate typedef struct acpi_namestring_info
3597c478bd9Sstevel@tonic-gate {
360db2bae30SDana Myers     const char                      *ExternalName;
361db2bae30SDana Myers     const char                      *NextExternalChar;
36227f7c583Smyers     char                            *InternalName;
36327f7c583Smyers     UINT32                          Length;
36427f7c583Smyers     UINT32                          NumSegments;
36527f7c583Smyers     UINT32                          NumCarats;
36627f7c583Smyers     BOOLEAN                         FullyQualified;
3677c478bd9Sstevel@tonic-gate 
3687c478bd9Sstevel@tonic-gate } ACPI_NAMESTRING_INFO;
3697c478bd9Sstevel@tonic-gate 
3707c478bd9Sstevel@tonic-gate 
3717c478bd9Sstevel@tonic-gate /* Field creation info */
3727c478bd9Sstevel@tonic-gate 
3737c478bd9Sstevel@tonic-gate typedef struct acpi_create_field_info
3747c478bd9Sstevel@tonic-gate {
37527f7c583Smyers     ACPI_NAMESPACE_NODE             *RegionNode;
37627f7c583Smyers     ACPI_NAMESPACE_NODE             *FieldNode;
37727f7c583Smyers     ACPI_NAMESPACE_NODE             *RegisterNode;
37827f7c583Smyers     ACPI_NAMESPACE_NODE             *DataRegisterNode;
37927f7c583Smyers     UINT32                          BankValue;
38027f7c583Smyers     UINT32                          FieldBitPosition;
38127f7c583Smyers     UINT32                          FieldBitLength;
38227f7c583Smyers     UINT8                           FieldFlags;
38327f7c583Smyers     UINT8                           Attribute;
38427f7c583Smyers     UINT8                           FieldType;
3857c478bd9Sstevel@tonic-gate 
3867c478bd9Sstevel@tonic-gate } ACPI_CREATE_FIELD_INFO;
3877c478bd9Sstevel@tonic-gate 
3887c478bd9Sstevel@tonic-gate 
38927f7c583Smyers typedef
39027f7c583Smyers ACPI_STATUS (*ACPI_INTERNAL_METHOD) (
39127f7c583Smyers     struct acpi_walk_state          *WalkState);
39227f7c583Smyers 
39327f7c583Smyers 
39430082d0cSmyers /*
39530082d0cSmyers  * Bitmapped ACPI types.  Used internally only
39630082d0cSmyers  */
39730082d0cSmyers #define ACPI_BTYPE_ANY                  0x00000000
39830082d0cSmyers #define ACPI_BTYPE_INTEGER              0x00000001
39930082d0cSmyers #define ACPI_BTYPE_STRING               0x00000002
40030082d0cSmyers #define ACPI_BTYPE_BUFFER               0x00000004
40130082d0cSmyers #define ACPI_BTYPE_PACKAGE              0x00000008
40230082d0cSmyers #define ACPI_BTYPE_FIELD_UNIT           0x00000010
40330082d0cSmyers #define ACPI_BTYPE_DEVICE               0x00000020
40430082d0cSmyers #define ACPI_BTYPE_EVENT                0x00000040
40530082d0cSmyers #define ACPI_BTYPE_METHOD               0x00000080
40630082d0cSmyers #define ACPI_BTYPE_MUTEX                0x00000100
40730082d0cSmyers #define ACPI_BTYPE_REGION               0x00000200
40830082d0cSmyers #define ACPI_BTYPE_POWER                0x00000400
40930082d0cSmyers #define ACPI_BTYPE_PROCESSOR            0x00000800
41030082d0cSmyers #define ACPI_BTYPE_THERMAL              0x00001000
41130082d0cSmyers #define ACPI_BTYPE_BUFFER_FIELD         0x00002000
41230082d0cSmyers #define ACPI_BTYPE_DDB_HANDLE           0x00004000
41330082d0cSmyers #define ACPI_BTYPE_DEBUG_OBJECT         0x00008000
41430082d0cSmyers #define ACPI_BTYPE_REFERENCE            0x00010000
41530082d0cSmyers #define ACPI_BTYPE_RESOURCE             0x00020000
41630082d0cSmyers 
41730082d0cSmyers #define ACPI_BTYPE_COMPUTE_DATA         (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER)
41830082d0cSmyers 
41930082d0cSmyers #define ACPI_BTYPE_DATA                 (ACPI_BTYPE_COMPUTE_DATA  | ACPI_BTYPE_PACKAGE)
42030082d0cSmyers #define ACPI_BTYPE_DATA_REFERENCE       (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE)
42130082d0cSmyers #define ACPI_BTYPE_DEVICE_OBJECTS       (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR)
42230082d0cSmyers #define ACPI_BTYPE_OBJECTS_AND_REFS     0x0001FFFF  /* ARG or LOCAL */
42330082d0cSmyers #define ACPI_BTYPE_ALL_OBJECTS          0x0000FFFF
42430082d0cSmyers 
42530082d0cSmyers 
426aa2aa9a6SDana Myers /*
427aa2aa9a6SDana Myers  * Information structure for ACPI predefined names.
428aa2aa9a6SDana Myers  * Each entry in the table contains the following items:
429aa2aa9a6SDana Myers  *
430aa2aa9a6SDana Myers  * Name                 - The ACPI reserved name
431aa2aa9a6SDana Myers  * ParamCount           - Number of arguments to the method
432aa2aa9a6SDana Myers  * ExpectedReturnBtypes - Allowed type(s) for the return value
433aa2aa9a6SDana Myers  */
434aa2aa9a6SDana Myers typedef struct acpi_name_info
435aa2aa9a6SDana Myers {
436aa2aa9a6SDana Myers     char                        Name[ACPI_NAME_SIZE];
437aa2aa9a6SDana Myers     UINT8                       ParamCount;
438aa2aa9a6SDana Myers     UINT8                       ExpectedBtypes;
439aa2aa9a6SDana Myers 
440aa2aa9a6SDana Myers } ACPI_NAME_INFO;
441aa2aa9a6SDana Myers 
442aa2aa9a6SDana Myers /*
443aa2aa9a6SDana Myers  * Secondary information structures for ACPI predefined objects that return
444aa2aa9a6SDana Myers  * package objects. This structure appears as the next entry in the table
445aa2aa9a6SDana Myers  * after the NAME_INFO structure above.
446aa2aa9a6SDana Myers  *
447aa2aa9a6SDana Myers  * The reason for this is to minimize the size of the predefined name table.
448aa2aa9a6SDana Myers  */
449aa2aa9a6SDana Myers 
450aa2aa9a6SDana Myers /*
451aa2aa9a6SDana Myers  * Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2,
452aa2aa9a6SDana Myers  * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT
453aa2aa9a6SDana Myers  */
454aa2aa9a6SDana Myers typedef struct acpi_package_info
455aa2aa9a6SDana Myers {
456aa2aa9a6SDana Myers     UINT8                       Type;
457aa2aa9a6SDana Myers     UINT8                       ObjectType1;
458aa2aa9a6SDana Myers     UINT8                       Count1;
459aa2aa9a6SDana Myers     UINT8                       ObjectType2;
460aa2aa9a6SDana Myers     UINT8                       Count2;
461aa2aa9a6SDana Myers     UINT8                       Reserved;
462aa2aa9a6SDana Myers 
463aa2aa9a6SDana Myers } ACPI_PACKAGE_INFO;
464aa2aa9a6SDana Myers 
465aa2aa9a6SDana Myers /* Used for ACPI_PTYPE2_FIXED */
466aa2aa9a6SDana Myers 
467aa2aa9a6SDana Myers typedef struct acpi_package_info2
468aa2aa9a6SDana Myers {
469aa2aa9a6SDana Myers     UINT8                       Type;
470aa2aa9a6SDana Myers     UINT8                       Count;
471aa2aa9a6SDana Myers     UINT8                       ObjectType[4];
472aa2aa9a6SDana Myers 
473aa2aa9a6SDana Myers } ACPI_PACKAGE_INFO2;
474aa2aa9a6SDana Myers 
475aa2aa9a6SDana Myers /* Used for ACPI_PTYPE1_OPTION */
476aa2aa9a6SDana Myers 
477aa2aa9a6SDana Myers typedef struct acpi_package_info3
478aa2aa9a6SDana Myers {
479aa2aa9a6SDana Myers     UINT8                       Type;
480aa2aa9a6SDana Myers     UINT8                       Count;
481aa2aa9a6SDana Myers     UINT8                       ObjectType[2];
482aa2aa9a6SDana Myers     UINT8                       TailObjectType;
483aa2aa9a6SDana Myers     UINT8                       Reserved;
484aa2aa9a6SDana Myers 
485aa2aa9a6SDana Myers } ACPI_PACKAGE_INFO3;
486aa2aa9a6SDana Myers 
487aa2aa9a6SDana Myers typedef union acpi_predefined_info
488aa2aa9a6SDana Myers {
489aa2aa9a6SDana Myers     ACPI_NAME_INFO              Info;
490aa2aa9a6SDana Myers     ACPI_PACKAGE_INFO           RetInfo;
491aa2aa9a6SDana Myers     ACPI_PACKAGE_INFO2          RetInfo2;
492aa2aa9a6SDana Myers     ACPI_PACKAGE_INFO3          RetInfo3;
493aa2aa9a6SDana Myers 
494aa2aa9a6SDana Myers } ACPI_PREDEFINED_INFO;
495aa2aa9a6SDana Myers 
496*57190917SDana Myers 
497*57190917SDana Myers /* Data block used during object validation */
498*57190917SDana Myers 
499*57190917SDana Myers typedef struct acpi_predefined_data
500*57190917SDana Myers {
501*57190917SDana Myers     char                        *Pathname;
502*57190917SDana Myers     const ACPI_PREDEFINED_INFO  *Predefined;
503*57190917SDana Myers     UINT32                      Flags;
504*57190917SDana Myers     UINT8                       NodeFlags;
505*57190917SDana Myers 
506*57190917SDana Myers } ACPI_PREDEFINED_DATA;
507*57190917SDana Myers 
508*57190917SDana Myers /* Defines for Flags field above */
509*57190917SDana Myers 
510*57190917SDana Myers #define ACPI_OBJECT_REPAIRED    1
511*57190917SDana Myers 
512*57190917SDana Myers 
513aa2aa9a6SDana Myers /*
514aa2aa9a6SDana Myers  * Bitmapped return value types
515aa2aa9a6SDana Myers  * Note: the actual data types must be contiguous, a loop in nspredef.c
516aa2aa9a6SDana Myers  * depends on this.
517aa2aa9a6SDana Myers  */
518aa2aa9a6SDana Myers #define ACPI_RTYPE_ANY                  0x00
519aa2aa9a6SDana Myers #define ACPI_RTYPE_NONE                 0x01
520aa2aa9a6SDana Myers #define ACPI_RTYPE_INTEGER              0x02
521aa2aa9a6SDana Myers #define ACPI_RTYPE_STRING               0x04
522aa2aa9a6SDana Myers #define ACPI_RTYPE_BUFFER               0x08
523aa2aa9a6SDana Myers #define ACPI_RTYPE_PACKAGE              0x10
524aa2aa9a6SDana Myers #define ACPI_RTYPE_REFERENCE            0x20
525aa2aa9a6SDana Myers #define ACPI_RTYPE_ALL                  0x3F
526aa2aa9a6SDana Myers 
527aa2aa9a6SDana Myers #define ACPI_NUM_RTYPES                 5   /* Number of actual object types */
528aa2aa9a6SDana Myers 
529aa2aa9a6SDana Myers 
5307c478bd9Sstevel@tonic-gate /*****************************************************************************
5317c478bd9Sstevel@tonic-gate  *
5327c478bd9Sstevel@tonic-gate  * Event typedefs and structs
5337c478bd9Sstevel@tonic-gate  *
5347c478bd9Sstevel@tonic-gate  ****************************************************************************/
5357c478bd9Sstevel@tonic-gate 
5367c478bd9Sstevel@tonic-gate /* Dispatch info for each GPE -- either a method or handler, cannot be both */
5377c478bd9Sstevel@tonic-gate 
5387c478bd9Sstevel@tonic-gate typedef struct acpi_handler_info
5397c478bd9Sstevel@tonic-gate {
5407c478bd9Sstevel@tonic-gate     ACPI_EVENT_HANDLER              Address;        /* Address of handler, if any */
5417c478bd9Sstevel@tonic-gate     void                            *Context;       /* Context to be passed to handler */
5427c478bd9Sstevel@tonic-gate     ACPI_NAMESPACE_NODE             *MethodNode;    /* Method node for this GPE level (saved) */
5437c478bd9Sstevel@tonic-gate 
5447c478bd9Sstevel@tonic-gate } ACPI_HANDLER_INFO;
5457c478bd9Sstevel@tonic-gate 
5467c478bd9Sstevel@tonic-gate typedef union acpi_gpe_dispatch_info
5477c478bd9Sstevel@tonic-gate {
5487c478bd9Sstevel@tonic-gate     ACPI_NAMESPACE_NODE             *MethodNode;    /* Method node for this GPE level */
5497c478bd9Sstevel@tonic-gate     struct acpi_handler_info        *Handler;
5507c478bd9Sstevel@tonic-gate 
5517c478bd9Sstevel@tonic-gate } ACPI_GPE_DISPATCH_INFO;
5527c478bd9Sstevel@tonic-gate 
5537c478bd9Sstevel@tonic-gate /*
5547c478bd9Sstevel@tonic-gate  * Information about a GPE, one per each GPE in an array.
5557c478bd9Sstevel@tonic-gate  * NOTE: Important to keep this struct as small as possible.
5567c478bd9Sstevel@tonic-gate  */
5577c478bd9Sstevel@tonic-gate typedef struct acpi_gpe_event_info
5587c478bd9Sstevel@tonic-gate {
5597c478bd9Sstevel@tonic-gate     union acpi_gpe_dispatch_info    Dispatch;       /* Either Method or Handler */
5607c478bd9Sstevel@tonic-gate     struct acpi_gpe_register_info   *RegisterInfo;  /* Backpointer to register info */
5617c478bd9Sstevel@tonic-gate     UINT8                           Flags;          /* Misc info about this GPE */
562db2bae30SDana Myers     UINT8                           GpeNumber;      /* This GPE */
5637c478bd9Sstevel@tonic-gate 
5647c478bd9Sstevel@tonic-gate } ACPI_GPE_EVENT_INFO;
5657c478bd9Sstevel@tonic-gate 
5667c478bd9Sstevel@tonic-gate /* Information about a GPE register pair, one per each status/enable pair in an array */
5677c478bd9Sstevel@tonic-gate 
5687c478bd9Sstevel@tonic-gate typedef struct acpi_gpe_register_info
5697c478bd9Sstevel@tonic-gate {
5707c478bd9Sstevel@tonic-gate     ACPI_GENERIC_ADDRESS            StatusAddress;  /* Address of status reg */
5717c478bd9Sstevel@tonic-gate     ACPI_GENERIC_ADDRESS            EnableAddress;  /* Address of enable reg */
5727c478bd9Sstevel@tonic-gate     UINT8                           EnableForWake;  /* GPEs to keep enabled when sleeping */
5737c478bd9Sstevel@tonic-gate     UINT8                           EnableForRun;   /* GPEs to keep enabled when running */
5747c478bd9Sstevel@tonic-gate     UINT8                           BaseGpeNumber;  /* Base GPE number for this register */
5757c478bd9Sstevel@tonic-gate 
5767c478bd9Sstevel@tonic-gate } ACPI_GPE_REGISTER_INFO;
5777c478bd9Sstevel@tonic-gate 
5787c478bd9Sstevel@tonic-gate /*
5797c478bd9Sstevel@tonic-gate  * Information about a GPE register block, one per each installed block --
5807c478bd9Sstevel@tonic-gate  * GPE0, GPE1, and one per each installed GPE Block Device.
5817c478bd9Sstevel@tonic-gate  */
5827c478bd9Sstevel@tonic-gate typedef struct acpi_gpe_block_info
5837c478bd9Sstevel@tonic-gate {
5847c478bd9Sstevel@tonic-gate     ACPI_NAMESPACE_NODE             *Node;
5857c478bd9Sstevel@tonic-gate     struct acpi_gpe_block_info      *Previous;
5867c478bd9Sstevel@tonic-gate     struct acpi_gpe_block_info      *Next;
5877c478bd9Sstevel@tonic-gate     struct acpi_gpe_xrupt_info      *XruptBlock;    /* Backpointer to interrupt block */
5887c478bd9Sstevel@tonic-gate     ACPI_GPE_REGISTER_INFO          *RegisterInfo;  /* One per GPE register pair */
5897c478bd9Sstevel@tonic-gate     ACPI_GPE_EVENT_INFO             *EventInfo;     /* One for each GPE */
5907c478bd9Sstevel@tonic-gate     ACPI_GENERIC_ADDRESS            BlockAddress;   /* Base address of the block */
5917c478bd9Sstevel@tonic-gate     UINT32                          RegisterCount;  /* Number of register pairs in block */
5927c478bd9Sstevel@tonic-gate     UINT8                           BlockBaseNumber;/* Base GPE number for this block */
5937c478bd9Sstevel@tonic-gate 
5947c478bd9Sstevel@tonic-gate } ACPI_GPE_BLOCK_INFO;
5957c478bd9Sstevel@tonic-gate 
5967c478bd9Sstevel@tonic-gate /* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */
5977c478bd9Sstevel@tonic-gate 
5987c478bd9Sstevel@tonic-gate typedef struct acpi_gpe_xrupt_info
5997c478bd9Sstevel@tonic-gate {
6007c478bd9Sstevel@tonic-gate     struct acpi_gpe_xrupt_info      *Previous;
6017c478bd9Sstevel@tonic-gate     struct acpi_gpe_xrupt_info      *Next;
6027c478bd9Sstevel@tonic-gate     ACPI_GPE_BLOCK_INFO             *GpeBlockListHead;  /* List of GPE blocks for this xrupt */
603450d6964Smyers     UINT32                          InterruptNumber;    /* System interrupt number */
6047c478bd9Sstevel@tonic-gate 
6057c478bd9Sstevel@tonic-gate } ACPI_GPE_XRUPT_INFO;
6067c478bd9Sstevel@tonic-gate 
6077c478bd9Sstevel@tonic-gate typedef struct acpi_gpe_walk_info
6087c478bd9Sstevel@tonic-gate {
6097c478bd9Sstevel@tonic-gate     ACPI_NAMESPACE_NODE             *GpeDevice;
6107c478bd9Sstevel@tonic-gate     ACPI_GPE_BLOCK_INFO             *GpeBlock;
6117c478bd9Sstevel@tonic-gate 
6127c478bd9Sstevel@tonic-gate } ACPI_GPE_WALK_INFO;
6137c478bd9Sstevel@tonic-gate 
614aa2aa9a6SDana Myers typedef struct acpi_gpe_device_info
615aa2aa9a6SDana Myers {
616aa2aa9a6SDana Myers     UINT32                          Index;
617aa2aa9a6SDana Myers     UINT32                          NextBlockBaseIndex;
618aa2aa9a6SDana Myers     ACPI_STATUS                     Status;
619aa2aa9a6SDana Myers     ACPI_NAMESPACE_NODE             *GpeDevice;
620aa2aa9a6SDana Myers 
621aa2aa9a6SDana Myers } ACPI_GPE_DEVICE_INFO;
6227c478bd9Sstevel@tonic-gate 
6237c478bd9Sstevel@tonic-gate typedef ACPI_STATUS (*ACPI_GPE_CALLBACK) (
62427f7c583Smyers     ACPI_GPE_XRUPT_INFO             *GpeXruptInfo,
625aa2aa9a6SDana Myers     ACPI_GPE_BLOCK_INFO             *GpeBlock,
626aa2aa9a6SDana Myers     void                            *Context);
6277c478bd9Sstevel@tonic-gate 
6287c478bd9Sstevel@tonic-gate 
6297c478bd9Sstevel@tonic-gate /* Information about each particular fixed event */
6307c478bd9Sstevel@tonic-gate 
6317c478bd9Sstevel@tonic-gate typedef struct acpi_fixed_event_handler
6327c478bd9Sstevel@tonic-gate {
63327f7c583Smyers     ACPI_EVENT_HANDLER              Handler;        /* Address of handler. */
63427f7c583Smyers     void                            *Context;       /* Context to be passed to handler */
6357c478bd9Sstevel@tonic-gate 
6367c478bd9Sstevel@tonic-gate } ACPI_FIXED_EVENT_HANDLER;
6377c478bd9Sstevel@tonic-gate 
6387c478bd9Sstevel@tonic-gate typedef struct acpi_fixed_event_info
6397c478bd9Sstevel@tonic-gate {
64027f7c583Smyers     UINT8                           StatusRegisterId;
64127f7c583Smyers     UINT8                           EnableRegisterId;
64227f7c583Smyers     UINT16                          StatusBitMask;
64327f7c583Smyers     UINT16                          EnableBitMask;
6447c478bd9Sstevel@tonic-gate 
6457c478bd9Sstevel@tonic-gate } ACPI_FIXED_EVENT_INFO;
6467c478bd9Sstevel@tonic-gate 
6477c478bd9Sstevel@tonic-gate /* Information used during field processing */
6487c478bd9Sstevel@tonic-gate 
6497c478bd9Sstevel@tonic-gate typedef struct acpi_field_info
6507c478bd9Sstevel@tonic-gate {
65127f7c583Smyers     UINT8                           SkipField;
65227f7c583Smyers     UINT8                           FieldFlag;
65327f7c583Smyers     UINT32                          PkgLength;
6547c478bd9Sstevel@tonic-gate 
6557c478bd9Sstevel@tonic-gate } ACPI_FIELD_INFO;
6567c478bd9Sstevel@tonic-gate 
6577c478bd9Sstevel@tonic-gate 
6587c478bd9Sstevel@tonic-gate /*****************************************************************************
6597c478bd9Sstevel@tonic-gate  *
6607c478bd9Sstevel@tonic-gate  * Generic "state" object for stacks
6617c478bd9Sstevel@tonic-gate  *
6627c478bd9Sstevel@tonic-gate  ****************************************************************************/
6637c478bd9Sstevel@tonic-gate 
6647c478bd9Sstevel@tonic-gate #define ACPI_CONTROL_NORMAL                  0xC0
6657c478bd9Sstevel@tonic-gate #define ACPI_CONTROL_CONDITIONAL_EXECUTING   0xC1
6667c478bd9Sstevel@tonic-gate #define ACPI_CONTROL_PREDICATE_EXECUTING     0xC2
6677c478bd9Sstevel@tonic-gate #define ACPI_CONTROL_PREDICATE_FALSE         0xC3
6687c478bd9Sstevel@tonic-gate #define ACPI_CONTROL_PREDICATE_TRUE          0xC4
6697c478bd9Sstevel@tonic-gate 
6707c478bd9Sstevel@tonic-gate 
67127f7c583Smyers #define ACPI_STATE_COMMON \
67227f7c583Smyers     void                            *Next; \
67327f7c583Smyers     UINT8                           DescriptorType; /* To differentiate various internal objs */\
67427f7c583Smyers     UINT8                           Flags; \
67527f7c583Smyers     UINT16                          Value; \
67627f7c583Smyers     UINT16                          State;
67727f7c583Smyers 
67827f7c583Smyers     /* There are 2 bytes available here until the next natural alignment boundary */
6797c478bd9Sstevel@tonic-gate 
6807c478bd9Sstevel@tonic-gate typedef struct acpi_common_state
6817c478bd9Sstevel@tonic-gate {
6827c478bd9Sstevel@tonic-gate     ACPI_STATE_COMMON
6837c478bd9Sstevel@tonic-gate } ACPI_COMMON_STATE;
6847c478bd9Sstevel@tonic-gate 
6857c478bd9Sstevel@tonic-gate 
6867c478bd9Sstevel@tonic-gate /*
6877c478bd9Sstevel@tonic-gate  * Update state - used to traverse complex objects such as packages
6887c478bd9Sstevel@tonic-gate  */
6897c478bd9Sstevel@tonic-gate typedef struct acpi_update_state
6907c478bd9Sstevel@tonic-gate {
6917c478bd9Sstevel@tonic-gate     ACPI_STATE_COMMON
69227f7c583Smyers     union acpi_operand_object       *Object;
6937c478bd9Sstevel@tonic-gate 
6947c478bd9Sstevel@tonic-gate } ACPI_UPDATE_STATE;
6957c478bd9Sstevel@tonic-gate 
6967c478bd9Sstevel@tonic-gate 
6977c478bd9Sstevel@tonic-gate /*
6987c478bd9Sstevel@tonic-gate  * Pkg state - used to traverse nested package structures
6997c478bd9Sstevel@tonic-gate  */
7007c478bd9Sstevel@tonic-gate typedef struct acpi_pkg_state
7017c478bd9Sstevel@tonic-gate {
7027c478bd9Sstevel@tonic-gate     ACPI_STATE_COMMON
70327f7c583Smyers     UINT16                          Index;
70427f7c583Smyers     union acpi_operand_object       *SourceObject;
70527f7c583Smyers     union acpi_operand_object       *DestObject;
70627f7c583Smyers     struct acpi_walk_state          *WalkState;
70727f7c583Smyers     void                            *ThisTargetObj;
70827f7c583Smyers     UINT32                          NumPackages;
7097c478bd9Sstevel@tonic-gate 
7107c478bd9Sstevel@tonic-gate } ACPI_PKG_STATE;
7117c478bd9Sstevel@tonic-gate 
7127c478bd9Sstevel@tonic-gate 
7137c478bd9Sstevel@tonic-gate /*
7147c478bd9Sstevel@tonic-gate  * Control state - one per if/else and while constructs.
7157c478bd9Sstevel@tonic-gate  * Allows nesting of these constructs
7167c478bd9Sstevel@tonic-gate  */
7177c478bd9Sstevel@tonic-gate typedef struct acpi_control_state
7187c478bd9Sstevel@tonic-gate {
7197c478bd9Sstevel@tonic-gate     ACPI_STATE_COMMON
72027f7c583Smyers     UINT16                          Opcode;
72127f7c583Smyers     union acpi_parse_object         *PredicateOp;
72227f7c583Smyers     UINT8                           *AmlPredicateStart;     /* Start of if/while predicate */
72327f7c583Smyers     UINT8                           *PackageEnd;            /* End of if/while block */
724aa2aa9a6SDana Myers     UINT32                          LoopCount;              /* While() loop counter */
7257c478bd9Sstevel@tonic-gate 
7267c478bd9Sstevel@tonic-gate } ACPI_CONTROL_STATE;
7277c478bd9Sstevel@tonic-gate 
7287c478bd9Sstevel@tonic-gate 
7297c478bd9Sstevel@tonic-gate /*
7307c478bd9Sstevel@tonic-gate  * Scope state - current scope during namespace lookups
7317c478bd9Sstevel@tonic-gate  */
7327c478bd9Sstevel@tonic-gate typedef struct acpi_scope_state
7337c478bd9Sstevel@tonic-gate {
7347c478bd9Sstevel@tonic-gate     ACPI_STATE_COMMON
73527f7c583Smyers     ACPI_NAMESPACE_NODE             *Node;
7367c478bd9Sstevel@tonic-gate 
7377c478bd9Sstevel@tonic-gate } ACPI_SCOPE_STATE;
7387c478bd9Sstevel@tonic-gate 
7397c478bd9Sstevel@tonic-gate 
7407c478bd9Sstevel@tonic-gate typedef struct acpi_pscope_state
7417c478bd9Sstevel@tonic-gate {
7427c478bd9Sstevel@tonic-gate     ACPI_STATE_COMMON
74327f7c583Smyers     UINT32                          ArgCount;               /* Number of fixed arguments */
74427f7c583Smyers     union acpi_parse_object         *Op;                    /* Current op being parsed */
74527f7c583Smyers     UINT8                           *ArgEnd;                /* Current argument end */
74627f7c583Smyers     UINT8                           *PkgEnd;                /* Current package end */
74727f7c583Smyers     UINT32                          ArgList;                /* Next argument to parse */
7487c478bd9Sstevel@tonic-gate 
7497c478bd9Sstevel@tonic-gate } ACPI_PSCOPE_STATE;
7507c478bd9Sstevel@tonic-gate 
7517c478bd9Sstevel@tonic-gate 
7527c478bd9Sstevel@tonic-gate /*
7537c478bd9Sstevel@tonic-gate  * Thread state - one per thread across multiple walk states.  Multiple walk
7547c478bd9Sstevel@tonic-gate  * states are created when there are nested control methods executing.
7557c478bd9Sstevel@tonic-gate  */
7567c478bd9Sstevel@tonic-gate typedef struct acpi_thread_state
7577c478bd9Sstevel@tonic-gate {
7587c478bd9Sstevel@tonic-gate     ACPI_STATE_COMMON
75927f7c583Smyers     UINT8                           CurrentSyncLevel;       /* Mutex Sync (nested acquire) level */
76027f7c583Smyers     struct acpi_walk_state          *WalkStateList;         /* Head of list of WalkStates for this thread */
76127f7c583Smyers     union acpi_operand_object       *AcquiredMutexList;     /* List of all currently acquired mutexes */
76227f7c583Smyers     ACPI_THREAD_ID                  ThreadId;               /* Running thread ID */
7637c478bd9Sstevel@tonic-gate 
7647c478bd9Sstevel@tonic-gate } ACPI_THREAD_STATE;
7657c478bd9Sstevel@tonic-gate 
7667c478bd9Sstevel@tonic-gate 
7677c478bd9Sstevel@tonic-gate /*
7687c478bd9Sstevel@tonic-gate  * Result values - used to accumulate the results of nested
7697c478bd9Sstevel@tonic-gate  * AML arguments
7707c478bd9Sstevel@tonic-gate  */
7717c478bd9Sstevel@tonic-gate typedef struct acpi_result_values
7727c478bd9Sstevel@tonic-gate {
7737c478bd9Sstevel@tonic-gate     ACPI_STATE_COMMON
774db2bae30SDana Myers     union acpi_operand_object       *ObjDesc [ACPI_RESULTS_FRAME_OBJ_NUM];
7757c478bd9Sstevel@tonic-gate 
7767c478bd9Sstevel@tonic-gate } ACPI_RESULT_VALUES;
7777c478bd9Sstevel@tonic-gate 
7787c478bd9Sstevel@tonic-gate 
7797c478bd9Sstevel@tonic-gate typedef
7807c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_PARSE_DOWNWARDS) (
78127f7c583Smyers     struct acpi_walk_state          *WalkState,
78227f7c583Smyers     union acpi_parse_object         **OutOp);
7837c478bd9Sstevel@tonic-gate 
7847c478bd9Sstevel@tonic-gate typedef
7857c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_PARSE_UPWARDS) (
78627f7c583Smyers     struct acpi_walk_state          *WalkState);
7877c478bd9Sstevel@tonic-gate 
7887c478bd9Sstevel@tonic-gate 
7897c478bd9Sstevel@tonic-gate /*
7907c478bd9Sstevel@tonic-gate  * Notify info - used to pass info to the deferred notify
7917c478bd9Sstevel@tonic-gate  * handler/dispatcher.
7927c478bd9Sstevel@tonic-gate  */
7937c478bd9Sstevel@tonic-gate typedef struct acpi_notify_info
7947c478bd9Sstevel@tonic-gate {
7957c478bd9Sstevel@tonic-gate     ACPI_STATE_COMMON
79627f7c583Smyers     ACPI_NAMESPACE_NODE             *Node;
79727f7c583Smyers     union acpi_operand_object       *HandlerObj;
7987c478bd9Sstevel@tonic-gate 
7997c478bd9Sstevel@tonic-gate } ACPI_NOTIFY_INFO;
8007c478bd9Sstevel@tonic-gate 
8017c478bd9Sstevel@tonic-gate 
8027c478bd9Sstevel@tonic-gate /* Generic state is union of structs above */
8037c478bd9Sstevel@tonic-gate 
8047c478bd9Sstevel@tonic-gate typedef union acpi_generic_state
8057c478bd9Sstevel@tonic-gate {
80627f7c583Smyers     ACPI_COMMON_STATE               Common;
80727f7c583Smyers     ACPI_CONTROL_STATE              Control;
80827f7c583Smyers     ACPI_UPDATE_STATE               Update;
80927f7c583Smyers     ACPI_SCOPE_STATE                Scope;
81027f7c583Smyers     ACPI_PSCOPE_STATE               ParseScope;
81127f7c583Smyers     ACPI_PKG_STATE                  Pkg;
81227f7c583Smyers     ACPI_THREAD_STATE               Thread;
81327f7c583Smyers     ACPI_RESULT_VALUES              Results;
81427f7c583Smyers     ACPI_NOTIFY_INFO                Notify;
8157c478bd9Sstevel@tonic-gate 
8167c478bd9Sstevel@tonic-gate } ACPI_GENERIC_STATE;
8177c478bd9Sstevel@tonic-gate 
8187c478bd9Sstevel@tonic-gate 
8197c478bd9Sstevel@tonic-gate /*****************************************************************************
8207c478bd9Sstevel@tonic-gate  *
8217c478bd9Sstevel@tonic-gate  * Interpreter typedefs and structs
8227c478bd9Sstevel@tonic-gate  *
8237c478bd9Sstevel@tonic-gate  ****************************************************************************/
8247c478bd9Sstevel@tonic-gate 
8257c478bd9Sstevel@tonic-gate typedef
8267c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_EXECUTE_OP) (
82727f7c583Smyers     struct acpi_walk_state          *WalkState);
8287c478bd9Sstevel@tonic-gate 
8297c478bd9Sstevel@tonic-gate 
8307c478bd9Sstevel@tonic-gate /*****************************************************************************
8317c478bd9Sstevel@tonic-gate  *
8327c478bd9Sstevel@tonic-gate  * Parser typedefs and structs
8337c478bd9Sstevel@tonic-gate  *
8347c478bd9Sstevel@tonic-gate  ****************************************************************************/
8357c478bd9Sstevel@tonic-gate 
8367c478bd9Sstevel@tonic-gate /*
8377c478bd9Sstevel@tonic-gate  * AML opcode, name, and argument layout
8387c478bd9Sstevel@tonic-gate  */
8397c478bd9Sstevel@tonic-gate typedef struct acpi_opcode_info
8407c478bd9Sstevel@tonic-gate {
8417c478bd9Sstevel@tonic-gate #if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT)
84227f7c583Smyers     char                            *Name;          /* Opcode name (disassembler/debug only) */
8437c478bd9Sstevel@tonic-gate #endif
84427f7c583Smyers     UINT32                          ParseArgs;      /* Grammar/Parse time arguments */
84527f7c583Smyers     UINT32                          RuntimeArgs;    /* Interpret time arguments */
84627f7c583Smyers     UINT16                          Flags;          /* Misc flags */
84727f7c583Smyers     UINT8                           ObjectType;     /* Corresponding internal object type */
84827f7c583Smyers     UINT8                           Class;          /* Opcode class */
84927f7c583Smyers     UINT8                           Type;           /* Opcode type */
8507c478bd9Sstevel@tonic-gate 
8517c478bd9Sstevel@tonic-gate } ACPI_OPCODE_INFO;
8527c478bd9Sstevel@tonic-gate 
8537c478bd9Sstevel@tonic-gate typedef union acpi_parse_value
8547c478bd9Sstevel@tonic-gate {
85527f7c583Smyers     ACPI_INTEGER                    Integer;        /* Integer constant (Up to 64 bits) */
85627f7c583Smyers     UINT64_STRUCT                   Integer64;      /* Structure overlay for 2 32-bit Dwords */
85727f7c583Smyers     UINT32                          Size;           /* bytelist or field size */
85827f7c583Smyers     char                            *String;        /* NULL terminated string */
85927f7c583Smyers     UINT8                           *Buffer;        /* buffer or string */
86027f7c583Smyers     char                            *Name;          /* NULL terminated string */
86127f7c583Smyers     union acpi_parse_object         *Arg;           /* arguments and contained ops */
8627c478bd9Sstevel@tonic-gate 
8637c478bd9Sstevel@tonic-gate } ACPI_PARSE_VALUE;
8647c478bd9Sstevel@tonic-gate 
865aa2aa9a6SDana Myers 
866aa2aa9a6SDana Myers #ifdef ACPI_DISASSEMBLER
867aa2aa9a6SDana Myers #define ACPI_DISASM_ONLY_MEMBERS(a)     a;
868aa2aa9a6SDana Myers #else
869aa2aa9a6SDana Myers #define ACPI_DISASM_ONLY_MEMBERS(a)
870aa2aa9a6SDana Myers #endif
871aa2aa9a6SDana Myers 
8727c478bd9Sstevel@tonic-gate #define ACPI_PARSE_COMMON \
87327f7c583Smyers     union acpi_parse_object         *Parent;        /* Parent op */\
87427f7c583Smyers     UINT8                           DescriptorType; /* To differentiate various internal objs */\
87527f7c583Smyers     UINT8                           Flags;          /* Type of Op */\
87627f7c583Smyers     UINT16                          AmlOpcode;      /* AML opcode */\
87727f7c583Smyers     UINT32                          AmlOffset;      /* Offset of declaration in AML */\
87827f7c583Smyers     union acpi_parse_object         *Next;          /* Next op */\
87927f7c583Smyers     ACPI_NAMESPACE_NODE             *Node;          /* For use by interpreter */\
88027f7c583Smyers     ACPI_PARSE_VALUE                Value;          /* Value or args associated with the opcode */\
881db2bae30SDana Myers     UINT8                           ArgListLength;  /* Number of elements in the arg list */\
8827c478bd9Sstevel@tonic-gate     ACPI_DISASM_ONLY_MEMBERS (\
88327f7c583Smyers     UINT8                           DisasmFlags;    /* Used during AML disassembly */\
88427f7c583Smyers     UINT8                           DisasmOpcode;   /* Subtype used for disassembly */\
88527f7c583Smyers     char                            AmlOpName[16])  /* Op name (debug only) */
8867c478bd9Sstevel@tonic-gate 
8877c478bd9Sstevel@tonic-gate 
88827f7c583Smyers #define ACPI_DASM_BUFFER                0x00
88927f7c583Smyers #define ACPI_DASM_RESOURCE              0x01
89027f7c583Smyers #define ACPI_DASM_STRING                0x02
89127f7c583Smyers #define ACPI_DASM_UNICODE               0x03
89227f7c583Smyers #define ACPI_DASM_EISAID                0x04
89327f7c583Smyers #define ACPI_DASM_MATCHOP               0x05
89427f7c583Smyers #define ACPI_DASM_LNOT_PREFIX           0x06
89527f7c583Smyers #define ACPI_DASM_LNOT_SUFFIX           0x07
89627f7c583Smyers #define ACPI_DASM_IGNORE                0x08
8977c478bd9Sstevel@tonic-gate 
8987c478bd9Sstevel@tonic-gate /*
89927f7c583Smyers  * Generic operation (for example:  If, While, Store)
9007c478bd9Sstevel@tonic-gate  */
9017c478bd9Sstevel@tonic-gate typedef struct acpi_parse_obj_common
9027c478bd9Sstevel@tonic-gate {
9037c478bd9Sstevel@tonic-gate     ACPI_PARSE_COMMON
9047c478bd9Sstevel@tonic-gate } ACPI_PARSE_OBJ_COMMON;
9057c478bd9Sstevel@tonic-gate 
9067c478bd9Sstevel@tonic-gate 
9077c478bd9Sstevel@tonic-gate /*
9087c478bd9Sstevel@tonic-gate  * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and OpRegions),
9097c478bd9Sstevel@tonic-gate  * and bytelists.
9107c478bd9Sstevel@tonic-gate  */
9117c478bd9Sstevel@tonic-gate typedef struct acpi_parse_obj_named
9127c478bd9Sstevel@tonic-gate {
9137c478bd9Sstevel@tonic-gate     ACPI_PARSE_COMMON
91427f7c583Smyers     UINT8                           *Path;
91527f7c583Smyers     UINT8                           *Data;          /* AML body or bytelist data */
91627f7c583Smyers     UINT32                          Length;         /* AML length */
91727f7c583Smyers     UINT32                          Name;           /* 4-byte name or zero if no name */
9187c478bd9Sstevel@tonic-gate 
9197c478bd9Sstevel@tonic-gate } ACPI_PARSE_OBJ_NAMED;
9207c478bd9Sstevel@tonic-gate 
9217c478bd9Sstevel@tonic-gate 
92227f7c583Smyers /* This version is used by the iASL compiler only */
9237c478bd9Sstevel@tonic-gate 
92430082d0cSmyers #define ACPI_MAX_PARSEOP_NAME   20
92530082d0cSmyers 
9267c478bd9Sstevel@tonic-gate typedef struct acpi_parse_obj_asl
9277c478bd9Sstevel@tonic-gate {
9287c478bd9Sstevel@tonic-gate     ACPI_PARSE_COMMON
92927f7c583Smyers     union acpi_parse_object         *Child;
93027f7c583Smyers     union acpi_parse_object         *ParentMethod;
93127f7c583Smyers     char                            *Filename;
93227f7c583Smyers     char                            *ExternalName;
93327f7c583Smyers     char                            *Namepath;
93427f7c583Smyers     char                            NameSeg[4];
93527f7c583Smyers     UINT32                          ExtraValue;
93627f7c583Smyers     UINT32                          Column;
93727f7c583Smyers     UINT32                          LineNumber;
93827f7c583Smyers     UINT32                          LogicalLineNumber;
93927f7c583Smyers     UINT32                          LogicalByteOffset;
94027f7c583Smyers     UINT32                          EndLine;
94127f7c583Smyers     UINT32                          EndLogicalLine;
94227f7c583Smyers     UINT32                          AcpiBtype;
94327f7c583Smyers     UINT32                          AmlLength;
94427f7c583Smyers     UINT32                          AmlSubtreeLength;
94527f7c583Smyers     UINT32                          FinalAmlLength;
94627f7c583Smyers     UINT32                          FinalAmlOffset;
94727f7c583Smyers     UINT32                          CompileFlags;
94827f7c583Smyers     UINT16                          ParseOpcode;
94927f7c583Smyers     UINT8                           AmlOpcodeLength;
95027f7c583Smyers     UINT8                           AmlPkgLenBytes;
95127f7c583Smyers     UINT8                           Extra;
95227f7c583Smyers     char                            ParseOpName[ACPI_MAX_PARSEOP_NAME];
9537c478bd9Sstevel@tonic-gate 
9547c478bd9Sstevel@tonic-gate } ACPI_PARSE_OBJ_ASL;
9557c478bd9Sstevel@tonic-gate 
9567c478bd9Sstevel@tonic-gate typedef union acpi_parse_object
9577c478bd9Sstevel@tonic-gate {
95827f7c583Smyers     ACPI_PARSE_OBJ_COMMON           Common;
95927f7c583Smyers     ACPI_PARSE_OBJ_NAMED            Named;
96027f7c583Smyers     ACPI_PARSE_OBJ_ASL              Asl;
9617c478bd9Sstevel@tonic-gate 
9627c478bd9Sstevel@tonic-gate } ACPI_PARSE_OBJECT;
9637c478bd9Sstevel@tonic-gate 
9647c478bd9Sstevel@tonic-gate 
9657c478bd9Sstevel@tonic-gate /*
9667c478bd9Sstevel@tonic-gate  * Parse state - one state per parser invocation and each control
9677c478bd9Sstevel@tonic-gate  * method.
9687c478bd9Sstevel@tonic-gate  */
9697c478bd9Sstevel@tonic-gate typedef struct acpi_parse_state
9707c478bd9Sstevel@tonic-gate {
97127f7c583Smyers     UINT8                           *AmlStart;      /* First AML byte */
97227f7c583Smyers     UINT8                           *Aml;           /* Next AML byte */
97327f7c583Smyers     UINT8                           *AmlEnd;        /* (last + 1) AML byte */
97427f7c583Smyers     UINT8                           *PkgStart;      /* Current package begin */
97527f7c583Smyers     UINT8                           *PkgEnd;        /* Current package end */
97627f7c583Smyers     union acpi_parse_object         *StartOp;       /* Root of parse tree */
97727f7c583Smyers     struct acpi_namespace_node      *StartNode;
97827f7c583Smyers     union acpi_generic_state        *Scope;         /* Current scope */
97927f7c583Smyers     union acpi_parse_object         *StartScope;
98027f7c583Smyers     UINT32                          AmlSize;
9817c478bd9Sstevel@tonic-gate 
9827c478bd9Sstevel@tonic-gate } ACPI_PARSE_STATE;
9837c478bd9Sstevel@tonic-gate 
9847c478bd9Sstevel@tonic-gate 
9857c478bd9Sstevel@tonic-gate /* Parse object flags */
9867c478bd9Sstevel@tonic-gate 
98727f7c583Smyers #define ACPI_PARSEOP_GENERIC            0x01
98827f7c583Smyers #define ACPI_PARSEOP_NAMED              0x02
98927f7c583Smyers #define ACPI_PARSEOP_DEFERRED           0x04
99027f7c583Smyers #define ACPI_PARSEOP_BYTELIST           0x08
991db2bae30SDana Myers #define ACPI_PARSEOP_IN_STACK           0x10
992db2bae30SDana Myers #define ACPI_PARSEOP_TARGET             0x20
99327f7c583Smyers #define ACPI_PARSEOP_IN_CACHE           0x80
9947c478bd9Sstevel@tonic-gate 
9957c478bd9Sstevel@tonic-gate /* Parse object DisasmFlags */
9967c478bd9Sstevel@tonic-gate 
99727f7c583Smyers #define ACPI_PARSEOP_IGNORE             0x01
99827f7c583Smyers #define ACPI_PARSEOP_PARAMLIST          0x02
99927f7c583Smyers #define ACPI_PARSEOP_EMPTY_TERMLIST     0x04
100027f7c583Smyers #define ACPI_PARSEOP_SPECIAL            0x10
10017c478bd9Sstevel@tonic-gate 
10027c478bd9Sstevel@tonic-gate 
10037c478bd9Sstevel@tonic-gate /*****************************************************************************
10047c478bd9Sstevel@tonic-gate  *
10057c478bd9Sstevel@tonic-gate  * Hardware (ACPI registers) and PNP
10067c478bd9Sstevel@tonic-gate  *
10077c478bd9Sstevel@tonic-gate  ****************************************************************************/
10087c478bd9Sstevel@tonic-gate 
10097c478bd9Sstevel@tonic-gate typedef struct acpi_bit_register_info
10107c478bd9Sstevel@tonic-gate {
101127f7c583Smyers     UINT8                           ParentRegister;
101227f7c583Smyers     UINT8                           BitPosition;
101327f7c583Smyers     UINT16                          AccessBitMask;
10147c478bd9Sstevel@tonic-gate 
10157c478bd9Sstevel@tonic-gate } ACPI_BIT_REGISTER_INFO;
10167c478bd9Sstevel@tonic-gate 
10177c478bd9Sstevel@tonic-gate 
101827f7c583Smyers /*
101927f7c583Smyers  * Some ACPI registers have bits that must be ignored -- meaning that they
102027f7c583Smyers  * must be preserved.
102127f7c583Smyers  */
102227f7c583Smyers #define ACPI_PM1_STATUS_PRESERVED_BITS          0x0800  /* Bit 11 */
102327f7c583Smyers 
1024aa2aa9a6SDana Myers /* Write-only bits must be zeroed by software */
1025aa2aa9a6SDana Myers 
1026aa2aa9a6SDana Myers #define ACPI_PM1_CONTROL_WRITEONLY_BITS         0x2004  /* Bits 13, 2 */
1027aa2aa9a6SDana Myers 
1028aa2aa9a6SDana Myers /* For control registers, both ignored and reserved bits must be preserved */
1029aa2aa9a6SDana Myers 
1030aa2aa9a6SDana Myers /*
1031aa2aa9a6SDana Myers  * For PM1 control, the SCI enable bit (bit 0, SCI_EN) is defined by the
1032aa2aa9a6SDana Myers  * ACPI specification to be a "preserved" bit - "OSPM always preserves this
1033aa2aa9a6SDana Myers  * bit position", section 4.7.3.2.1. However, on some machines the OS must
1034aa2aa9a6SDana Myers  * write a one to this bit after resume for the machine to work properly.
1035aa2aa9a6SDana Myers  * To enable this, we no longer attempt to preserve this bit. No machines
1036aa2aa9a6SDana Myers  * are known to fail if the bit is not preserved. (May 2009)
1037aa2aa9a6SDana Myers  */
1038aa2aa9a6SDana Myers #define ACPI_PM1_CONTROL_IGNORED_BITS           0x0200  /* Bit 9 */
1039aa2aa9a6SDana Myers #define ACPI_PM1_CONTROL_RESERVED_BITS          0xC1F8  /* Bits 14-15, 3-8 */
1040aa2aa9a6SDana Myers #define ACPI_PM1_CONTROL_PRESERVED_BITS \
1041aa2aa9a6SDana Myers          (ACPI_PM1_CONTROL_IGNORED_BITS | ACPI_PM1_CONTROL_RESERVED_BITS)
1042aa2aa9a6SDana Myers 
1043aa2aa9a6SDana Myers #define ACPI_PM2_CONTROL_PRESERVED_BITS         0xFFFFFFFE /* All except bit 0 */
104427f7c583Smyers 
10457c478bd9Sstevel@tonic-gate /*
10467c478bd9Sstevel@tonic-gate  * Register IDs
10477c478bd9Sstevel@tonic-gate  * These are the full ACPI registers
10487c478bd9Sstevel@tonic-gate  */
10497c478bd9Sstevel@tonic-gate #define ACPI_REGISTER_PM1_STATUS                0x01
10507c478bd9Sstevel@tonic-gate #define ACPI_REGISTER_PM1_ENABLE                0x02
10517c478bd9Sstevel@tonic-gate #define ACPI_REGISTER_PM1_CONTROL               0x03
1052aa2aa9a6SDana Myers #define ACPI_REGISTER_PM2_CONTROL               0x04
1053aa2aa9a6SDana Myers #define ACPI_REGISTER_PM_TIMER                  0x05
1054aa2aa9a6SDana Myers #define ACPI_REGISTER_PROCESSOR_BLOCK           0x06
1055aa2aa9a6SDana Myers #define ACPI_REGISTER_SMI_COMMAND_BLOCK         0x07
10567c478bd9Sstevel@tonic-gate 
10577c478bd9Sstevel@tonic-gate 
10587c478bd9Sstevel@tonic-gate /* Masks used to access the BitRegisters */
10597c478bd9Sstevel@tonic-gate 
10607c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_TIMER_STATUS               0x0001
10617c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_BUS_MASTER_STATUS          0x0010
10627c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_GLOBAL_LOCK_STATUS         0x0020
10637c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_POWER_BUTTON_STATUS        0x0100
10647c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_SLEEP_BUTTON_STATUS        0x0200
10657c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_RT_CLOCK_STATUS            0x0400
10667c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_PCIEXP_WAKE_STATUS         0x4000    /* ACPI 3.0 */
10677c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_WAKE_STATUS                0x8000
10687c478bd9Sstevel@tonic-gate 
106927f7c583Smyers #define ACPI_BITMASK_ALL_FIXED_STATUS           (\
107027f7c583Smyers     ACPI_BITMASK_TIMER_STATUS          | \
107127f7c583Smyers     ACPI_BITMASK_BUS_MASTER_STATUS     | \
107227f7c583Smyers     ACPI_BITMASK_GLOBAL_LOCK_STATUS    | \
107327f7c583Smyers     ACPI_BITMASK_POWER_BUTTON_STATUS   | \
107427f7c583Smyers     ACPI_BITMASK_SLEEP_BUTTON_STATUS   | \
107527f7c583Smyers     ACPI_BITMASK_RT_CLOCK_STATUS       | \
107627f7c583Smyers     ACPI_BITMASK_WAKE_STATUS)
10777c478bd9Sstevel@tonic-gate 
10787c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_TIMER_ENABLE               0x0001
10797c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_GLOBAL_LOCK_ENABLE         0x0020
10807c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_POWER_BUTTON_ENABLE        0x0100
10817c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_SLEEP_BUTTON_ENABLE        0x0200
10827c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_RT_CLOCK_ENABLE            0x0400
10837c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_PCIEXP_WAKE_DISABLE        0x4000    /* ACPI 3.0 */
10847c478bd9Sstevel@tonic-gate 
10857c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_SCI_ENABLE                 0x0001
10867c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_BUS_MASTER_RLD             0x0002
10877c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_GLOBAL_LOCK_RELEASE        0x0004
1088aa2aa9a6SDana Myers #define ACPI_BITMASK_SLEEP_TYPE                 0x1C00
10897c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_SLEEP_ENABLE               0x2000
10907c478bd9Sstevel@tonic-gate 
10917c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_ARB_DISABLE                0x0001
10927c478bd9Sstevel@tonic-gate 
10937c478bd9Sstevel@tonic-gate 
10947c478bd9Sstevel@tonic-gate /* Raw bit position of each BitRegister */
10957c478bd9Sstevel@tonic-gate 
10967c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_TIMER_STATUS           0x00
10977c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_BUS_MASTER_STATUS      0x04
10987c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_GLOBAL_LOCK_STATUS     0x05
10997c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_POWER_BUTTON_STATUS    0x08
11007c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS    0x09
11017c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_RT_CLOCK_STATUS        0x0A
11027c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_PCIEXP_WAKE_STATUS     0x0E    /* ACPI 3.0 */
11037c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_WAKE_STATUS            0x0F
11047c478bd9Sstevel@tonic-gate 
11057c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_TIMER_ENABLE           0x00
11067c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE     0x05
11077c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_POWER_BUTTON_ENABLE    0x08
11087c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE    0x09
11097c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_RT_CLOCK_ENABLE        0x0A
11107c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE    0x0E    /* ACPI 3.0 */
11117c478bd9Sstevel@tonic-gate 
11127c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_SCI_ENABLE             0x00
11137c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_BUS_MASTER_RLD         0x01
11147c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE    0x02
1115aa2aa9a6SDana Myers #define ACPI_BITPOSITION_SLEEP_TYPE             0x0A
11167c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_SLEEP_ENABLE           0x0D
11177c478bd9Sstevel@tonic-gate 
11187c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_ARB_DISABLE            0x00
11197c478bd9Sstevel@tonic-gate 
11207c478bd9Sstevel@tonic-gate 
1121aa2aa9a6SDana Myers /* Structs and definitions for _OSI support and I/O port validation */
1122aa2aa9a6SDana Myers 
1123aa2aa9a6SDana Myers #define ACPI_OSI_WIN_2000               0x01
1124aa2aa9a6SDana Myers #define ACPI_OSI_WIN_XP                 0x02
1125aa2aa9a6SDana Myers #define ACPI_OSI_WIN_XP_SP1             0x03
1126aa2aa9a6SDana Myers #define ACPI_OSI_WINSRV_2003            0x04
1127aa2aa9a6SDana Myers #define ACPI_OSI_WIN_XP_SP2             0x05
1128aa2aa9a6SDana Myers #define ACPI_OSI_WINSRV_2003_SP1        0x06
1129aa2aa9a6SDana Myers #define ACPI_OSI_WIN_VISTA              0x07
1130*57190917SDana Myers #define ACPI_OSI_WINSRV_2008            0x08
1131*57190917SDana Myers #define ACPI_OSI_WIN_VISTA_SP1          0x09
1132*57190917SDana Myers #define ACPI_OSI_WIN_7                  0x0A
1133aa2aa9a6SDana Myers 
1134aa2aa9a6SDana Myers #define ACPI_ALWAYS_ILLEGAL             0x00
1135aa2aa9a6SDana Myers 
1136aa2aa9a6SDana Myers typedef struct acpi_interface_info
1137aa2aa9a6SDana Myers {
1138aa2aa9a6SDana Myers     char                    *Name;
1139aa2aa9a6SDana Myers     UINT8                   Value;
1140aa2aa9a6SDana Myers 
1141aa2aa9a6SDana Myers } ACPI_INTERFACE_INFO;
1142aa2aa9a6SDana Myers 
1143aa2aa9a6SDana Myers typedef struct acpi_port_info
1144aa2aa9a6SDana Myers {
1145aa2aa9a6SDana Myers     char                    *Name;
1146aa2aa9a6SDana Myers     UINT16                  Start;
1147aa2aa9a6SDana Myers     UINT16                  End;
1148aa2aa9a6SDana Myers     UINT8                   OsiDependency;
1149aa2aa9a6SDana Myers 
1150aa2aa9a6SDana Myers } ACPI_PORT_INFO;
1151aa2aa9a6SDana Myers 
1152aa2aa9a6SDana Myers 
11537c478bd9Sstevel@tonic-gate /*****************************************************************************
11547c478bd9Sstevel@tonic-gate  *
11557c478bd9Sstevel@tonic-gate  * Resource descriptors
11567c478bd9Sstevel@tonic-gate  *
11577c478bd9Sstevel@tonic-gate  ****************************************************************************/
11587c478bd9Sstevel@tonic-gate 
11597c478bd9Sstevel@tonic-gate /* ResourceType values */
11607c478bd9Sstevel@tonic-gate 
1161186507a7Smyers #define ACPI_ADDRESS_TYPE_MEMORY_RANGE          0
1162186507a7Smyers #define ACPI_ADDRESS_TYPE_IO_RANGE              1
1163186507a7Smyers #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE      2
11647c478bd9Sstevel@tonic-gate 
11657c478bd9Sstevel@tonic-gate /* Resource descriptor types and masks */
11667c478bd9Sstevel@tonic-gate 
1167186507a7Smyers #define ACPI_RESOURCE_NAME_LARGE                0x80
1168186507a7Smyers #define ACPI_RESOURCE_NAME_SMALL                0x00
11697c478bd9Sstevel@tonic-gate 
1170186507a7Smyers #define ACPI_RESOURCE_NAME_SMALL_MASK           0x78 /* Bits 6:3 contain the type */
1171186507a7Smyers #define ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK    0x07 /* Bits 2:0 contain the length */
1172186507a7Smyers #define ACPI_RESOURCE_NAME_LARGE_MASK           0x7F /* Bits 6:0 contain the type */
11737c478bd9Sstevel@tonic-gate 
11747c478bd9Sstevel@tonic-gate 
11757c478bd9Sstevel@tonic-gate /*
1176186507a7Smyers  * Small resource descriptor "names" as defined by the ACPI specification.
1177186507a7Smyers  * Note: Bits 2:0 are used for the descriptor length
11787c478bd9Sstevel@tonic-gate  */
1179186507a7Smyers #define ACPI_RESOURCE_NAME_IRQ                  0x20
1180186507a7Smyers #define ACPI_RESOURCE_NAME_DMA                  0x28
1181186507a7Smyers #define ACPI_RESOURCE_NAME_START_DEPENDENT      0x30
1182186507a7Smyers #define ACPI_RESOURCE_NAME_END_DEPENDENT        0x38
1183186507a7Smyers #define ACPI_RESOURCE_NAME_IO                   0x40
1184186507a7Smyers #define ACPI_RESOURCE_NAME_FIXED_IO             0x48
1185186507a7Smyers #define ACPI_RESOURCE_NAME_RESERVED_S1          0x50
1186186507a7Smyers #define ACPI_RESOURCE_NAME_RESERVED_S2          0x58
1187186507a7Smyers #define ACPI_RESOURCE_NAME_RESERVED_S3          0x60
1188186507a7Smyers #define ACPI_RESOURCE_NAME_RESERVED_S4          0x68
1189186507a7Smyers #define ACPI_RESOURCE_NAME_VENDOR_SMALL         0x70
1190186507a7Smyers #define ACPI_RESOURCE_NAME_END_TAG              0x78
11917c478bd9Sstevel@tonic-gate 
11927c478bd9Sstevel@tonic-gate /*
1193186507a7Smyers  * Large resource descriptor "names" as defined by the ACPI specification.
1194186507a7Smyers  * Note: includes the Large Descriptor bit in bit[7]
11957c478bd9Sstevel@tonic-gate  */
1196186507a7Smyers #define ACPI_RESOURCE_NAME_MEMORY24             0x81
1197186507a7Smyers #define ACPI_RESOURCE_NAME_GENERIC_REGISTER     0x82
1198186507a7Smyers #define ACPI_RESOURCE_NAME_RESERVED_L1          0x83
1199186507a7Smyers #define ACPI_RESOURCE_NAME_VENDOR_LARGE         0x84
1200186507a7Smyers #define ACPI_RESOURCE_NAME_MEMORY32             0x85
1201186507a7Smyers #define ACPI_RESOURCE_NAME_FIXED_MEMORY32       0x86
1202186507a7Smyers #define ACPI_RESOURCE_NAME_ADDRESS32            0x87
1203186507a7Smyers #define ACPI_RESOURCE_NAME_ADDRESS16            0x88
1204186507a7Smyers #define ACPI_RESOURCE_NAME_EXTENDED_IRQ         0x89
1205186507a7Smyers #define ACPI_RESOURCE_NAME_ADDRESS64            0x8A
1206186507a7Smyers #define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64   0x8B
1207186507a7Smyers #define ACPI_RESOURCE_NAME_LARGE_MAX            0x8B
12087c478bd9Sstevel@tonic-gate 
12097c478bd9Sstevel@tonic-gate 
12107c478bd9Sstevel@tonic-gate /*****************************************************************************
12117c478bd9Sstevel@tonic-gate  *
12127c478bd9Sstevel@tonic-gate  * Miscellaneous
12137c478bd9Sstevel@tonic-gate  *
12147c478bd9Sstevel@tonic-gate  ****************************************************************************/
12157c478bd9Sstevel@tonic-gate 
121627f7c583Smyers #define ACPI_ASCII_ZERO                 0x30
12177c478bd9Sstevel@tonic-gate 
12187c478bd9Sstevel@tonic-gate 
1219*57190917SDana Myers /*****************************************************************************
1220*57190917SDana Myers  *
1221*57190917SDana Myers  * Disassembler
1222*57190917SDana Myers  *
1223*57190917SDana Myers  ****************************************************************************/
1224*57190917SDana Myers 
1225*57190917SDana Myers typedef struct acpi_external_list
1226*57190917SDana Myers {
1227*57190917SDana Myers     char                        *Path;
1228*57190917SDana Myers     char                        *InternalPath;
1229*57190917SDana Myers     struct acpi_external_list   *Next;
1230*57190917SDana Myers     UINT32                      Value;
1231*57190917SDana Myers     UINT16                      Length;
1232*57190917SDana Myers     UINT8                       Type;
1233*57190917SDana Myers     UINT8                       Flags;
1234*57190917SDana Myers 
1235*57190917SDana Myers } ACPI_EXTERNAL_LIST;
1236*57190917SDana Myers 
1237*57190917SDana Myers /* Values for Flags field above */
1238*57190917SDana Myers 
1239*57190917SDana Myers #define ACPI_IPATH_ALLOCATED    0x01
1240*57190917SDana Myers 
1241*57190917SDana Myers 
12427c478bd9Sstevel@tonic-gate /*****************************************************************************
12437c478bd9Sstevel@tonic-gate  *
12447c478bd9Sstevel@tonic-gate  * Debugger
12457c478bd9Sstevel@tonic-gate  *
12467c478bd9Sstevel@tonic-gate  ****************************************************************************/
12477c478bd9Sstevel@tonic-gate 
12487c478bd9Sstevel@tonic-gate typedef struct acpi_db_method_info
12497c478bd9Sstevel@tonic-gate {
1250db2bae30SDana Myers     ACPI_HANDLE                     MainThreadGate;
1251db2bae30SDana Myers     ACPI_HANDLE                     ThreadCompleteGate;
1252aa2aa9a6SDana Myers     ACPI_HANDLE                     InfoGate;
1253db2bae30SDana Myers     UINT32                          *Threads;
1254db2bae30SDana Myers     UINT32                          NumThreads;
1255db2bae30SDana Myers     UINT32                          NumCreated;
1256db2bae30SDana Myers     UINT32                          NumCompleted;
1257db2bae30SDana Myers 
125827f7c583Smyers     char                            *Name;
125927f7c583Smyers     UINT32                          Flags;
126027f7c583Smyers     UINT32                          NumLoops;
126127f7c583Smyers     char                            Pathname[128];
1262db2bae30SDana Myers     char                            **Args;
1263db2bae30SDana Myers 
1264db2bae30SDana Myers     /*
1265db2bae30SDana Myers      * Arguments to be passed to method for the command
1266db2bae30SDana Myers      * Threads -
1267db2bae30SDana Myers      *   the Number of threads, ID of current thread and
1268db2bae30SDana Myers      *   Index of current thread inside all them created.
1269db2bae30SDana Myers      */
1270db2bae30SDana Myers     char                            InitArgs;
1271db2bae30SDana Myers     char                            *Arguments[4];
1272db2bae30SDana Myers     char                            NumThreadsStr[11];
1273db2bae30SDana Myers     char                            IdOfThreadStr[11];
1274db2bae30SDana Myers     char                            IndexOfThreadStr[11];
12757c478bd9Sstevel@tonic-gate 
12767c478bd9Sstevel@tonic-gate } ACPI_DB_METHOD_INFO;
12777c478bd9Sstevel@tonic-gate 
12787c478bd9Sstevel@tonic-gate typedef struct acpi_integrity_info
12797c478bd9Sstevel@tonic-gate {
128027f7c583Smyers     UINT32                          Nodes;
128127f7c583Smyers     UINT32                          Objects;
12827c478bd9Sstevel@tonic-gate 
12837c478bd9Sstevel@tonic-gate } ACPI_INTEGRITY_INFO;
12847c478bd9Sstevel@tonic-gate 
12857c478bd9Sstevel@tonic-gate 
128627f7c583Smyers #define ACPI_DB_REDIRECTABLE_OUTPUT     0x01
128727f7c583Smyers #define ACPI_DB_CONSOLE_OUTPUT          0x02
128827f7c583Smyers #define ACPI_DB_DUPLICATE_OUTPUT        0x03
12897c478bd9Sstevel@tonic-gate 
12907c478bd9Sstevel@tonic-gate 
12917c478bd9Sstevel@tonic-gate /*****************************************************************************
12927c478bd9Sstevel@tonic-gate  *
12937c478bd9Sstevel@tonic-gate  * Debug
12947c478bd9Sstevel@tonic-gate  *
12957c478bd9Sstevel@tonic-gate  ****************************************************************************/
12967c478bd9Sstevel@tonic-gate 
12977c478bd9Sstevel@tonic-gate /* Entry for a memory allocation (debug only) */
12987c478bd9Sstevel@tonic-gate 
129927f7c583Smyers #define ACPI_MEM_MALLOC                 0
130027f7c583Smyers #define ACPI_MEM_CALLOC                 1
130127f7c583Smyers #define ACPI_MAX_MODULE_NAME            16
13027c478bd9Sstevel@tonic-gate 
13037c478bd9Sstevel@tonic-gate #define ACPI_COMMON_DEBUG_MEM_HEADER \
130427f7c583Smyers     struct acpi_debug_mem_block     *Previous; \
130527f7c583Smyers     struct acpi_debug_mem_block     *Next; \
130627f7c583Smyers     UINT32                          Size; \
130727f7c583Smyers     UINT32                          Component; \
130827f7c583Smyers     UINT32                          Line; \
130927f7c583Smyers     char                            Module[ACPI_MAX_MODULE_NAME]; \
131027f7c583Smyers     UINT8                           AllocType;
13117c478bd9Sstevel@tonic-gate 
13127c478bd9Sstevel@tonic-gate typedef struct acpi_debug_mem_header
13137c478bd9Sstevel@tonic-gate {
13147c478bd9Sstevel@tonic-gate     ACPI_COMMON_DEBUG_MEM_HEADER
13157c478bd9Sstevel@tonic-gate 
13167c478bd9Sstevel@tonic-gate } ACPI_DEBUG_MEM_HEADER;
13177c478bd9Sstevel@tonic-gate 
13187c478bd9Sstevel@tonic-gate typedef struct acpi_debug_mem_block
13197c478bd9Sstevel@tonic-gate {
13207c478bd9Sstevel@tonic-gate     ACPI_COMMON_DEBUG_MEM_HEADER
132127f7c583Smyers     UINT64                          UserSpace;
13227c478bd9Sstevel@tonic-gate 
13237c478bd9Sstevel@tonic-gate } ACPI_DEBUG_MEM_BLOCK;
13247c478bd9Sstevel@tonic-gate 
13257c478bd9Sstevel@tonic-gate 
13267c478bd9Sstevel@tonic-gate #define ACPI_MEM_LIST_GLOBAL            0
13277c478bd9Sstevel@tonic-gate #define ACPI_MEM_LIST_NSNODE            1
1328450d6964Smyers #define ACPI_MEM_LIST_MAX               1
1329450d6964Smyers #define ACPI_NUM_MEM_LISTS              2
13307c478bd9Sstevel@tonic-gate 
13317c478bd9Sstevel@tonic-gate 
13327c478bd9Sstevel@tonic-gate #endif /* __ACLOCAL_H__ */
1333