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