]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /****************************************************************************** |
2 | * | |
3 | * Name: acexcep.h - Exception codes returned by the ACPI subsystem | |
4 | * | |
5 | *****************************************************************************/ | |
6 | ||
7 | /* | |
25f044e6 | 8 | * Copyright (C) 2000 - 2013, Intel Corp. |
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 __ACEXCEP_H__ | |
45 | #define __ACEXCEP_H__ | |
46 | ||
995b9a9d BM |
47 | /* This module contains all possible exception codes for acpi_status */ |
48 | ||
1da177e4 | 49 | /* |
995b9a9d | 50 | * Exception code classes |
1da177e4 | 51 | */ |
1da177e4 LT |
52 | #define AE_CODE_ENVIRONMENTAL 0x0000 |
53 | #define AE_CODE_PROGRAMMER 0x1000 | |
54 | #define AE_CODE_ACPI_TABLES 0x2000 | |
55 | #define AE_CODE_AML 0x3000 | |
56 | #define AE_CODE_CONTROL 0x4000 | |
bc7db145 | 57 | #define AE_CODE_MAX 0x4000 |
1da177e4 LT |
58 | #define AE_CODE_MASK 0xF000 |
59 | ||
995b9a9d BM |
60 | /* |
61 | * Macros to insert the exception code classes | |
62 | */ | |
63 | #define EXCEP_ENV(code) ((acpi_status) (code | AE_CODE_ENVIRONMENTAL)) | |
64 | #define EXCEP_PGM(code) ((acpi_status) (code | AE_CODE_PROGRAMMER)) | |
65 | #define EXCEP_TBL(code) ((acpi_status) (code | AE_CODE_ACPI_TABLES)) | |
66 | #define EXCEP_AML(code) ((acpi_status) (code | AE_CODE_AML)) | |
67 | #define EXCEP_CTL(code) ((acpi_status) (code | AE_CODE_CONTROL)) | |
68 | ||
69 | /* | |
70 | * Success is always zero, failure is non-zero | |
71 | */ | |
1da177e4 LT |
72 | #define ACPI_SUCCESS(a) (!(a)) |
73 | #define ACPI_FAILURE(a) (a) | |
74 | ||
09f98a82 | 75 | #define ACPI_SKIP(a) (a == AE_CTRL_SKIP) |
1da177e4 LT |
76 | #define AE_OK (acpi_status) 0x0000 |
77 | ||
78 | /* | |
79 | * Environmental exceptions | |
80 | */ | |
995b9a9d BM |
81 | #define AE_ERROR EXCEP_ENV (0x0001) |
82 | #define AE_NO_ACPI_TABLES EXCEP_ENV (0x0002) | |
83 | #define AE_NO_NAMESPACE EXCEP_ENV (0x0003) | |
84 | #define AE_NO_MEMORY EXCEP_ENV (0x0004) | |
85 | #define AE_NOT_FOUND EXCEP_ENV (0x0005) | |
86 | #define AE_NOT_EXIST EXCEP_ENV (0x0006) | |
87 | #define AE_ALREADY_EXISTS EXCEP_ENV (0x0007) | |
88 | #define AE_TYPE EXCEP_ENV (0x0008) | |
89 | #define AE_NULL_OBJECT EXCEP_ENV (0x0009) | |
90 | #define AE_NULL_ENTRY EXCEP_ENV (0x000A) | |
91 | #define AE_BUFFER_OVERFLOW EXCEP_ENV (0x000B) | |
92 | #define AE_STACK_OVERFLOW EXCEP_ENV (0x000C) | |
93 | #define AE_STACK_UNDERFLOW EXCEP_ENV (0x000D) | |
94 | #define AE_NOT_IMPLEMENTED EXCEP_ENV (0x000E) | |
95 | #define AE_SUPPORT EXCEP_ENV (0x000F) | |
96 | #define AE_LIMIT EXCEP_ENV (0x0010) | |
97 | #define AE_TIME EXCEP_ENV (0x0011) | |
98 | #define AE_ACQUIRE_DEADLOCK EXCEP_ENV (0x0012) | |
99 | #define AE_RELEASE_DEADLOCK EXCEP_ENV (0x0013) | |
100 | #define AE_NOT_ACQUIRED EXCEP_ENV (0x0014) | |
101 | #define AE_ALREADY_ACQUIRED EXCEP_ENV (0x0015) | |
102 | #define AE_NO_HARDWARE_RESPONSE EXCEP_ENV (0x0016) | |
103 | #define AE_NO_GLOBAL_LOCK EXCEP_ENV (0x0017) | |
104 | #define AE_ABORT_METHOD EXCEP_ENV (0x0018) | |
105 | #define AE_SAME_HANDLER EXCEP_ENV (0x0019) | |
106 | #define AE_NO_HANDLER EXCEP_ENV (0x001A) | |
107 | #define AE_OWNER_ID_LIMIT EXCEP_ENV (0x001B) | |
108 | #define AE_NOT_CONFIGURED EXCEP_ENV (0x001C) | |
1da177e4 | 109 | |
33620c54 | 110 | #define AE_CODE_ENV_MAX 0x001C |
1da177e4 LT |
111 | |
112 | /* | |
113 | * Programmer exceptions | |
114 | */ | |
995b9a9d BM |
115 | #define AE_BAD_PARAMETER EXCEP_PGM (0x0001) |
116 | #define AE_BAD_CHARACTER EXCEP_PGM (0x0002) | |
117 | #define AE_BAD_PATHNAME EXCEP_PGM (0x0003) | |
118 | #define AE_BAD_DATA EXCEP_PGM (0x0004) | |
119 | #define AE_BAD_HEX_CONSTANT EXCEP_PGM (0x0005) | |
120 | #define AE_BAD_OCTAL_CONSTANT EXCEP_PGM (0x0006) | |
121 | #define AE_BAD_DECIMAL_CONSTANT EXCEP_PGM (0x0007) | |
122 | #define AE_MISSING_ARGUMENTS EXCEP_PGM (0x0008) | |
123 | #define AE_BAD_ADDRESS EXCEP_PGM (0x0009) | |
1da177e4 | 124 | |
ac0c8450 | 125 | #define AE_CODE_PGM_MAX 0x0009 |
1da177e4 | 126 | |
1da177e4 LT |
127 | /* |
128 | * Acpi table exceptions | |
129 | */ | |
995b9a9d BM |
130 | #define AE_BAD_SIGNATURE EXCEP_TBL (0x0001) |
131 | #define AE_BAD_HEADER EXCEP_TBL (0x0002) | |
132 | #define AE_BAD_CHECKSUM EXCEP_TBL (0x0003) | |
133 | #define AE_BAD_VALUE EXCEP_TBL (0x0004) | |
134 | #define AE_INVALID_TABLE_LENGTH EXCEP_TBL (0x0005) | |
1da177e4 | 135 | |
65f4692c | 136 | #define AE_CODE_TBL_MAX 0x0005 |
1da177e4 | 137 | |
1da177e4 | 138 | /* |
73a3090a | 139 | * AML exceptions. These are caused by problems with |
1da177e4 LT |
140 | * the actual AML byte stream |
141 | */ | |
995b9a9d BM |
142 | #define AE_AML_BAD_OPCODE EXCEP_AML (0x0001) |
143 | #define AE_AML_NO_OPERAND EXCEP_AML (0x0002) | |
144 | #define AE_AML_OPERAND_TYPE EXCEP_AML (0x0003) | |
145 | #define AE_AML_OPERAND_VALUE EXCEP_AML (0x0004) | |
146 | #define AE_AML_UNINITIALIZED_LOCAL EXCEP_AML (0x0005) | |
147 | #define AE_AML_UNINITIALIZED_ARG EXCEP_AML (0x0006) | |
148 | #define AE_AML_UNINITIALIZED_ELEMENT EXCEP_AML (0x0007) | |
149 | #define AE_AML_NUMERIC_OVERFLOW EXCEP_AML (0x0008) | |
150 | #define AE_AML_REGION_LIMIT EXCEP_AML (0x0009) | |
151 | #define AE_AML_BUFFER_LIMIT EXCEP_AML (0x000A) | |
152 | #define AE_AML_PACKAGE_LIMIT EXCEP_AML (0x000B) | |
153 | #define AE_AML_DIVIDE_BY_ZERO EXCEP_AML (0x000C) | |
154 | #define AE_AML_BAD_NAME EXCEP_AML (0x000D) | |
155 | #define AE_AML_NAME_NOT_FOUND EXCEP_AML (0x000E) | |
156 | #define AE_AML_INTERNAL EXCEP_AML (0x000F) | |
157 | #define AE_AML_INVALID_SPACE_ID EXCEP_AML (0x0010) | |
158 | #define AE_AML_STRING_LIMIT EXCEP_AML (0x0011) | |
159 | #define AE_AML_NO_RETURN_VALUE EXCEP_AML (0x0012) | |
160 | #define AE_AML_METHOD_LIMIT EXCEP_AML (0x0013) | |
161 | #define AE_AML_NOT_OWNER EXCEP_AML (0x0014) | |
162 | #define AE_AML_MUTEX_ORDER EXCEP_AML (0x0015) | |
163 | #define AE_AML_MUTEX_NOT_ACQUIRED EXCEP_AML (0x0016) | |
164 | #define AE_AML_INVALID_RESOURCE_TYPE EXCEP_AML (0x0017) | |
165 | #define AE_AML_INVALID_INDEX EXCEP_AML (0x0018) | |
166 | #define AE_AML_REGISTER_LIMIT EXCEP_AML (0x0019) | |
167 | #define AE_AML_NO_WHILE EXCEP_AML (0x001A) | |
168 | #define AE_AML_ALIGNMENT EXCEP_AML (0x001B) | |
169 | #define AE_AML_NO_RESOURCE_END_TAG EXCEP_AML (0x001C) | |
170 | #define AE_AML_BAD_RESOURCE_VALUE EXCEP_AML (0x001D) | |
171 | #define AE_AML_CIRCULAR_REFERENCE EXCEP_AML (0x001E) | |
172 | #define AE_AML_BAD_RESOURCE_LENGTH EXCEP_AML (0x001F) | |
173 | #define AE_AML_ILLEGAL_ADDRESS EXCEP_AML (0x0020) | |
174 | #define AE_AML_INFINITE_LOOP EXCEP_AML (0x0021) | |
1da177e4 | 175 | |
fc374457 | 176 | #define AE_CODE_AML_MAX 0x0021 |
1da177e4 LT |
177 | |
178 | /* | |
179 | * Internal exceptions used for control | |
180 | */ | |
995b9a9d BM |
181 | #define AE_CTRL_RETURN_VALUE EXCEP_CTL (0x0001) |
182 | #define AE_CTRL_PENDING EXCEP_CTL (0x0002) | |
183 | #define AE_CTRL_TERMINATE EXCEP_CTL (0x0003) | |
184 | #define AE_CTRL_TRUE EXCEP_CTL (0x0004) | |
185 | #define AE_CTRL_FALSE EXCEP_CTL (0x0005) | |
186 | #define AE_CTRL_DEPTH EXCEP_CTL (0x0006) | |
187 | #define AE_CTRL_END EXCEP_CTL (0x0007) | |
188 | #define AE_CTRL_TRANSFER EXCEP_CTL (0x0008) | |
189 | #define AE_CTRL_BREAK EXCEP_CTL (0x0009) | |
190 | #define AE_CTRL_CONTINUE EXCEP_CTL (0x000A) | |
191 | #define AE_CTRL_SKIP EXCEP_CTL (0x000B) | |
192 | #define AE_CTRL_PARSE_CONTINUE EXCEP_CTL (0x000C) | |
193 | #define AE_CTRL_PARSE_PENDING EXCEP_CTL (0x000D) | |
1da177e4 | 194 | |
4d0b4af9 | 195 | #define AE_CODE_CTRL_MAX 0x000D |
1da177e4 | 196 | |
50df4d8b BM |
197 | /* Exception strings for acpi_format_exception */ |
198 | ||
bc7db145 | 199 | #ifdef ACPI_DEFINE_EXCEPTION_TABLE |
1da177e4 LT |
200 | |
201 | /* | |
202 | * String versions of the exception codes above | |
203 | * These strings must match the corresponding defines exactly | |
204 | */ | |
4be44fcd | 205 | char const *acpi_gbl_exception_names_env[] = { |
1da177e4 LT |
206 | "AE_OK", |
207 | "AE_ERROR", | |
208 | "AE_NO_ACPI_TABLES", | |
209 | "AE_NO_NAMESPACE", | |
210 | "AE_NO_MEMORY", | |
211 | "AE_NOT_FOUND", | |
212 | "AE_NOT_EXIST", | |
213 | "AE_ALREADY_EXISTS", | |
214 | "AE_TYPE", | |
215 | "AE_NULL_OBJECT", | |
216 | "AE_NULL_ENTRY", | |
217 | "AE_BUFFER_OVERFLOW", | |
218 | "AE_STACK_OVERFLOW", | |
219 | "AE_STACK_UNDERFLOW", | |
220 | "AE_NOT_IMPLEMENTED", | |
1da177e4 | 221 | "AE_SUPPORT", |
1da177e4 LT |
222 | "AE_LIMIT", |
223 | "AE_TIME", | |
1da177e4 LT |
224 | "AE_ACQUIRE_DEADLOCK", |
225 | "AE_RELEASE_DEADLOCK", | |
226 | "AE_NOT_ACQUIRED", | |
227 | "AE_ALREADY_ACQUIRED", | |
228 | "AE_NO_HARDWARE_RESPONSE", | |
229 | "AE_NO_GLOBAL_LOCK", | |
1da177e4 LT |
230 | "AE_ABORT_METHOD", |
231 | "AE_SAME_HANDLER", | |
d7032668 | 232 | "AE_NO_HANDLER", |
33620c54 BM |
233 | "AE_OWNER_ID_LIMIT", |
234 | "AE_NOT_CONFIGURED" | |
1da177e4 LT |
235 | }; |
236 | ||
4be44fcd | 237 | char const *acpi_gbl_exception_names_pgm[] = { |
11f2a61a | 238 | NULL, |
1da177e4 LT |
239 | "AE_BAD_PARAMETER", |
240 | "AE_BAD_CHARACTER", | |
241 | "AE_BAD_PATHNAME", | |
242 | "AE_BAD_DATA", | |
1da177e4 LT |
243 | "AE_BAD_HEX_CONSTANT", |
244 | "AE_BAD_OCTAL_CONSTANT", | |
f3454ae8 | 245 | "AE_BAD_DECIMAL_CONSTANT", |
ac0c8450 BM |
246 | "AE_MISSING_ARGUMENTS", |
247 | "AE_BAD_ADDRESS" | |
1da177e4 LT |
248 | }; |
249 | ||
4be44fcd | 250 | char const *acpi_gbl_exception_names_tbl[] = { |
11f2a61a | 251 | NULL, |
1da177e4 LT |
252 | "AE_BAD_SIGNATURE", |
253 | "AE_BAD_HEADER", | |
254 | "AE_BAD_CHECKSUM", | |
255 | "AE_BAD_VALUE", | |
1da177e4 LT |
256 | "AE_INVALID_TABLE_LENGTH" |
257 | }; | |
258 | ||
4be44fcd | 259 | char const *acpi_gbl_exception_names_aml[] = { |
11f2a61a | 260 | NULL, |
1da177e4 LT |
261 | "AE_AML_BAD_OPCODE", |
262 | "AE_AML_NO_OPERAND", | |
263 | "AE_AML_OPERAND_TYPE", | |
264 | "AE_AML_OPERAND_VALUE", | |
265 | "AE_AML_UNINITIALIZED_LOCAL", | |
266 | "AE_AML_UNINITIALIZED_ARG", | |
267 | "AE_AML_UNINITIALIZED_ELEMENT", | |
268 | "AE_AML_NUMERIC_OVERFLOW", | |
269 | "AE_AML_REGION_LIMIT", | |
270 | "AE_AML_BUFFER_LIMIT", | |
271 | "AE_AML_PACKAGE_LIMIT", | |
272 | "AE_AML_DIVIDE_BY_ZERO", | |
273 | "AE_AML_BAD_NAME", | |
274 | "AE_AML_NAME_NOT_FOUND", | |
275 | "AE_AML_INTERNAL", | |
276 | "AE_AML_INVALID_SPACE_ID", | |
277 | "AE_AML_STRING_LIMIT", | |
278 | "AE_AML_NO_RETURN_VALUE", | |
279 | "AE_AML_METHOD_LIMIT", | |
280 | "AE_AML_NOT_OWNER", | |
281 | "AE_AML_MUTEX_ORDER", | |
282 | "AE_AML_MUTEX_NOT_ACQUIRED", | |
283 | "AE_AML_INVALID_RESOURCE_TYPE", | |
284 | "AE_AML_INVALID_INDEX", | |
285 | "AE_AML_REGISTER_LIMIT", | |
286 | "AE_AML_NO_WHILE", | |
287 | "AE_AML_ALIGNMENT", | |
288 | "AE_AML_NO_RESOURCE_END_TAG", | |
289 | "AE_AML_BAD_RESOURCE_VALUE", | |
290 | "AE_AML_CIRCULAR_REFERENCE", | |
b229cf92 | 291 | "AE_AML_BAD_RESOURCE_LENGTH", |
65f4692c | 292 | "AE_AML_ILLEGAL_ADDRESS", |
fc374457 | 293 | "AE_AML_INFINITE_LOOP" |
1da177e4 LT |
294 | }; |
295 | ||
4be44fcd | 296 | char const *acpi_gbl_exception_names_ctrl[] = { |
11f2a61a | 297 | NULL, |
1da177e4 LT |
298 | "AE_CTRL_RETURN_VALUE", |
299 | "AE_CTRL_PENDING", | |
300 | "AE_CTRL_TERMINATE", | |
301 | "AE_CTRL_TRUE", | |
302 | "AE_CTRL_FALSE", | |
303 | "AE_CTRL_DEPTH", | |
304 | "AE_CTRL_END", | |
305 | "AE_CTRL_TRANSFER", | |
306 | "AE_CTRL_BREAK", | |
307 | "AE_CTRL_CONTINUE", | |
4d0b4af9 MK |
308 | "AE_CTRL_SKIP", |
309 | "AE_CTRL_PARSE_CONTINUE", | |
310 | "AE_CTRL_PARSE_PENDING" | |
1da177e4 LT |
311 | }; |
312 | ||
bc7db145 | 313 | #endif /* EXCEPTION_TABLE */ |
1da177e4 | 314 | |
4be44fcd | 315 | #endif /* __ACEXCEP_H__ */ |