blob: 3e6b163ee15f7f9660d60306deb3a681f1d5c11f [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/******************************************************************************
2 *
3 * Name: acexcep.h - Exception codes returned by the ACPI subsystem
4 *
5 *****************************************************************************/
6
7/*
Bob Moore25f044e2013-01-25 05:38:56 +00008 * Copyright (C) 2000 - 2013, Intel Corp.
Linus Torvalds1da177e2005-04-16 15:20:36 -07009 * 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
Bob Moore995b9a92013-03-08 09:22:31 +000047/* This module contains all possible exception codes for acpi_status */
48
Linus Torvalds1da177e2005-04-16 15:20:36 -070049/*
Bob Moore995b9a92013-03-08 09:22:31 +000050 * Exception code classes
Linus Torvalds1da177e2005-04-16 15:20:36 -070051 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070052#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
Bob Moorebc7db142012-07-16 09:10:58 +080057#define AE_CODE_MAX 0x4000
Linus Torvalds1da177e2005-04-16 15:20:36 -070058#define AE_CODE_MASK 0xF000
59
Bob Moore995b9a92013-03-08 09:22:31 +000060/*
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 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070072#define ACPI_SUCCESS(a) (!(a))
73#define ACPI_FAILURE(a) (a)
74
Tang Liang09f98a82011-12-09 10:05:54 +080075#define ACPI_SKIP(a) (a == AE_CTRL_SKIP)
Linus Torvalds1da177e2005-04-16 15:20:36 -070076#define AE_OK (acpi_status) 0x0000
77
78/*
79 * Environmental exceptions
80 */
Bob Moore995b9a92013-03-08 09:22:31 +000081#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)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700109
Bob Moore33620c52012-02-14 18:14:27 +0800110#define AE_CODE_ENV_MAX 0x001C
Linus Torvalds1da177e2005-04-16 15:20:36 -0700111
112/*
113 * Programmer exceptions
114 */
Bob Moore995b9a92013-03-08 09:22:31 +0000115#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)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700124
Bob Mooreac0c8452009-02-18 14:28:02 +0800125#define AE_CODE_PGM_MAX 0x0009
Linus Torvalds1da177e2005-04-16 15:20:36 -0700126
Linus Torvalds1da177e2005-04-16 15:20:36 -0700127/*
128 * Acpi table exceptions
129 */
Bob Moore995b9a92013-03-08 09:22:31 +0000130#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)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700135
Bob Moore65f46922008-09-27 10:28:07 +0800136#define AE_CODE_TBL_MAX 0x0005
Linus Torvalds1da177e2005-04-16 15:20:36 -0700137
Linus Torvalds1da177e2005-04-16 15:20:36 -0700138/*
Bob Moore73a30902012-10-31 02:26:55 +0000139 * AML exceptions. These are caused by problems with
Linus Torvalds1da177e2005-04-16 15:20:36 -0700140 * the actual AML byte stream
141 */
Bob Moore995b9a92013-03-08 09:22:31 +0000142#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)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700175
Bob Moorefc374452008-11-12 15:15:29 +0800176#define AE_CODE_AML_MAX 0x0021
Linus Torvalds1da177e2005-04-16 15:20:36 -0700177
178/*
179 * Internal exceptions used for control
180 */
Bob Moore995b9a92013-03-08 09:22:31 +0000181#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)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700194
Mikhail Kouzmich4d0b4af2007-02-02 19:48:21 +0300195#define AE_CODE_CTRL_MAX 0x000D
Linus Torvalds1da177e2005-04-16 15:20:36 -0700196
Bob Moore50df4d82008-12-31 03:01:23 +0800197/* Exception strings for acpi_format_exception */
198
Bob Moorebc7db142012-07-16 09:10:58 +0800199#ifdef ACPI_DEFINE_EXCEPTION_TABLE
Linus Torvalds1da177e2005-04-16 15:20:36 -0700200
201/*
202 * String versions of the exception codes above
203 * These strings must match the corresponding defines exactly
204 */
Len Brown4be44fc2005-08-05 00:44:28 -0400205char const *acpi_gbl_exception_names_env[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700206 "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",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700221 "AE_SUPPORT",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700222 "AE_LIMIT",
223 "AE_TIME",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700224 "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",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700230 "AE_ABORT_METHOD",
231 "AE_SAME_HANDLER",
Bob Moored7032662010-05-26 11:06:12 +0800232 "AE_NO_HANDLER",
Bob Moore33620c52012-02-14 18:14:27 +0800233 "AE_OWNER_ID_LIMIT",
234 "AE_NOT_CONFIGURED"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700235};
236
Len Brown4be44fc2005-08-05 00:44:28 -0400237char const *acpi_gbl_exception_names_pgm[] = {
Bob Moore11f2a612008-06-10 12:53:01 +0800238 NULL,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700239 "AE_BAD_PARAMETER",
240 "AE_BAD_CHARACTER",
241 "AE_BAD_PATHNAME",
242 "AE_BAD_DATA",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700243 "AE_BAD_HEX_CONSTANT",
244 "AE_BAD_OCTAL_CONSTANT",
Bob Mooref3454ae2008-06-10 12:25:42 +0800245 "AE_BAD_DECIMAL_CONSTANT",
Bob Mooreac0c8452009-02-18 14:28:02 +0800246 "AE_MISSING_ARGUMENTS",
247 "AE_BAD_ADDRESS"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700248};
249
Len Brown4be44fc2005-08-05 00:44:28 -0400250char const *acpi_gbl_exception_names_tbl[] = {
Bob Moore11f2a612008-06-10 12:53:01 +0800251 NULL,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700252 "AE_BAD_SIGNATURE",
253 "AE_BAD_HEADER",
254 "AE_BAD_CHECKSUM",
255 "AE_BAD_VALUE",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700256 "AE_INVALID_TABLE_LENGTH"
257};
258
Len Brown4be44fc2005-08-05 00:44:28 -0400259char const *acpi_gbl_exception_names_aml[] = {
Bob Moore11f2a612008-06-10 12:53:01 +0800260 NULL,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700261 "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",
Bob Mooreb229cf92006-04-21 17:15:00 -0400291 "AE_AML_BAD_RESOURCE_LENGTH",
Bob Moore65f46922008-09-27 10:28:07 +0800292 "AE_AML_ILLEGAL_ADDRESS",
Bob Moorefc374452008-11-12 15:15:29 +0800293 "AE_AML_INFINITE_LOOP"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700294};
295
Len Brown4be44fc2005-08-05 00:44:28 -0400296char const *acpi_gbl_exception_names_ctrl[] = {
Bob Moore11f2a612008-06-10 12:53:01 +0800297 NULL,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700298 "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",
Mikhail Kouzmich4d0b4af2007-02-02 19:48:21 +0300308 "AE_CTRL_SKIP",
309 "AE_CTRL_PARSE_CONTINUE",
310 "AE_CTRL_PARSE_PENDING"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700311};
312
Bob Moorebc7db142012-07-16 09:10:58 +0800313#endif /* EXCEPTION_TABLE */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700314
Len Brown4be44fc2005-08-05 00:44:28 -0400315#endif /* __ACEXCEP_H__ */