asltypes.h revision 220663
119304Speter
219304Speter/******************************************************************************
319304Speter *
419304Speter * Module Name: asltypes.h - compiler data types and struct definitions
519304Speter *
619304Speter *****************************************************************************/
719304Speter
819304Speter/*
919304Speter * Copyright (C) 2000 - 2011, Intel Corp.
1019304Speter * All rights reserved.
1119304Speter *
1219304Speter * Redistribution and use in source and binary forms, with or without
13254225Speter * modification, are permitted provided that the following conditions
1419304Speter * are met:
1519304Speter * 1. Redistributions of source code must retain the above copyright
1619304Speter *    notice, this list of conditions, and the following disclaimer,
1719304Speter *    without modification.
18254225Speter * 2. Redistributions in binary form must reproduce at minimum a disclaimer
1919304Speter *    substantially similar to the "NO WARRANTY" disclaimer below
2019304Speter *    ("Disclaimer") and any redistribution must be conditioned upon
2119304Speter *    including a substantially similar Disclaimer requirement for further
2219304Speter *    binary redistribution.
2319304Speter * 3. Neither the names of the above-listed copyright holders nor the names
2419304Speter *    of any contributors may be used to endorse or promote products derived
2519304Speter *    from this software without specific prior written permission.
26254225Speter *
27170371Srafan * Alternatively, this software may be distributed under the terms of the
28254225Speter * GNU General Public License ("GPL") version 2 as published by the Free
2919304Speter * Software Foundation.
3019304Speter *
3119304Speter * NO WARRANTY
3219304Speter * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
3319304Speter * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3419304Speter * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
3519304Speter * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3619304Speter * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3719304Speter * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3819304Speter * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3919304Speter * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
4019304Speter * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
4119304Speter * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
4219304Speter * POSSIBILITY OF SUCH DAMAGES.
4319304Speter */
4419304Speter
4519304Speter
4619304Speter#ifndef __ASLTYPES_H
4719304Speter#define __ASLTYPES_H
4819304Speter
49254225Speter
5019304Speter/*******************************************************************************
5119304Speter *
52254225Speter * Structure definitions
5319304Speter *
5419304Speter ******************************************************************************/
5519304Speter
5619304Speter
57254225Speter/* Op flags for the ACPI_PARSE_OBJECT */
5819304Speter
5919304Speter#define NODE_VISITED                0x00000001
6019304Speter#define NODE_AML_PACKAGE            0x00000002
61254225Speter#define NODE_IS_TARGET              0x00000004
62254225Speter#define NODE_IS_RESOURCE_DESC       0x00000008
63254225Speter#define NODE_IS_RESOURCE_FIELD      0x00000010
64254225Speter#define NODE_HAS_NO_EXIT            0x00000020
6519304Speter#define NODE_IF_HAS_NO_EXIT         0x00000040
6619304Speter#define NODE_NAME_INTERNALIZED      0x00000080
6719304Speter#define NODE_METHOD_NO_RETVAL       0x00000100
6819304Speter#define NODE_METHOD_SOME_NO_RETVAL  0x00000200
6919304Speter#define NODE_RESULT_NOT_USED        0x00000400
7019304Speter#define NODE_METHOD_TYPED           0x00000800
71254225Speter#define NODE_IS_BIT_OFFSET          0x00001000
72254225Speter#define NODE_COMPILE_TIME_CONST     0x00002000
7319304Speter#define NODE_IS_TERM_ARG            0x00004000
7419304Speter#define NODE_WAS_ONES_OP            0x00008000
7519304Speter#define NODE_IS_NAME_DECLARATION    0x00010000
7619304Speter#define NODE_COMPILER_EMITTED       0x00020000
7719304Speter#define NODE_IS_DUPLICATE           0x00040000
7819304Speter#define NODE_IS_RESOURCE_DATA       0x00080000
7919304Speter#define NODE_IS_NULL_RETURN         0x00100000
8019304Speter
8119304Speter/* Keeps information about individual control methods */
8219304Speter
8319304Spetertypedef struct asl_method_info
8419304Speter{
8519304Speter    UINT8                   NumArguments;
8619304Speter    UINT8                   LocalInitialized[ACPI_METHOD_NUM_LOCALS];
8719304Speter    UINT8                   ArgInitialized[ACPI_METHOD_NUM_ARGS];
8819304Speter    UINT32                  ValidArgTypes[ACPI_METHOD_NUM_ARGS];
8919304Speter    UINT32                  ValidReturnTypes;
9019304Speter    UINT32                  NumReturnNoValue;
9119304Speter    UINT32                  NumReturnWithValue;
9219304Speter    ACPI_PARSE_OBJECT       *Op;
9319304Speter    struct asl_method_info  *Next;
9419304Speter    UINT8                   HasBeenTyped;
9519304Speter
9619304Speter} ASL_METHOD_INFO;
9719304Speter
9819304Speter
9919304Speter/* Parse tree walk info for control method analysis */
100254225Speter
101254225Spetertypedef struct asl_analysis_walk_info
102254225Speter{
10319304Speter    ASL_METHOD_INFO         *MethodStack;
104254225Speter
105254225Speter} ASL_ANALYSIS_WALK_INFO;
10619304Speter
10719304Speter
10819304Speter/* An entry in the ParseOpcode to AmlOpcode mapping table */
10919304Speter
11019304Spetertypedef struct asl_mapping_entry
11119304Speter{
11219304Speter    UINT32                      Value;
11319304Speter    UINT32                      AcpiBtype;   /* Object type or return type */
11419304Speter    UINT16                      AmlOpcode;
11519304Speter    UINT8                       Flags;
11619304Speter
11719304Speter} ASL_MAPPING_ENTRY;
11819304Speter
11919304Speter
12019304Speter/* Parse tree walk info structure */
12119304Speter
12219304Spetertypedef struct asl_walk_info
12319304Speter{
12419304Speter    ACPI_PARSE_OBJECT           **NodePtr;
12519304Speter    UINT32                      *LevelPtr;
12619304Speter
12719304Speter} ASL_WALK_INFO;
12819304Speter
12919304Speter
13019304Speter/* File info */
13119304Speter
13219304Spetertypedef struct asl_file_info
13319304Speter{
13419304Speter    FILE                        *Handle;
13519304Speter    char                        *Filename;
13619304Speter
137254225Speter} ASL_FILE_INFO;
13819304Speter
13919304Spetertypedef struct asl_file_status
14019304Speter{
14119304Speter    UINT32                  Line;
14219304Speter    UINT32                  Offset;
14319304Speter
14419304Speter} ASL_FILE_STATUS;
14519304Speter
14619304Speter
14719304Speter/* File types */
14819304Speter
14919304Spetertypedef enum
15019304Speter{
15119304Speter    ASL_FILE_STDOUT             = 0,
15219304Speter    ASL_FILE_STDERR,
15319304Speter    ASL_FILE_INPUT,
15419304Speter    ASL_FILE_AML_OUTPUT,
15519304Speter    ASL_FILE_SOURCE_OUTPUT,
15619304Speter    ASL_FILE_LISTING_OUTPUT,
15719304Speter    ASL_FILE_HEX_OUTPUT,
15819304Speter    ASL_FILE_NAMESPACE_OUTPUT,
15919304Speter    ASL_FILE_DEBUG_OUTPUT,
16019304Speter    ASL_FILE_ASM_SOURCE_OUTPUT,
16119304Speter    ASL_FILE_C_SOURCE_OUTPUT,
16219304Speter    ASL_FILE_ASM_INCLUDE_OUTPUT,
16319304Speter    ASL_FILE_C_INCLUDE_OUTPUT
16419304Speter
16519304Speter} ASL_FILE_TYPES;
16619304Speter
16719304Speter
16819304Speter#define ASL_MAX_FILE_TYPE       12
16919304Speter#define ASL_NUM_FILES           (ASL_MAX_FILE_TYPE + 1)
17019304Speter
17119304Speter
17219304Spetertypedef struct asl_include_dir
17319304Speter{
17419304Speter    char                        *Dir;
17519304Speter    struct asl_include_dir      *Next;
17619304Speter
17719304Speter} ASL_INCLUDE_DIR;
17819304Speter
17919304Speter
18019304Speter/* An entry in the exception list, one for each error/warning */
18119304Speter
18219304Spetertypedef struct asl_error_msg
18319304Speter{
18419304Speter    UINT32                      LineNumber;
18519304Speter    UINT32                      LogicalLineNumber;
18619304Speter    UINT32                      LogicalByteOffset;
187254225Speter    UINT32                      Column;
18819304Speter    char                        *Message;
18919304Speter    struct asl_error_msg        *Next;
19019304Speter    char                        *Filename;
19119304Speter    UINT32                      FilenameLength;
19219304Speter    UINT8                       MessageId;
19319304Speter    UINT8                       Level;
19419304Speter
19519304Speter} ASL_ERROR_MSG;
19619304Speter
19719304Speter
19819304Speter/* An entry in the listing file stack (for include files) */
19919304Speter
20019304Spetertypedef struct asl_listing_node
20119304Speter{
20219304Speter    char                        *Filename;
20319304Speter    UINT32                      LineNumber;
20419304Speter    struct asl_listing_node     *Next;
20519304Speter
20619304Speter} ASL_LISTING_NODE;
20719304Speter
20819304Speter
20919304Speter/* Callback interface for a parse tree walk */
21019304Speter
21119304Speter/*
21219304Speter * TBD - another copy of this is in adisasm.h, fix
21319304Speter */
21419304Speter#ifndef ASL_WALK_CALLBACK_DEFINED
21519304Spetertypedef
21619304SpeterACPI_STATUS (*ASL_WALK_CALLBACK) (
21719304Speter    ACPI_PARSE_OBJECT           *Op,
21819304Speter    UINT32                      Level,
21919304Speter    void                        *Context);
22019304Speter#define ASL_WALK_CALLBACK_DEFINED
22119304Speter#endif
22219304Speter
22319304Speter
22419304Spetertypedef struct asl_event_info
22519304Speter{
22619304Speter    UINT64                      StartTime;
22719304Speter    UINT64                      EndTime;
22819304Speter    char                        *EventName;
22919304Speter    BOOLEAN                     Valid;
23019304Speter
23119304Speter} ASL_EVENT_INFO;
23219304Speter
23319304Speter
23419304Speter#endif  /* __ASLTYPES_H */
23519304Speter