Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
434 giacomo 1
/******************************************************************************
2
 *
3
 * Name: acdisasm.h - AML disassembler
4
 *
5
 *****************************************************************************/
6
 
7
/*
8
 * Copyright (C) 2000 - 2003, R. Byron Moore
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
 
49
 
50
#define BLOCK_NONE              0
51
#define BLOCK_PAREN             1
52
#define BLOCK_BRACE             2
53
#define BLOCK_COMMA_LIST        4
54
 
55
extern const char                       *acpi_gbl_io_decode[2];
56
extern const char                       *acpi_gbl_word_decode[4];
57
extern const char                       *acpi_gbl_consume_decode[2];
58
extern const char                       *acpi_gbl_min_decode[2];
59
extern const char                       *acpi_gbl_max_decode[2];
60
extern const char                       *acpi_gbl_DECdecode[2];
61
extern const char                       *acpi_gbl_RNGdecode[4];
62
extern const char                       *acpi_gbl_MEMdecode[4];
63
extern const char                       *acpi_gbl_RWdecode[2];
64
extern const char                       *acpi_gbl_irq_decode[2];
65
extern const char                       *acpi_gbl_HEdecode[2];
66
extern const char                       *acpi_gbl_LLdecode[2];
67
extern const char                       *acpi_gbl_SHRdecode[2];
68
extern const char                       *acpi_gbl_TYPdecode[4];
69
extern const char                       *acpi_gbl_BMdecode[2];
70
extern const char                       *acpi_gbl_SIZdecode[4];
71
extern const char                       *acpi_gbl_lock_rule[ACPI_NUM_LOCK_RULES];
72
extern const char                       *acpi_gbl_access_types[ACPI_NUM_ACCESS_TYPES];
73
extern const char                       *acpi_gbl_update_rules[ACPI_NUM_UPDATE_RULES];
74
extern const char                       *acpi_gbl_match_ops[ACPI_NUM_MATCH_OPS];
75
 
76
 
77
struct acpi_op_walk_info
78
{
79
        u32                             level;
80
        u32                             bit_offset;
81
};
82
 
83
typedef
84
acpi_status (*asl_walk_callback) (
85
        union acpi_parse_object             *op,
86
        u32                                 level,
87
        void                                *context);
88
 
89
 
90
/*
91
 * dmwalk
92
 */
93
 
94
void
95
acpi_dm_walk_parse_tree (
96
        union acpi_parse_object         *op,
97
        asl_walk_callback               descending_callback,
98
        asl_walk_callback               ascending_callback,
99
        void                            *context);
100
 
101
acpi_status
102
acpi_dm_descending_op (
103
        union acpi_parse_object         *op,
104
        u32                             level,
105
        void                            *context);
106
 
107
acpi_status
108
acpi_dm_ascending_op (
109
        union acpi_parse_object         *op,
110
        u32                             level,
111
        void                            *context);
112
 
113
 
114
/*
115
 * dmopcode
116
 */
117
 
118
void
119
acpi_dm_validate_name (
120
        char                            *name,
121
        union acpi_parse_object         *op);
122
 
123
u32
124
acpi_dm_dump_name (
125
        char                            *name);
126
 
127
void
128
acpi_dm_unicode (
129
        union acpi_parse_object         *op);
130
 
131
void
132
acpi_dm_disassemble (
133
        struct acpi_walk_state          *walk_state,
134
        union acpi_parse_object         *origin,
135
        u32                             num_opcodes);
136
 
137
void
138
acpi_dm_namestring (
139
        char                            *name);
140
 
141
void
142
acpi_dm_display_path (
143
        union acpi_parse_object         *op);
144
 
145
void
146
acpi_dm_disassemble_one_op (
147
        struct acpi_walk_state          *walk_state,
148
        struct acpi_op_walk_info        *info,
149
        union acpi_parse_object         *op);
150
 
151
void
152
acpi_dm_decode_internal_object (
153
        union acpi_operand_object       *obj_desc);
154
 
155
u32
156
acpi_dm_block_type (
157
        union acpi_parse_object         *op);
158
 
159
u32
160
acpi_dm_list_type (
161
        union acpi_parse_object         *op);
162
 
163
acpi_status
164
acpi_ps_display_object_pathname (
165
        struct acpi_walk_state          *walk_state,
166
        union acpi_parse_object         *op);
167
 
168
void
169
acpi_dm_method_flags (
170
        union acpi_parse_object         *op);
171
 
172
void
173
acpi_dm_field_flags (
174
        union acpi_parse_object         *op);
175
 
176
void
177
acpi_dm_address_space (
178
        u8                              space_id);
179
 
180
void
181
acpi_dm_region_flags (
182
        union acpi_parse_object         *op);
183
 
184
void
185
acpi_dm_match_op (
186
        union acpi_parse_object         *op);
187
 
188
void
189
acpi_dm_match_keyword (
190
        union acpi_parse_object         *op);
191
 
192
u8
193
acpi_dm_comma_if_list_member (
194
        union acpi_parse_object         *op);
195
 
196
void
197
acpi_dm_comma_if_field_member (
198
        union acpi_parse_object         *op);
199
 
200
 
201
/*
202
 * dmobject
203
 */
204
 
