Commit d9652b4e8a26384be959770839773a9dee7d0c2c

Authored by Bob Moore
Committed by Rafael J. Wysocki
1 parent 48ffb94f9e

ACPICA: iASL/Disassembler: Add option to ignore NOOP opcodes/operators

Implemented for both the compiler and the disassembler.  Often,
the NOOP opcode is used as padding for packages that are changed
dynamically by the BIOS. When disassembled, these NOOPs will
cause syntax errors. This option causes the disassembler to ignore
the NOOP opcode, and it also causes the compiler to ignore NOOP
statements as well.

Signed-off-by: Bob Moore <robert.moore@intel.com>
Tested-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Showing 1 changed file with 3 additions and 1 deletions Inline Diff

drivers/acpi/acpica/acglobal.h
1 /****************************************************************************** 1 /******************************************************************************
2 * 2 *
3 * Name: acglobal.h - Declarations for global variables 3 * Name: acglobal.h - Declarations for global variables
4 * 4 *
5 *****************************************************************************/ 5 *****************************************************************************/
6 6
7 /* 7 /*
8 * Copyright (C) 2000 - 2013, Intel Corp. 8 * Copyright (C) 2000 - 2013, Intel Corp.
9 * All rights reserved. 9 * All rights reserved.
10 * 10 *
11 * Redistribution and use in source and binary forms, with or without 11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions 12 * modification, are permitted provided that the following conditions
13 * are met: 13 * are met:
14 * 1. Redistributions of source code must retain the above copyright 14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer, 15 * notice, this list of conditions, and the following disclaimer,
16 * without modification. 16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below 18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon 19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further 20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution. 21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names 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 23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission. 24 * from this software without specific prior written permission.
25 * 25 *
26 * Alternatively, this software may be distributed under the terms of the 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 27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation. 28 * Software Foundation.
29 * 29 *
30 * NO WARRANTY 30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 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 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES. 41 * POSSIBILITY OF SUCH DAMAGES.
42 */ 42 */
43 43
44 #ifndef __ACGLOBAL_H__ 44 #ifndef __ACGLOBAL_H__
45 #define __ACGLOBAL_H__ 45 #define __ACGLOBAL_H__
46 46
47 /* 47 /*
48 * Ensure that the globals are actually defined and initialized only once. 48 * Ensure that the globals are actually defined and initialized only once.
49 * 49 *
50 * The use of these macros allows a single list of globals (here) in order 50 * The use of these macros allows a single list of globals (here) in order
51 * to simplify maintenance of the code. 51 * to simplify maintenance of the code.
52 */ 52 */
53 #ifdef DEFINE_ACPI_GLOBALS 53 #ifdef DEFINE_ACPI_GLOBALS
54 #define ACPI_EXTERN 54 #define ACPI_EXTERN
55 #define ACPI_INIT_GLOBAL(a,b) a=b 55 #define ACPI_INIT_GLOBAL(a,b) a=b
56 #else 56 #else
57 #define ACPI_EXTERN extern 57 #define ACPI_EXTERN extern
58 #define ACPI_INIT_GLOBAL(a,b) a 58 #define ACPI_INIT_GLOBAL(a,b) a
59 #endif 59 #endif
60 60
61 #ifdef DEFINE_ACPI_GLOBALS 61 #ifdef DEFINE_ACPI_GLOBALS
62 62
63 /* Public globals, available from outside ACPICA subsystem */ 63 /* Public globals, available from outside ACPICA subsystem */
64 64
65 /***************************************************************************** 65 /*****************************************************************************
66 * 66 *
67 * Runtime configuration (static defaults that can be overriden at runtime) 67 * Runtime configuration (static defaults that can be overriden at runtime)
68 * 68 *
69 ****************************************************************************/ 69 ****************************************************************************/
70 70
71 /* 71 /*
72 * Enable "slack" in the AML interpreter? Default is FALSE, and the 72 * Enable "slack" in the AML interpreter? Default is FALSE, and the
73 * interpreter strictly follows the ACPI specification. Setting to TRUE 73 * interpreter strictly follows the ACPI specification. Setting to TRUE
74 * allows the interpreter to ignore certain errors and/or bad AML constructs. 74 * allows the interpreter to ignore certain errors and/or bad AML constructs.
75 * 75 *
76 * Currently, these features are enabled by this flag: 76 * Currently, these features are enabled by this flag:
77 * 77 *
78 * 1) Allow "implicit return" of last value in a control method 78 * 1) Allow "implicit return" of last value in a control method
79 * 2) Allow access beyond the end of an operation region 79 * 2) Allow access beyond the end of an operation region
80 * 3) Allow access to uninitialized locals/args (auto-init to integer 0) 80 * 3) Allow access to uninitialized locals/args (auto-init to integer 0)
81 * 4) Allow ANY object type to be a source operand for the Store() operator 81 * 4) Allow ANY object type to be a source operand for the Store() operator
82 * 5) Allow unresolved references (invalid target name) in package objects 82 * 5) Allow unresolved references (invalid target name) in package objects
83 * 6) Enable warning messages for behavior that is not ACPI spec compliant 83 * 6) Enable warning messages for behavior that is not ACPI spec compliant
84 */ 84 */
85 u8 ACPI_INIT_GLOBAL(acpi_gbl_enable_interpreter_slack, FALSE); 85 u8 ACPI_INIT_GLOBAL(acpi_gbl_enable_interpreter_slack, FALSE);
86 86
87 /* 87 /*
88 * Automatically serialize ALL control methods? Default is FALSE, meaning 88 * Automatically serialize ALL control methods? Default is FALSE, meaning
89 * to use the Serialized/not_serialized method flags on a per method basis. 89 * to use the Serialized/not_serialized method flags on a per method basis.
90 * Only change this if the ASL code is poorly written and cannot handle 90 * Only change this if the ASL code is poorly written and cannot handle
91 * reentrancy even though methods are marked "NotSerialized". 91 * reentrancy even though methods are marked "NotSerialized".
92 */ 92 */
93 u8 ACPI_INIT_GLOBAL(acpi_gbl_all_methods_serialized, FALSE); 93 u8 ACPI_INIT_GLOBAL(acpi_gbl_all_methods_serialized, FALSE);
94 94
95 /* 95 /*
96 * Create the predefined _OSI method in the namespace? Default is TRUE 96 * Create the predefined _OSI method in the namespace? Default is TRUE
97 * because ACPI CA is fully compatible with other ACPI implementations. 97 * because ACPI CA is fully compatible with other ACPI implementations.
98 * Changing this will revert ACPI CA (and machine ASL) to pre-OSI behavior. 98 * Changing this will revert ACPI CA (and machine ASL) to pre-OSI behavior.
99 */ 99 */
100 u8 ACPI_INIT_GLOBAL(acpi_gbl_create_osi_method, TRUE); 100 u8 ACPI_INIT_GLOBAL(acpi_gbl_create_osi_method, TRUE);
101 101
102 /* 102 /*
103 * Optionally use default values for the ACPI register widths. Set this to 103 * Optionally use default values for the ACPI register widths. Set this to
104 * TRUE to use the defaults, if an FADT contains incorrect widths/lengths. 104 * TRUE to use the defaults, if an FADT contains incorrect widths/lengths.
105 */ 105 */
106 u8 ACPI_INIT_GLOBAL(acpi_gbl_use_default_register_widths, TRUE); 106 u8 ACPI_INIT_GLOBAL(acpi_gbl_use_default_register_widths, TRUE);
107 107
108 /* 108 /*
109 * Optionally enable output from the AML Debug Object. 109 * Optionally enable output from the AML Debug Object.
110 */ 110 */
111 bool ACPI_INIT_GLOBAL(acpi_gbl_enable_aml_debug_object, FALSE); 111 bool ACPI_INIT_GLOBAL(acpi_gbl_enable_aml_debug_object, FALSE);
112 112
113 /* 113 /*
114 * Optionally copy the entire DSDT to local memory (instead of simply 114 * Optionally copy the entire DSDT to local memory (instead of simply
115 * mapping it.) There are some BIOSs that corrupt or replace the original 115 * mapping it.) There are some BIOSs that corrupt or replace the original
116 * DSDT, creating the need for this option. Default is FALSE, do not copy 116 * DSDT, creating the need for this option. Default is FALSE, do not copy
117 * the DSDT. 117 * the DSDT.
118 */ 118 */
119 u8 ACPI_INIT_GLOBAL(acpi_gbl_copy_dsdt_locally, FALSE); 119 u8 ACPI_INIT_GLOBAL(acpi_gbl_copy_dsdt_locally, FALSE);
120 120
121 /* 121 /*
122 * Optionally truncate I/O addresses to 16 bits. Provides compatibility 122 * Optionally truncate I/O addresses to 16 bits. Provides compatibility
123 * with other ACPI implementations. NOTE: During ACPICA initialization, 123 * with other ACPI implementations. NOTE: During ACPICA initialization,
124 * this value is set to TRUE if any Windows OSI strings have been 124 * this value is set to TRUE if any Windows OSI strings have been
125 * requested by the BIOS. 125 * requested by the BIOS.
126 */ 126 */
127 u8 ACPI_INIT_GLOBAL(acpi_gbl_truncate_io_addresses, FALSE); 127 u8 ACPI_INIT_GLOBAL(acpi_gbl_truncate_io_addresses, FALSE);
128 128
129 /* 129 /*
130 * Disable runtime checking and repair of values returned by control methods. 130 * Disable runtime checking and repair of values returned by control methods.
131 * Use only if the repair is causing a problem on a particular machine. 131 * Use only if the repair is causing a problem on a particular machine.
132 */ 132 */
133 u8 ACPI_INIT_GLOBAL(acpi_gbl_disable_auto_repair, FALSE); 133 u8 ACPI_INIT_GLOBAL(acpi_gbl_disable_auto_repair, FALSE);
134 134
135 /* acpi_gbl_FADT is a local copy of the FADT, converted to a common format. */ 135 /* acpi_gbl_FADT is a local copy of the FADT, converted to a common format. */
136 136
137 struct acpi_table_fadt acpi_gbl_FADT; 137 struct acpi_table_fadt acpi_gbl_FADT;
138 u32 acpi_current_gpe_count; 138 u32 acpi_current_gpe_count;
139 u32 acpi_gbl_trace_flags; 139 u32 acpi_gbl_trace_flags;
140 acpi_name acpi_gbl_trace_method_name; 140 acpi_name acpi_gbl_trace_method_name;
141 u8 acpi_gbl_system_awake_and_running; 141 u8 acpi_gbl_system_awake_and_running;
142 142
143 /* 143 /*
144 * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning 144 * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
145 * that the ACPI hardware is no longer required. A flag in the FADT indicates 145 * that the ACPI hardware is no longer required. A flag in the FADT indicates
146 * a reduced HW machine, and that flag is duplicated here for convenience. 146 * a reduced HW machine, and that flag is duplicated here for convenience.
147 */ 147 */
148 u8 acpi_gbl_reduced_hardware; 148 u8 acpi_gbl_reduced_hardware;
149 149
150 #endif /* DEFINE_ACPI_GLOBALS */ 150 #endif /* DEFINE_ACPI_GLOBALS */
151 151
152 /* Do not disassemble buffers to resource descriptors */ 152 /* Do not disassemble buffers to resource descriptors */
153 153
154 ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_no_resource_disassembly, FALSE); 154 ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_no_resource_disassembly, FALSE);
155 155
156 /***************************************************************************** 156 /*****************************************************************************
157 * 157 *
158 * ACPI Table globals 158 * ACPI Table globals
159 * 159 *
160 ****************************************************************************/ 160 ****************************************************************************/
161 161
162 /* 162 /*
163 * acpi_gbl_root_table_list is the master list of ACPI tables that were 163 * acpi_gbl_root_table_list is the master list of ACPI tables that were
164 * found in the RSDT/XSDT. 164 * found in the RSDT/XSDT.
165 */ 165 */
166 ACPI_EXTERN struct acpi_table_list acpi_gbl_root_table_list; 166 ACPI_EXTERN struct acpi_table_list acpi_gbl_root_table_list;
167 167
168 #if (!ACPI_REDUCED_HARDWARE) 168 #if (!ACPI_REDUCED_HARDWARE)
169 ACPI_EXTERN struct acpi_table_facs *acpi_gbl_FACS; 169 ACPI_EXTERN struct acpi_table_facs *acpi_gbl_FACS;
170 170
171 #endif /* !ACPI_REDUCED_HARDWARE */ 171 #endif /* !ACPI_REDUCED_HARDWARE */
172 172
173 /* These addresses are calculated from the FADT Event Block addresses */ 173 /* These addresses are calculated from the FADT Event Block addresses */
174 174
175 ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1a_status; 175 ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1a_status;
176 ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1a_enable; 176 ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1a_enable;
177 177
178 ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_status; 178 ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_status;
179 ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_enable; 179 ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_enable;
180 180
181 /* DSDT information. Used to check for DSDT corruption */ 181 /* DSDT information. Used to check for DSDT corruption */
182 182
183 ACPI_EXTERN struct acpi_table_header *acpi_gbl_DSDT; 183 ACPI_EXTERN struct acpi_table_header *acpi_gbl_DSDT;
184 ACPI_EXTERN struct acpi_table_header acpi_gbl_original_dsdt_header; 184 ACPI_EXTERN struct acpi_table_header acpi_gbl_original_dsdt_header;
185 185
186 /* 186 /*
187 * Handle both ACPI 1.0 and ACPI 2.0 Integer widths. The integer width is 187 * Handle both ACPI 1.0 and ACPI 2.0 Integer widths. The integer width is
188 * determined by the revision of the DSDT: If the DSDT revision is less than 188 * determined by the revision of the DSDT: If the DSDT revision is less than
189 * 2, use only the lower 32 bits of the internal 64-bit Integer. 189 * 2, use only the lower 32 bits of the internal 64-bit Integer.
190 */ 190 */
191 ACPI_EXTERN u8 acpi_gbl_integer_bit_width; 191 ACPI_EXTERN u8 acpi_gbl_integer_bit_width;
192 ACPI_EXTERN u8 acpi_gbl_integer_byte_width; 192 ACPI_EXTERN u8 acpi_gbl_integer_byte_width;
193 ACPI_EXTERN u8 acpi_gbl_integer_nybble_width; 193 ACPI_EXTERN u8 acpi_gbl_integer_nybble_width;
194 194
195 /***************************************************************************** 195 /*****************************************************************************
196 * 196 *
197 * Mutual exclusion within ACPICA subsystem 197 * Mutual exclusion within ACPICA subsystem
198 * 198 *
199 ****************************************************************************/ 199 ****************************************************************************/
200 200
201 /* 201 /*
202 * Predefined mutex objects. This array contains the 202 * Predefined mutex objects. This array contains the
203 * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs. 203 * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs.
204 * (The table maps local handles to the real OS handles) 204 * (The table maps local handles to the real OS handles)
205 */ 205 */
206 ACPI_EXTERN struct acpi_mutex_info acpi_gbl_mutex_info[ACPI_NUM_MUTEX]; 206 ACPI_EXTERN struct acpi_mutex_info acpi_gbl_mutex_info[ACPI_NUM_MUTEX];
207 207
208 /* 208 /*
209 * Global lock mutex is an actual AML mutex object 209 * Global lock mutex is an actual AML mutex object
210 * Global lock semaphore works in conjunction with the actual global lock 210 * Global lock semaphore works in conjunction with the actual global lock
211 * Global lock spinlock is used for "pending" handshake 211 * Global lock spinlock is used for "pending" handshake
212 */ 212 */
213 ACPI_EXTERN union acpi_operand_object *acpi_gbl_global_lock_mutex; 213 ACPI_EXTERN union acpi_operand_object *acpi_gbl_global_lock_mutex;
214 ACPI_EXTERN acpi_semaphore acpi_gbl_global_lock_semaphore; 214 ACPI_EXTERN acpi_semaphore acpi_gbl_global_lock_semaphore;
215 ACPI_EXTERN acpi_spinlock acpi_gbl_global_lock_pending_lock; 215 ACPI_EXTERN acpi_spinlock acpi_gbl_global_lock_pending_lock;
216 ACPI_EXTERN u16 acpi_gbl_global_lock_handle; 216 ACPI_EXTERN u16 acpi_gbl_global_lock_handle;
217 ACPI_EXTERN u8 acpi_gbl_global_lock_acquired; 217 ACPI_EXTERN u8 acpi_gbl_global_lock_acquired;
218 ACPI_EXTERN u8 acpi_gbl_global_lock_present; 218 ACPI_EXTERN u8 acpi_gbl_global_lock_present;
219 ACPI_EXTERN u8 acpi_gbl_global_lock_pending; 219 ACPI_EXTERN u8 acpi_gbl_global_lock_pending;
220 220
221 /* 221 /*
222 * Spinlocks are used for interfaces that can be possibly called at 222 * Spinlocks are used for interfaces that can be possibly called at
223 * interrupt level 223 * interrupt level
224 */ 224 */
225 ACPI_EXTERN acpi_spinlock acpi_gbl_gpe_lock; /* For GPE data structs and registers */ 225 ACPI_EXTERN acpi_spinlock acpi_gbl_gpe_lock; /* For GPE data structs and registers */
226 ACPI_EXTERN acpi_spinlock acpi_gbl_hardware_lock; /* For ACPI H/W except GPE registers */ 226 ACPI_EXTERN acpi_spinlock acpi_gbl_hardware_lock; /* For ACPI H/W except GPE registers */
227 227
228 /* Mutex for _OSI support */ 228 /* Mutex for _OSI support */
229 229
230 ACPI_EXTERN acpi_mutex acpi_gbl_osi_mutex; 230 ACPI_EXTERN acpi_mutex acpi_gbl_osi_mutex;
231 231
232 /* Reader/Writer lock is used for namespace walk and dynamic table unload */ 232 /* Reader/Writer lock is used for namespace walk and dynamic table unload */
233 233
234 ACPI_EXTERN struct acpi_rw_lock acpi_gbl_namespace_rw_lock; 234 ACPI_EXTERN struct acpi_rw_lock acpi_gbl_namespace_rw_lock;
235 235
236 /***************************************************************************** 236 /*****************************************************************************
237 * 237 *
238 * Miscellaneous globals 238 * Miscellaneous globals
239 * 239 *
240 ****************************************************************************/ 240 ****************************************************************************/
241 241
242 /* Object caches */ 242 /* Object caches */
243 243
244 ACPI_EXTERN acpi_cache_t *acpi_gbl_namespace_cache; 244 ACPI_EXTERN acpi_cache_t *acpi_gbl_namespace_cache;
245 ACPI_EXTERN acpi_cache_t *acpi_gbl_state_cache; 245 ACPI_EXTERN acpi_cache_t *acpi_gbl_state_cache;
246 ACPI_EXTERN acpi_cache_t *acpi_gbl_ps_node_cache; 246 ACPI_EXTERN acpi_cache_t *acpi_gbl_ps_node_cache;
247 ACPI_EXTERN acpi_cache_t *acpi_gbl_ps_node_ext_cache; 247 ACPI_EXTERN acpi_cache_t *acpi_gbl_ps_node_ext_cache;
248 ACPI_EXTERN acpi_cache_t *acpi_gbl_operand_cache; 248 ACPI_EXTERN acpi_cache_t *acpi_gbl_operand_cache;
249 249
250 /* Global handlers */ 250 /* Global handlers */
251 251
252 ACPI_EXTERN struct acpi_global_notify_handler acpi_gbl_global_notify[2]; 252 ACPI_EXTERN struct acpi_global_notify_handler acpi_gbl_global_notify[2];
253 ACPI_EXTERN acpi_exception_handler acpi_gbl_exception_handler; 253 ACPI_EXTERN acpi_exception_handler acpi_gbl_exception_handler;
254 ACPI_EXTERN acpi_init_handler acpi_gbl_init_handler; 254 ACPI_EXTERN acpi_init_handler acpi_gbl_init_handler;
255 ACPI_EXTERN acpi_table_handler acpi_gbl_table_handler; 255 ACPI_EXTERN acpi_table_handler acpi_gbl_table_handler;
256 ACPI_EXTERN void *acpi_gbl_table_handler_context; 256 ACPI_EXTERN void *acpi_gbl_table_handler_context;
257 ACPI_EXTERN struct acpi_walk_state *acpi_gbl_breakpoint_walk; 257 ACPI_EXTERN struct acpi_walk_state *acpi_gbl_breakpoint_walk;
258 ACPI_EXTERN acpi_interface_handler acpi_gbl_interface_handler; 258 ACPI_EXTERN acpi_interface_handler acpi_gbl_interface_handler;
259 259
260 /* Owner ID support */ 260 /* Owner ID support */
261 261
262 ACPI_EXTERN u32 acpi_gbl_owner_id_mask[ACPI_NUM_OWNERID_MASKS]; 262 ACPI_EXTERN u32 acpi_gbl_owner_id_mask[ACPI_NUM_OWNERID_MASKS];
263 ACPI_EXTERN u8 acpi_gbl_last_owner_id_index; 263 ACPI_EXTERN u8 acpi_gbl_last_owner_id_index;
264 ACPI_EXTERN u8 acpi_gbl_next_owner_id_offset; 264 ACPI_EXTERN u8 acpi_gbl_next_owner_id_offset;
265 265
266 /* Initialization sequencing */ 266 /* Initialization sequencing */
267 267
268 ACPI_EXTERN u8 acpi_gbl_reg_methods_executed; 268 ACPI_EXTERN u8 acpi_gbl_reg_methods_executed;
269 269
270 /* Misc */ 270 /* Misc */
271 271
272 ACPI_EXTERN u32 acpi_gbl_original_mode; 272 ACPI_EXTERN u32 acpi_gbl_original_mode;
273 ACPI_EXTERN u32 acpi_gbl_rsdp_original_location; 273 ACPI_EXTERN u32 acpi_gbl_rsdp_original_location;
274 ACPI_EXTERN u32 acpi_gbl_ns_lookup_count; 274 ACPI_EXTERN u32 acpi_gbl_ns_lookup_count;
275 ACPI_EXTERN u32 acpi_gbl_ps_find_count; 275 ACPI_EXTERN u32 acpi_gbl_ps_find_count;
276 ACPI_EXTERN u16 acpi_gbl_pm1_enable_register_save; 276 ACPI_EXTERN u16 acpi_gbl_pm1_enable_register_save;
277 ACPI_EXTERN u8 acpi_gbl_debugger_configuration; 277 ACPI_EXTERN u8 acpi_gbl_debugger_configuration;
278 ACPI_EXTERN u8 acpi_gbl_step_to_next_call; 278 ACPI_EXTERN u8 acpi_gbl_step_to_next_call;
279 ACPI_EXTERN u8 acpi_gbl_acpi_hardware_present; 279 ACPI_EXTERN u8 acpi_gbl_acpi_hardware_present;
280 ACPI_EXTERN u8 acpi_gbl_events_initialized; 280 ACPI_EXTERN u8 acpi_gbl_events_initialized;
281 ACPI_EXTERN u8 acpi_gbl_osi_data; 281 ACPI_EXTERN u8 acpi_gbl_osi_data;
282 ACPI_EXTERN struct acpi_interface_info *acpi_gbl_supported_interfaces; 282 ACPI_EXTERN struct acpi_interface_info *acpi_gbl_supported_interfaces;
283 ACPI_EXTERN struct acpi_address_range 283 ACPI_EXTERN struct acpi_address_range
284 *acpi_gbl_address_range_list[ACPI_ADDRESS_RANGE_MAX]; 284 *acpi_gbl_address_range_list[ACPI_ADDRESS_RANGE_MAX];
285 285
286 #ifndef DEFINE_ACPI_GLOBALS 286 #ifndef DEFINE_ACPI_GLOBALS
287 287
288 /* Other miscellaneous */ 288 /* Other miscellaneous */
289 289
290 extern u8 acpi_gbl_shutdown; 290 extern u8 acpi_gbl_shutdown;
291 extern u32 acpi_gbl_startup_flags; 291 extern u32 acpi_gbl_startup_flags;
292 extern const char *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT]; 292 extern const char *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT];
293 extern const char *acpi_gbl_lowest_dstate_names[ACPI_NUM_sx_w_METHODS]; 293 extern const char *acpi_gbl_lowest_dstate_names[ACPI_NUM_sx_w_METHODS];
294 extern const char *acpi_gbl_highest_dstate_names[ACPI_NUM_sx_d_METHODS]; 294 extern const char *acpi_gbl_highest_dstate_names[ACPI_NUM_sx_d_METHODS];
295 extern const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES]; 295 extern const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES];
296 extern const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS]; 296 extern const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS];
297 297
298 #endif 298 #endif
299 299
300 #ifdef ACPI_DBG_TRACK_ALLOCATIONS 300 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
301 301
302 /* Lists for tracking memory allocations */ 302 /* Lists for tracking memory allocations */
303 303
304 ACPI_EXTERN struct acpi_memory_list *acpi_gbl_global_list; 304 ACPI_EXTERN struct acpi_memory_list *acpi_gbl_global_list;
305 ACPI_EXTERN struct acpi_memory_list *acpi_gbl_ns_node_list; 305 ACPI_EXTERN struct acpi_memory_list *acpi_gbl_ns_node_list;
306 ACPI_EXTERN u8 acpi_gbl_display_final_mem_stats; 306 ACPI_EXTERN u8 acpi_gbl_display_final_mem_stats;
307 ACPI_EXTERN u8 acpi_gbl_disable_mem_tracking; 307 ACPI_EXTERN u8 acpi_gbl_disable_mem_tracking;
308 #endif 308 #endif
309 309
310 /***************************************************************************** 310 /*****************************************************************************
311 * 311 *
312 * Namespace globals 312 * Namespace globals
313 * 313 *
314 ****************************************************************************/ 314 ****************************************************************************/
315 315
316 #if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) 316 #if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
317 #define NUM_PREDEFINED_NAMES 10 317 #define NUM_PREDEFINED_NAMES 10
318 #else 318 #else
319 #define NUM_PREDEFINED_NAMES 9 319 #define NUM_PREDEFINED_NAMES 9
320 #endif 320 #endif
321 321
322 ACPI_EXTERN struct acpi_namespace_node acpi_gbl_root_node_struct; 322 ACPI_EXTERN struct acpi_namespace_node acpi_gbl_root_node_struct;
323 ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_root_node; 323 ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_root_node;
324 ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_fadt_gpe_device; 324 ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_fadt_gpe_device;
325 ACPI_EXTERN union acpi_operand_object *acpi_gbl_module_code_list; 325 ACPI_EXTERN union acpi_operand_object *acpi_gbl_module_code_list;
326 326
327 extern const u8 acpi_gbl_ns_properties[ACPI_NUM_NS_TYPES]; 327 extern const u8 acpi_gbl_ns_properties[ACPI_NUM_NS_TYPES];
328 extern const struct acpi_predefined_names 328 extern const struct acpi_predefined_names
329 acpi_gbl_pre_defined_names[NUM_PREDEFINED_NAMES]; 329 acpi_gbl_pre_defined_names[NUM_PREDEFINED_NAMES];
330 330
331 #ifdef ACPI_DEBUG_OUTPUT 331 #ifdef ACPI_DEBUG_OUTPUT
332 ACPI_EXTERN u32 acpi_gbl_current_node_count; 332 ACPI_EXTERN u32 acpi_gbl_current_node_count;
333 ACPI_EXTERN u32 acpi_gbl_current_node_size; 333 ACPI_EXTERN u32 acpi_gbl_current_node_size;
334 ACPI_EXTERN u32 acpi_gbl_max_concurrent_node_count; 334 ACPI_EXTERN u32 acpi_gbl_max_concurrent_node_count;
335 ACPI_EXTERN acpi_size *acpi_gbl_entry_stack_pointer; 335 ACPI_EXTERN acpi_size *acpi_gbl_entry_stack_pointer;
336 ACPI_EXTERN acpi_size *acpi_gbl_lowest_stack_pointer; 336 ACPI_EXTERN acpi_size *acpi_gbl_lowest_stack_pointer;
337 ACPI_EXTERN u32 acpi_gbl_deepest_nesting; 337 ACPI_EXTERN u32 acpi_gbl_deepest_nesting;
338 #endif 338 #endif
339 339
340 /***************************************************************************** 340 /*****************************************************************************
341 * 341 *
342 * Interpreter globals 342 * Interpreter globals
343 * 343 *
344 ****************************************************************************/ 344 ****************************************************************************/
345 345
346 ACPI_EXTERN struct acpi_thread_state *acpi_gbl_current_walk_list; 346 ACPI_EXTERN struct acpi_thread_state *acpi_gbl_current_walk_list;
347 347
348 /* Control method single step flag */ 348 /* Control method single step flag */
349 349
350 ACPI_EXTERN u8 acpi_gbl_cm_single_step; 350 ACPI_EXTERN u8 acpi_gbl_cm_single_step;
351 351
352 /***************************************************************************** 352 /*****************************************************************************
353 * 353 *
354 * Hardware globals 354 * Hardware globals
355 * 355 *
356 ****************************************************************************/ 356 ****************************************************************************/
357 357
358 extern struct acpi_bit_register_info 358 extern struct acpi_bit_register_info
359 acpi_gbl_bit_register_info[ACPI_NUM_BITREG]; 359 acpi_gbl_bit_register_info[ACPI_NUM_BITREG];
360 ACPI_EXTERN u8 acpi_gbl_sleep_type_a; 360 ACPI_EXTERN u8 acpi_gbl_sleep_type_a;
361 ACPI_EXTERN u8 acpi_gbl_sleep_type_b; 361 ACPI_EXTERN u8 acpi_gbl_sleep_type_b;
362 362
363 /***************************************************************************** 363 /*****************************************************************************
364 * 364 *
365 * Event and GPE globals 365 * Event and GPE globals
366 * 366 *
367 ****************************************************************************/ 367 ****************************************************************************/
368 368
369 #if (!ACPI_REDUCED_HARDWARE) 369 #if (!ACPI_REDUCED_HARDWARE)
370 370
371 ACPI_EXTERN u8 acpi_gbl_all_gpes_initialized; 371 ACPI_EXTERN u8 acpi_gbl_all_gpes_initialized;
372 ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head; 372 ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head;
373 ACPI_EXTERN struct acpi_gpe_block_info 373 ACPI_EXTERN struct acpi_gpe_block_info
374 *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS]; 374 *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS];
375 ACPI_EXTERN acpi_gbl_event_handler acpi_gbl_global_event_handler; 375 ACPI_EXTERN acpi_gbl_event_handler acpi_gbl_global_event_handler;
376 ACPI_EXTERN void *acpi_gbl_global_event_handler_context; 376 ACPI_EXTERN void *acpi_gbl_global_event_handler_context;
377 ACPI_EXTERN struct acpi_fixed_event_handler 377 ACPI_EXTERN struct acpi_fixed_event_handler
378 acpi_gbl_fixed_event_handlers[ACPI_NUM_FIXED_EVENTS]; 378 acpi_gbl_fixed_event_handlers[ACPI_NUM_FIXED_EVENTS];
379 extern struct acpi_fixed_event_info 379 extern struct acpi_fixed_event_info
380 acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS]; 380 acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS];
381 381
382 #endif /* !ACPI_REDUCED_HARDWARE */ 382 #endif /* !ACPI_REDUCED_HARDWARE */
383 383
384 /***************************************************************************** 384 /*****************************************************************************
385 * 385 *
386 * Debug support 386 * Debug support
387 * 387 *
388 ****************************************************************************/ 388 ****************************************************************************/
389 389
390 /* Procedure nesting level for debug output */ 390 /* Procedure nesting level for debug output */
391 391
392 extern u32 acpi_gbl_nesting_level; 392 extern u32 acpi_gbl_nesting_level;
393 393
394 /* Event counters */ 394 /* Event counters */
395 395
396 ACPI_EXTERN u32 acpi_gpe_count; 396 ACPI_EXTERN u32 acpi_gpe_count;
397 ACPI_EXTERN u32 acpi_fixed_event_count[ACPI_NUM_FIXED_EVENTS]; 397 ACPI_EXTERN u32 acpi_fixed_event_count[ACPI_NUM_FIXED_EVENTS];
398 398
399 /* Support for dynamic control method tracing mechanism */ 399 /* Support for dynamic control method tracing mechanism */
400 400
401 ACPI_EXTERN u32 acpi_gbl_original_dbg_level; 401 ACPI_EXTERN u32 acpi_gbl_original_dbg_level;
402 ACPI_EXTERN u32 acpi_gbl_original_dbg_layer; 402 ACPI_EXTERN u32 acpi_gbl_original_dbg_layer;
403 ACPI_EXTERN u32 acpi_gbl_trace_dbg_level; 403 ACPI_EXTERN u32 acpi_gbl_trace_dbg_level;
404 ACPI_EXTERN u32 acpi_gbl_trace_dbg_layer; 404 ACPI_EXTERN u32 acpi_gbl_trace_dbg_layer;
405 405
406 /***************************************************************************** 406 /*****************************************************************************
407 * 407 *
408 * Debugger globals 408 * Debugger and Disassembler globals
409 * 409 *
410 ****************************************************************************/ 410 ****************************************************************************/
411 411
412 ACPI_EXTERN u8 acpi_gbl_db_output_flags; 412 ACPI_EXTERN u8 acpi_gbl_db_output_flags;
413 413
414 #ifdef ACPI_DISASSEMBLER 414 #ifdef ACPI_DISASSEMBLER
415
416 u8 ACPI_INIT_GLOBAL(acpi_gbl_ignore_noop_operator, FALSE);
415 417
416 ACPI_EXTERN u8 acpi_gbl_db_opt_disasm; 418 ACPI_EXTERN u8 acpi_gbl_db_opt_disasm;
417 ACPI_EXTERN u8 acpi_gbl_db_opt_verbose; 419 ACPI_EXTERN u8 acpi_gbl_db_opt_verbose;
418 ACPI_EXTERN struct acpi_external_list *acpi_gbl_external_list; 420 ACPI_EXTERN struct acpi_external_list *acpi_gbl_external_list;
419 ACPI_EXTERN struct acpi_external_file *acpi_gbl_external_file_list; 421 ACPI_EXTERN struct acpi_external_file *acpi_gbl_external_file_list;
420 #endif 422 #endif
421 423
422 #ifdef ACPI_DEBUGGER 424 #ifdef ACPI_DEBUGGER
423 425
424 extern u8 acpi_gbl_method_executing; 426 extern u8 acpi_gbl_method_executing;
425 extern u8 acpi_gbl_abort_method; 427 extern u8 acpi_gbl_abort_method;
426 extern u8 acpi_gbl_db_terminate_threads; 428 extern u8 acpi_gbl_db_terminate_threads;
427 429
428 ACPI_EXTERN u8 acpi_gbl_db_opt_tables; 430 ACPI_EXTERN u8 acpi_gbl_db_opt_tables;
429 ACPI_EXTERN u8 acpi_gbl_db_opt_stats; 431 ACPI_EXTERN u8 acpi_gbl_db_opt_stats;
430 ACPI_EXTERN u8 acpi_gbl_db_opt_ini_methods; 432 ACPI_EXTERN u8 acpi_gbl_db_opt_ini_methods;
431 ACPI_EXTERN u8 acpi_gbl_db_opt_no_region_support; 433 ACPI_EXTERN u8 acpi_gbl_db_opt_no_region_support;
432 434
433 ACPI_EXTERN char *acpi_gbl_db_args[ACPI_DEBUGGER_MAX_ARGS]; 435 ACPI_EXTERN char *acpi_gbl_db_args[ACPI_DEBUGGER_MAX_ARGS];
434 ACPI_EXTERN acpi_object_type acpi_gbl_db_arg_types[ACPI_DEBUGGER_MAX_ARGS]; 436 ACPI_EXTERN acpi_object_type acpi_gbl_db_arg_types[ACPI_DEBUGGER_MAX_ARGS];
435 ACPI_EXTERN char acpi_gbl_db_line_buf[ACPI_DB_LINE_BUFFER_SIZE]; 437 ACPI_EXTERN char acpi_gbl_db_line_buf[ACPI_DB_LINE_BUFFER_SIZE];
436 ACPI_EXTERN char acpi_gbl_db_parsed_buf[ACPI_DB_LINE_BUFFER_SIZE]; 438 ACPI_EXTERN char acpi_gbl_db_parsed_buf[ACPI_DB_LINE_BUFFER_SIZE];
437 ACPI_EXTERN char acpi_gbl_db_scope_buf[80]; 439 ACPI_EXTERN char acpi_gbl_db_scope_buf[80];
438 ACPI_EXTERN char acpi_gbl_db_debug_filename[80]; 440 ACPI_EXTERN char acpi_gbl_db_debug_filename[80];
439 ACPI_EXTERN u8 acpi_gbl_db_output_to_file; 441 ACPI_EXTERN u8 acpi_gbl_db_output_to_file;
440 ACPI_EXTERN char *acpi_gbl_db_buffer; 442 ACPI_EXTERN char *acpi_gbl_db_buffer;
441 ACPI_EXTERN char *acpi_gbl_db_filename; 443 ACPI_EXTERN char *acpi_gbl_db_filename;
442 ACPI_EXTERN u32 acpi_gbl_db_debug_level; 444 ACPI_EXTERN u32 acpi_gbl_db_debug_level;
443 ACPI_EXTERN u32 acpi_gbl_db_console_debug_level; 445 ACPI_EXTERN u32 acpi_gbl_db_console_debug_level;
444 ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_db_scope_node; 446 ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_db_scope_node;
445 447
446 /* 448 /*
447 * Statistic globals 449 * Statistic globals
448 */ 450 */
449 ACPI_EXTERN u16 acpi_gbl_obj_type_count[ACPI_TYPE_NS_NODE_MAX + 1]; 451 ACPI_EXTERN u16 acpi_gbl_obj_type_count[ACPI_TYPE_NS_NODE_MAX + 1];
450 ACPI_EXTERN u16 acpi_gbl_node_type_count[ACPI_TYPE_NS_NODE_MAX + 1]; 452 ACPI_EXTERN u16 acpi_gbl_node_type_count[ACPI_TYPE_NS_NODE_MAX + 1];
451 ACPI_EXTERN u16 acpi_gbl_obj_type_count_misc; 453 ACPI_EXTERN u16 acpi_gbl_obj_type_count_misc;
452 ACPI_EXTERN u16 acpi_gbl_node_type_count_misc; 454 ACPI_EXTERN u16 acpi_gbl_node_type_count_misc;
453 ACPI_EXTERN u32 acpi_gbl_num_nodes; 455 ACPI_EXTERN u32 acpi_gbl_num_nodes;
454 ACPI_EXTERN u32 acpi_gbl_num_objects; 456 ACPI_EXTERN u32 acpi_gbl_num_objects;
455 457
456 ACPI_EXTERN u32 acpi_gbl_size_of_parse_tree; 458 ACPI_EXTERN u32 acpi_gbl_size_of_parse_tree;
457 ACPI_EXTERN u32 acpi_gbl_size_of_method_trees; 459 ACPI_EXTERN u32 acpi_gbl_size_of_method_trees;
458 ACPI_EXTERN u32 acpi_gbl_size_of_node_entries; 460 ACPI_EXTERN u32 acpi_gbl_size_of_node_entries;
459 ACPI_EXTERN u32 acpi_gbl_size_of_acpi_objects; 461 ACPI_EXTERN u32 acpi_gbl_size_of_acpi_objects;
460 462
461 #endif /* ACPI_DEBUGGER */ 463 #endif /* ACPI_DEBUGGER */
462 464
463 /***************************************************************************** 465 /*****************************************************************************
464 * 466 *
465 * Info/help support 467 * Info/help support
466 * 468 *
467 ****************************************************************************/ 469 ****************************************************************************/
468 470
469 extern const struct ah_predefined_name asl_predefined_info[]; 471 extern const struct ah_predefined_name asl_predefined_info[];
470 472
471 #endif /* __ACGLOBAL_H__ */ 473 #endif /* __ACGLOBAL_H__ */
472 474