]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blame - include/acpi/acexcep.h
ACPICA: Add macros to exception code definitions
[mirror_ubuntu-hirsute-kernel.git] / include / acpi / acexcep.h
CommitLineData
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 205char 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 237char 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 250char 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 259char 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 296char 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__ */