205
void
206
acpi_dm_decode_node (
207
        struct acpi_namespace_node      *node);
208
 
209
void
210
acpi_dm_display_internal_object (
211
        union acpi_operand_object       *obj_desc,
212
        struct acpi_walk_state          *walk_state);
213
 
214
void
215
acpi_dm_display_arguments (
216
        struct acpi_walk_state          *walk_state);
217
 
218
void
219
acpi_dm_display_locals (
220
        struct acpi_walk_state          *walk_state);
221
 
222
void
223
acpi_dm_dump_method_info (
224
        acpi_status                     status,
225
        struct acpi_walk_state          *walk_state,
226
        union acpi_parse_object         *op);
227
 
228
 
229
/*
230
 * dmbuffer
231
 */
232
 
233
void
234
acpi_is_eisa_id (
235
        union acpi_parse_object         *op);
236
 
237
void
238
acpi_dm_eisa_id (
239
        u32                             encoded_id);
240
 
241
u8
242
acpi_dm_is_unicode_buffer (
243
        union acpi_parse_object         *op);
244
 
245
u8
246
acpi_dm_is_string_buffer (
247
        union acpi_parse_object         *op);
248
 
249
 
250
/*
251
 * dmresrc
252
 */
253
 
254
void
255
acpi_dm_disasm_byte_list (
256
        u32                             level,
257
        u8                              *byte_data,
258
        u32                             byte_count);
259
 
260
void
261
acpi_dm_byte_list (
262
        struct acpi_op_walk_info        *info,
263
        union acpi_parse_object         *op);
264
 
265
void
266
acpi_dm_resource_descriptor (
267
        struct acpi_op_walk_info        *info,
268
        u8                              *byte_data,
269
        u32                             byte_count);
270
 
271
u8
272
acpi_dm_is_resource_descriptor (
273
        union acpi_parse_object         *op);
274
 
275
void
276
acpi_dm_indent (
277
        u32                             level);
278
 
279
void
280
acpi_dm_bit_list (
281
        u16                             mask);
282
 
283
void
284
acpi_dm_decode_attribute (
285
        u8                              attribute);
286
 
287
/*
288
 * dmresrcl
289
 */
290
 
291
void
292
acpi_dm_io_flags (
293
                u8                          flags);
294
 
295
void
296
acpi_dm_memory_flags (
297
        u8                              flags,
298
        u8                              specific_flags);
299
 
300
void
301
acpi_dm_word_descriptor (
302
        struct asl_word_address_desc    *resource,
303
        u32                             length,
304
        u32                             level);
305
 
306
void
307
acpi_dm_dword_descriptor (
308
        struct asl_dword_address_desc   *resource,
309
        u32                             length,
310
        u32                             level);
311
 
312
void
313
acpi_dm_qword_descriptor (
314
        struct asl_qword_address_desc   *resource,
315
        u32                             length,
316
        u32                             level);
317
 
318
void
319
acpi_dm_memory24_descriptor (
320
        struct asl_memory_24_desc       *resource,
321
        u32                             length,
322
        u32                             level);
323
 
324
void
325
acpi_dm_memory32_descriptor (
326
        struct asl_memory_32_desc       *resource,
327
        u32                             length,
328
        u32                             level);
329
 
330
void
331
acpi_dm_fixed_mem32_descriptor (
332
        struct asl_fixed_memory_32_desc *resource,
333
        u32                             length,
334
        u32                             level);
335
 
336
void
337
acpi_dm_generic_register_descriptor (
338
        struct asl_general_register_desc *resource,
339
        u32                             length,
340
        u32                             level);
341
 
342
void
343
acpi_dm_interrupt_descriptor (
344
        struct asl_extended_xrupt_desc *resource,
345
        u32                             length,
346
        u32                             level);
347
 
348
void
349
acpi_dm_vendor_large_descriptor (
350
        struct asl_large_vendor_desc    *resource,
351
        u32                             length,
352
        u32                             level);
353
 
354
 
355
/*
356
 * dmresrcs
357
 */
358
 
359
void
360
acpi_dm_irq_descriptor (
361
        struct asl_irq_format_desc      *resource,
362
        u32                             length,
363
        u32                             level);
364
 
365
void
366
acpi_dm_dma_descriptor (
367
        struct asl_dma_format_desc      *resource,
368
        u32                             length,
369
        u32                             level);
370
 
371
void
372
acpi_dm_io_descriptor (
373
        struct asl_io_port_desc         *resource,
374
        u32                             length,
375
        u32                             level);
376
 
377
void
378
acpi_dm_fixed_io_descriptor (
379
        struct asl_fixed_io_port_desc   *resource,
380
        u32                             length,
381
        u32                             level);
382
 
383
void
384
acpi_dm_start_dependent_descriptor (
385
        struct asl_start_dependent_desc *resource,
386
        u32                             length,
387
        u32                             level);
388
 
389
void
390
acpi_dm_end_dependent_descriptor (
391
        struct asl_start_dependent_desc *resource,
392
        u32                             length,
393
        u32                             level);
394
 
395
void
396
acpi_dm_vendor_small_descriptor (
397
        struct asl_small_vendor_desc    *resource,
398
        u32                             length,
399
        u32                             level);
400
 
401
 
402
#endif  /* __ACDISASM_H__ */