ACPI: ACPICA 20060217
[deliverable/linux.git] / include / acpi / acdisasm.h
CommitLineData
1da177e4
LT
1/******************************************************************************
2 *
3 * Name: acdisasm.h - AML disassembler
4 *
5 *****************************************************************************/
6
7/*
4a90c7e8 8 * Copyright (C) 2000 - 2006, R. Byron Moore
1da177e4
LT
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44#ifndef __ACDISASM_H__
45#define __ACDISASM_H__
46
47#include "amlresrc.h"
48
1da177e4
LT
49#define BLOCK_NONE 0
50#define BLOCK_PAREN 1
51#define BLOCK_BRACE 2
52#define BLOCK_COMMA_LIST 4
53
4be44fcd
LB
54struct acpi_external_list {
55 char *path;
56 struct acpi_external_list *next;
1da177e4
LT
57};
58
4be44fcd 59extern struct acpi_external_list *acpi_gbl_external_list;
defba1d8
BM
60
61/* Strings used for decoding flags to ASL keywords */
62
4be44fcd 63extern const char *acpi_gbl_word_decode[4];
4be44fcd 64extern const char *acpi_gbl_irq_decode[2];
4be44fcd
LB
65extern const char *acpi_gbl_lock_rule[ACPI_NUM_LOCK_RULES];
66extern const char *acpi_gbl_access_types[ACPI_NUM_ACCESS_TYPES];
67extern const char *acpi_gbl_update_rules[ACPI_NUM_UPDATE_RULES];
68extern const char *acpi_gbl_match_ops[ACPI_NUM_MATCH_OPS];
69
70struct acpi_op_walk_info {
71 u32 level;
72 u32 bit_offset;
52fc0b02 73 u32 flags;
4be44fcd 74 struct acpi_walk_state *walk_state;
1da177e4
LT
75};
76
77typedef
4be44fcd
LB
78acpi_status(*asl_walk_callback) (union acpi_parse_object * op,
79 u32 level, void *context);
1da177e4
LT
80
81/*
82 * dmwalk
83 */
1da177e4 84void
4be44fcd
LB
85acpi_dm_disassemble(struct acpi_walk_state *walk_state,
86 union acpi_parse_object *origin, u32 num_opcodes);
1da177e4 87
44f6c012
RM
88/*
89 * dmopcode
90 */
1da177e4 91void
4be44fcd
LB
92acpi_dm_disassemble_one_op(struct acpi_walk_state *walk_state,
93 struct acpi_op_walk_info *info,
94 union acpi_parse_object *op);
1da177e4 95
4be44fcd 96void acpi_dm_decode_internal_object(union acpi_operand_object *obj_desc);
1da177e4 97
4be44fcd 98u32 acpi_dm_list_type(union acpi_parse_object *op);
1da177e4 99
4be44fcd 100void acpi_dm_method_flags(union acpi_parse_object *op);
1da177e4 101
4be44fcd 102void acpi_dm_field_flags(union acpi_parse_object *op);
1da177e4 103
4be44fcd 104void acpi_dm_address_space(u8 space_id);
1da177e4 105
4be44fcd 106void acpi_dm_region_flags(union acpi_parse_object *op);
1da177e4 107
4be44fcd 108void acpi_dm_match_op(union acpi_parse_object *op);
1da177e4 109
4be44fcd 110u8 acpi_dm_comma_if_list_member(union acpi_parse_object *op);
1da177e4 111
4be44fcd 112void acpi_dm_comma_if_field_member(union acpi_parse_object *op);
1da177e4
LT
113
114/*
44f6c012 115 * dmnames
1da177e4 116 */
4be44fcd 117u32 acpi_dm_dump_name(char *name);
44f6c012
RM
118
119acpi_status
4be44fcd
LB
120acpi_ps_display_object_pathname(struct acpi_walk_state *walk_state,
121 union acpi_parse_object *op);
44f6c012 122
4be44fcd 123void acpi_dm_namestring(char *name);
1da177e4 124
44f6c012
RM
125/*
126 * dmobject
127 */
1da177e4 128void
4be44fcd
LB
129acpi_dm_display_internal_object(union acpi_operand_object *obj_desc,
130 struct acpi_walk_state *walk_state);
1da177e4 131
4be44fcd 132void acpi_dm_display_arguments(struct acpi_walk_state *walk_state);
1da177e4 133
4be44fcd 134void acpi_dm_display_locals(struct acpi_walk_state *walk_state);
1da177e4
LT
135
136void
4be44fcd
LB
137acpi_dm_dump_method_info(acpi_status status,
138 struct acpi_walk_state *walk_state,
139 union acpi_parse_object *op);
1da177e4
LT
140
141/*
142 * dmbuffer
143 */
4be44fcd 144void acpi_dm_disasm_byte_list(u32 level, u8 * byte_data, u32 byte_count);
44f6c012
RM
145
146void
4be44fcd 147acpi_dm_byte_list(struct acpi_op_walk_info *info, union acpi_parse_object *op);
1da177e4 148
4be44fcd 149void acpi_dm_is_eisa_id(union acpi_parse_object *op);
1da177e4 150
4be44fcd 151void acpi_dm_eisa_id(u32 encoded_id);
1da177e4 152
4be44fcd 153u8 acpi_dm_is_unicode_buffer(union acpi_parse_object *op);
1da177e4 154
4be44fcd 155u8 acpi_dm_is_string_buffer(union acpi_parse_object *op);
1da177e4
LT
156
157/*
158 * dmresrc
159 */
0897831b
BM
160void acpi_dm_dump_integer8(u8 value, char *name);
161
162void acpi_dm_dump_integer16(u16 value, char *name);
163
164void acpi_dm_dump_integer32(u32 value, char *name);
165
166void acpi_dm_dump_integer64(u64 value, char *name);
167
1da177e4 168void
0897831b
BM
169acpi_dm_resource_template(struct acpi_op_walk_info *info,
170 u8 * byte_data, u32 byte_count);
1da177e4 171
0897831b 172u8 acpi_dm_is_resource_template(union acpi_parse_object *op);
1da177e4 173
4be44fcd 174void acpi_dm_indent(u32 level);
1da177e4 175
4be44fcd 176void acpi_dm_bit_list(u16 mask);
1da177e4 177
4be44fcd 178void acpi_dm_decode_attribute(u8 attribute);
44f6c012 179
1da177e4
LT
180/*
181 * dmresrcl
182 */
1da177e4 183void
50eca3eb 184acpi_dm_word_descriptor(union aml_resource *resource, u32 length, u32 level);
1da177e4
LT
185
186void
50eca3eb 187acpi_dm_dword_descriptor(union aml_resource *resource, u32 length, u32 level);
1da177e4
LT
188
189void
50eca3eb 190acpi_dm_extended_descriptor(union aml_resource *resource,
4be44fcd 191 u32 length, u32 level);
1da177e4
LT
192
193void
50eca3eb 194acpi_dm_qword_descriptor(union aml_resource *resource, u32 length, u32 level);
1da177e4
LT
195
196void
50eca3eb 197acpi_dm_memory24_descriptor(union aml_resource *resource,
4be44fcd 198 u32 length, u32 level);
1da177e4
LT
199
200void
50eca3eb 201acpi_dm_memory32_descriptor(union aml_resource *resource,
4be44fcd 202 u32 length, u32 level);
1da177e4
LT
203
204void
50eca3eb 205acpi_dm_fixed_memory32_descriptor(union aml_resource *resource,
bda663d3 206 u32 length, u32 level);
1da177e4
LT
207
208void
50eca3eb 209acpi_dm_generic_register_descriptor(union aml_resource *resource,
4be44fcd 210 u32 length, u32 level);
1da177e4
LT
211
212void
50eca3eb 213acpi_dm_interrupt_descriptor(union aml_resource *resource,
4be44fcd 214 u32 length, u32 level);
1da177e4
LT
215
216void
50eca3eb 217acpi_dm_vendor_large_descriptor(union aml_resource *resource,
4be44fcd 218 u32 length, u32 level);
1da177e4 219
0897831b
BM
220void acpi_dm_vendor_common(char *name, u8 * byte_data, u32 length, u32 level);
221
1da177e4
LT
222/*
223 * dmresrcs
224 */
1da177e4 225void
50eca3eb 226acpi_dm_irq_descriptor(union aml_resource *resource, u32 length, u32 level);
1da177e4
LT
227
228void
50eca3eb 229acpi_dm_dma_descriptor(union aml_resource *resource, u32 length, u32 level);
1da177e4 230
50eca3eb 231void acpi_dm_io_descriptor(union aml_resource *resource, u32 length, u32 level);
1da177e4
LT
232
233void
50eca3eb 234acpi_dm_fixed_io_descriptor(union aml_resource *resource,
4be44fcd 235 u32 length, u32 level);
1da177e4
LT
236
237void
50eca3eb 238acpi_dm_start_dependent_descriptor(union aml_resource *resource,
4be44fcd 239 u32 length, u32 level);
1da177e4
LT
240
241void
50eca3eb 242acpi_dm_end_dependent_descriptor(union aml_resource *resource,
4be44fcd 243 u32 length, u32 level);
1da177e4
LT
244
245void
50eca3eb 246acpi_dm_vendor_small_descriptor(union aml_resource *resource,
4be44fcd 247 u32 length, u32 level);
1da177e4
LT
248
249/*
250 * dmutils
251 */
4be44fcd 252void acpi_dm_add_to_external_list(char *path);
1da177e4 253
4be44fcd 254#endif /* __ACDISASM_H__ */
This page took 0.084609 seconds and 5 git commands to generate.