File:  [DragonFly] / src / sys / contrib / dev / acpica / Attic / acenv.h
Revision 1.1: download - view: text, annotated - select for diffs
Wed Sep 24 03:32:15 2003 UTC (10 years, 10 months ago) by drhodus
Branches: MAIN
CVS tags: HEAD


*  Intel ACPI 20030228 distribution with local DragonFly changes.

*  OSPM ACPI driver.  Note that this driver does not include
   support for PCI interrupt routing or enumeration of ISA bridges or
   Host to PCI bridges.  While functional on some machines, this driver
   should be considered experimental and should be tested prior to being
   deployed in a production environment.


Original work done by John Baldwin
  Sponsored by:   The Weather Channel

    1: /******************************************************************************
    2:  *
    3:  * Name: acenv.h - Generation environment specific items
    4:  *       $Revision: 104 $
    5:  *
    6:  *****************************************************************************/
    7: 
    8: /******************************************************************************
    9:  *
   10:  * 1. Copyright Notice
   11:  *
   12:  * Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
   13:  * All rights reserved.
   14:  *
   15:  * 2. License
   16:  *
   17:  * 2.1. This is your license from Intel Corp. under its intellectual property
   18:  * rights.  You may have additional license terms from the party that provided
   19:  * you this software, covering your right to use that party's intellectual
   20:  * property rights.
   21:  *
   22:  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
   23:  * copy of the source code appearing in this file ("Covered Code") an
   24:  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
   25:  * base code distributed originally by Intel ("Original Intel Code") to copy,
   26:  * make derivatives, distribute, use and display any portion of the Covered
   27:  * Code in any form, with the right to sublicense such rights; and
   28:  *
   29:  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
   30:  * license (with the right to sublicense), under only those claims of Intel
   31:  * patents that are infringed by the Original Intel Code, to make, use, sell,
   32:  * offer to sell, and import the Covered Code and derivative works thereof
   33:  * solely to the minimum extent necessary to exercise the above copyright
   34:  * license, and in no event shall the patent license extend to any additions
   35:  * to or modifications of the Original Intel Code.  No other license or right
   36:  * is granted directly or by implication, estoppel or otherwise;
   37:  *
   38:  * The above copyright and patent license is granted only if the following
   39:  * conditions are met:
   40:  *
   41:  * 3. Conditions
   42:  *
   43:  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
   44:  * Redistribution of source code of any substantial portion of the Covered
   45:  * Code or modification with rights to further distribute source must include
   46:  * the above Copyright Notice, the above License, this list of Conditions,
   47:  * and the following Disclaimer and Export Compliance provision.  In addition,
   48:  * Licensee must cause all Covered Code to which Licensee contributes to
   49:  * contain a file documenting the changes Licensee made to create that Covered
   50:  * Code and the date of any change.  Licensee must include in that file the
   51:  * documentation of any changes made by any predecessor Licensee.  Licensee
   52:  * must include a prominent statement that the modification is derived,
   53:  * directly or indirectly, from Original Intel Code.
   54:  *
   55:  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
   56:  * Redistribution of source code of any substantial portion of the Covered
   57:  * Code or modification without rights to further distribute source must
   58:  * include the following Disclaimer and Export Compliance provision in the
   59:  * documentation and/or other materials provided with distribution.  In
   60:  * addition, Licensee may not authorize further sublicense of source of any
   61:  * portion of the Covered Code, and must include terms to the effect that the
   62:  * license from Licensee to its licensee is limited to the intellectual
   63:  * property embodied in the software Licensee provides to its licensee, and
   64:  * not to intellectual property embodied in modifications its licensee may
   65:  * make.
   66:  *
   67:  * 3.3. Redistribution of Executable. Redistribution in executable form of any
   68:  * substantial portion of the Covered Code or modification must reproduce the
   69:  * above Copyright Notice, and the following Disclaimer and Export Compliance
   70:  * provision in the documentation and/or other materials provided with the
   71:  * distribution.
   72:  *
   73:  * 3.4. Intel retains all right, title, and interest in and to the Original
   74:  * Intel Code.
   75:  *
   76:  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
   77:  * Intel shall be used in advertising or otherwise to promote the sale, use or
   78:  * other dealings in products derived from or relating to the Covered Code
   79:  * without prior written authorization from Intel.
   80:  *
   81:  * 4. Disclaimer and Export Compliance
   82:  *
   83:  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
   84:  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
   85:  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
   86:  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
   87:  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
   88:  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
   89:  * PARTICULAR PURPOSE.
   90:  *
   91:  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
   92:  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
   93:  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
   94:  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
   95:  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
   96:  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
   97:  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
   98:  * LIMITED REMEDY.
   99:  *
  100:  * 4.3. Licensee shall not export, either directly or indirectly, any of this
  101:  * software or system incorporating such software without first obtaining any
  102:  * required license or other approval from the U. S. Department of Commerce or
  103:  * any other agency or department of the United States Government.  In the
  104:  * event Licensee exports any such software from the United States or
  105:  * re-exports any such software from a foreign destination, Licensee shall
  106:  * ensure that the distribution and export/re-export of the software is in
  107:  * compliance with all laws, regulations, orders, or other restrictions of the
  108:  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
  109:  * any of its subsidiaries will export/re-export any technical data, process,
  110:  * software, or service, directly or indirectly, to any country for which the
  111:  * United States government or any agency thereof requires an export license,
  112:  * other governmental approval, or letter of assurance, without first obtaining
  113:  * such license, approval or letter.
  114:  *
  115:  *****************************************************************************/
  116: /* $DragonFly: src/sys/contrib/dev/acpica/acenv.h,v 1.1 2003/09/24 03:32:15 drhodus Exp $                                                               */
  117: 
  118: #ifndef __ACENV_H__
  119: #define __ACENV_H__
  120: 
  121: 
  122: /*
  123:  * Configuration for ACPI tools and utilities
  124:  */
  125: 
  126: #ifdef _ACPI_DUMP_APP
  127: #ifndef MSDOS
  128: #define ACPI_DEBUG_OUTPUT
  129: #endif
  130: #define ACPI_APPLICATION
  131: #define ACPI_DISASSEMBLER
  132: #define ACPI_NO_METHOD_EXECUTION
  133: #define ACPI_USE_SYSTEM_CLIBRARY
  134: #endif
  135: 
  136: #ifdef _ACPI_EXEC_APP
  137: #undef DEBUGGER_THREADING
  138: #define DEBUGGER_THREADING      DEBUGGER_SINGLE_THREADED
  139: #define ACPI_DEBUG_OUTPUT
  140: #define ACPI_APPLICATION
  141: #define ACPI_DEBUGGER
  142: #define ACPI_DISASSEMBLER
  143: #define ACPI_USE_SYSTEM_CLIBRARY
  144: #endif
  145: 
  146: #ifdef _ACPI_ASL_COMPILER
  147: #define ACPI_DEBUG_OUTPUT
  148: #define ACPI_APPLICATION
  149: #define ACPI_DISASSEMBLER
  150: #define ACPI_CONSTANT_EVAL_ONLY
  151: #define ACPI_USE_SYSTEM_CLIBRARY
  152: #endif
  153: 
  154: /*
  155:  * Environment configuration.  The purpose of this file is to interface to the
  156:  * local generation environment.
  157:  *
  158:  * 1) ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
  159:  *      Otherwise, local versions of string/memory functions will be used.
  160:  * 2) ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
  161:  *      the standard header files may be used.
  162:  *
  163:  * The ACPI subsystem only uses low level C library functions that do not call
  164:  * operating system services and may therefore be inlined in the code.
  165:  *
  166:  * It may be necessary to tailor these include files to the target
  167:  * generation environment.
  168:  *
  169:  *
  170:  * Functions and constants used from each header:
  171:  *
  172:  * string.h:    memcpy
  173:  *              memset
  174:  *              strcat
  175:  *              strcmp
  176:  *              strcpy
  177:  *              strlen
  178:  *              strncmp
  179:  *              strncat
  180:  *              strncpy
  181:  *
  182:  * stdlib.h:    strtoul
  183:  *
  184:  * stdarg.h:    va_list
  185:  *              va_arg
  186:  *              va_start
  187:  *              va_end
  188:  *
  189:  */
  190: 
  191: /*! [Begin] no source code translation */
  192: 
  193: #if defined(__linux__)
  194: #include "aclinux.h"
  195: 
  196: #elif defined(_AED_EFI)
  197: #include "acefi.h"
  198: 
  199: #elif defined(WIN32)
  200: #include "acwin.h"
  201: 
  202: #elif defined(WIN64)
  203: #include "acwin64.h"
  204: 
  205: #elif defined(MSDOS)        /* Must appear after WIN32 and WIN64 check */
  206: #include "acdos16.h"
  207: 
  208: #elif defined(__FreeBSD__)
  209: #include "acfreebsd.h"
  210: 
  211: #elif defined(MODESTO)
  212: #include "acmodesto.h"
  213: 
  214: #elif defined(NETWARE)
  215: #include "acnetware.h"
  216: 
  217: #else
  218: 
  219: /* All other environments */
  220: 
  221: #define ACPI_USE_STANDARD_HEADERS
  222: 
  223: #define COMPILER_DEPENDENT_INT64   long long
  224: #define COMPILER_DEPENDENT_UINT64  unsigned long long
  225: 
  226: 
  227: /* Name of host operating system (returned by the _OS_ namespace object) */
  228: 
  229: #define ACPI_OS_NAME         "Intel ACPI/CA Core Subsystem"
  230: 
  231: /* This macro is used to tag functions as "printf-like" because
  232:  * some compilers can catch printf format string problems. MSVC
  233:  * doesn't, so this is proprocessed away.
  234:  */
  235: #define ACPI_PRINTF_LIKE_FUNC
  236: 
  237: #endif
  238: 
  239: /*
  240:  * Memory allocation tracking.  Used only if
  241:  * 1) This is the debug version
  242:  * 2) This is NOT a 16-bit version of the code (not enough real-mode memory)
  243:  */
  244: #ifdef ACPI_DEBUG_OUTPUT
  245: #if ACPI_MACHINE_WIDTH != 16
  246: #define ACPI_DBG_TRACK_ALLOCATIONS
  247: #endif
  248: #endif
  249: 
  250: /*! [End] no source code translation !*/
  251: 
  252: 
  253: /*
  254:  * Debugger threading model
  255:  * Use single threaded if the entire subsystem is contained in an application
  256:  * Use multiple threaded when the subsystem is running in the kernel.
  257:  *
  258:  * By default the model is single threaded if ACPI_APPLICATION is set,
  259:  * multi-threaded if ACPI_APPLICATION is not set.
  260:  */
  261: #define DEBUGGER_SINGLE_THREADED    0
  262: #define DEBUGGER_MULTI_THREADED     1
  263: 
  264: #ifndef DEBUGGER_THREADING
  265: #ifdef ACPI_APPLICATION
  266: #define DEBUGGER_THREADING          DEBUGGER_SINGLE_THREADED
  267: 
  268: #else
  269: #define DEBUGGER_THREADING          DEBUGGER_MULTI_THREADED
  270: #endif
  271: #endif
  272: 
  273: 
  274: /******************************************************************************
  275:  *
  276:  * C library configuration
  277:  *
  278:  *****************************************************************************/
  279: 
  280: #ifdef ACPI_USE_SYSTEM_CLIBRARY
  281: /*
  282:  * Use the standard C library headers.
  283:  * We want to keep these to a minimum.
  284:  */
  285: 
  286: #ifdef ACPI_USE_STANDARD_HEADERS
  287: /*
  288:  * Use the standard headers from the standard locations
  289:  */
  290: #include <stdarg.h>
  291: #include <stdlib.h>
  292: #include <string.h>
  293: #include <ctype.h>
  294: 
  295: #endif /* ACPI_USE_STANDARD_HEADERS */
  296: 
  297: /*
  298:  * We will be linking to the standard Clib functions
  299:  */
  300: 
  301: #define ACPI_STRSTR(s1,s2)      strstr((s1), (s2))
  302: #define ACPI_STRUPR(s)          (void) AcpiUtStrupr ((s))
  303: #define ACPI_STRLEN(s)          (ACPI_SIZE) strlen((s))
  304: #define ACPI_STRCPY(d,s)        (void) strcpy((d), (s))
  305: #define ACPI_STRNCPY(d,s,n)     (void) strncpy((d), (s), (ACPI_SIZE)(n))
  306: #define ACPI_STRNCMP(d,s,n)     strncmp((d), (s), (ACPI_SIZE)(n))
  307: #define ACPI_STRCMP(d,s)        strcmp((d), (s))
  308: #define ACPI_STRCAT(d,s)        (void) strcat((d), (s))
  309: #define ACPI_STRNCAT(d,s,n)     strncat((d), (s), (ACPI_SIZE)(n))
  310: #define ACPI_STRTOUL(d,s,n)     strtoul((d), (s), (ACPI_SIZE)(n))
  311: #define ACPI_MEMCPY(d,s,n)      (void) memcpy((d), (s), (ACPI_SIZE)(n))
  312: #define ACPI_MEMSET(d,s,n)      (void) memset((d), (s), (ACPI_SIZE)(n))
  313: 
  314: #define ACPI_TOUPPER            toupper
  315: #define ACPI_TOLOWER            tolower
  316: #define ACPI_IS_XDIGIT          isxdigit
  317: #define ACPI_IS_DIGIT           isdigit
  318: #define ACPI_IS_SPACE           isspace
  319: #define ACPI_IS_UPPER           isupper
  320: #define ACPI_IS_PRINT           isprint
  321: #define ACPI_IS_ALPHA           isalpha
  322: #define ACPI_IS_ASCII           isascii
  323: 
  324: /******************************************************************************
  325:  *
  326:  * Not using native C library, use local implementations
  327:  *
  328:  *****************************************************************************/
  329: #else
  330: 
  331: /*
  332:  * Use local definitions of C library macros and functions
  333:  * NOTE: The function implementations may not be as efficient
  334:  * as an inline or assembly code implementation provided by a
  335:  * native C library.
  336:  */
  337: 
  338: #ifndef va_arg
  339: 
  340: #ifndef _VALIST
  341: #define _VALIST
  342: typedef char *va_list;
  343: #endif /* _VALIST */
  344: 
  345: /*
  346:  * Storage alignment properties
  347:  */
  348: 
  349: #define  _AUPBND                (sizeof (ACPI_NATIVE_INT) - 1)
  350: #define  _ADNBND                (sizeof (ACPI_NATIVE_INT) - 1)
  351: 
  352: /*
  353:  * Variable argument list macro definitions
  354:  */
  355: 
  356: #define _Bnd(X, bnd)            (((sizeof (X)) + (bnd)) & (~(bnd)))
  357: #define va_arg(ap, T)           (*(T *)(((ap) += (_Bnd (T, _AUPBND))) - (_Bnd (T,_ADNBND))))
  358: #define va_end(ap)              (void) 0
  359: #define va_start(ap, A)         (void) ((ap) = (((char *) &(A)) + (_Bnd (A,_AUPBND))))
  360: 
  361: #endif /* va_arg */
  362: 
  363: 
  364: #define ACPI_STRSTR(s1,s2)      AcpiUtStrstr  ((s1), (s2))
  365: #define ACPI_STRUPR(s)          (void) AcpiUtStrupr ((s))
  366: #define ACPI_STRLEN(s)          (ACPI_SIZE) AcpiUtStrlen  ((s))
  367: #define ACPI_STRCPY(d,s)        (void) AcpiUtStrcpy  ((d), (s))
  368: #define ACPI_STRNCPY(d,s,n)     (void) AcpiUtStrncpy ((d), (s), (ACPI_SIZE)(n))
  369: #define ACPI_STRNCMP(d,s,n)     AcpiUtStrncmp ((d), (s), (ACPI_SIZE)(n))
  370: #define ACPI_STRCMP(d,s)        AcpiUtStrcmp  ((d), (s))
  371: #define ACPI_STRCAT(d,s)        (void) AcpiUtStrcat  ((d), (s))
  372: #define ACPI_STRNCAT(d,s,n)     AcpiUtStrncat ((d), (s), (ACPI_SIZE)(n))
  373: #define ACPI_STRTOUL(d,s,n)     AcpiUtStrtoul ((d), (s), (ACPI_SIZE)(n))
  374: #define ACPI_MEMCPY(d,s,n)      (void) AcpiUtMemcpy  ((d), (s), (ACPI_SIZE)(n))
  375: #define ACPI_MEMSET(d,v,n)      (void) AcpiUtMemset  ((d), (v), (ACPI_SIZE)(n))
  376: #define ACPI_TOUPPER            AcpiUtToUpper
  377: #define ACPI_TOLOWER            AcpiUtToLower
  378: 
  379: #endif /* ACPI_USE_SYSTEM_CLIBRARY */
  380: 
  381: 
  382: /******************************************************************************
  383:  *
  384:  * Assembly code macros
  385:  *
  386:  *****************************************************************************/
  387: 
  388: /*
  389:  * Handle platform- and compiler-specific assembly language differences.
  390:  * These should already have been defined by the platform includes above.
  391:  *
  392:  * Notes:
  393:  * 1) Interrupt 3 is used to break into a debugger
  394:  * 2) Interrupts are turned off during ACPI register setup
  395:  */
  396: 
  397: /* Unrecognized compiler, use defaults */
  398: 
  399: #ifndef ACPI_ASM_MACROS
  400: 
  401: /*
  402:  * Calling conventions:
  403:  *
  404:  * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads)
  405:  * ACPI_EXTERNAL_XFACE      - External ACPI interfaces
  406:  * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces
  407:  * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces
  408:  */
  409: #define ACPI_SYSTEM_XFACE
  410: #define ACPI_EXTERNAL_XFACE
  411: #define ACPI_INTERNAL_XFACE
  412: #define ACPI_INTERNAL_VAR_XFACE
  413: 
  414: #define ACPI_ASM_MACROS
  415: #define BREAKPOINT3
  416: #define ACPI_DISABLE_IRQS()
  417: #define ACPI_ENABLE_IRQS()
  418: #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq)
  419: #define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq)
  420: 
  421: #endif /* ACPI_ASM_MACROS */
  422: 
  423: 
  424: #ifdef ACPI_APPLICATION
  425: 
  426: /* Don't want software interrupts within a ring3 application */
  427: 
  428: #undef BREAKPOINT3
  429: #define BREAKPOINT3
  430: #endif
  431: 
  432: 
  433: /******************************************************************************
  434:  *
  435:  * Compiler-specific information is contained in the compiler-specific
  436:  * headers.
  437:  *
  438:  *****************************************************************************/
  439: #endif /* __ACENV_H__ */