17c478bd9Sstevel@tonic-gate /******************************************************************************
27c478bd9Sstevel@tonic-gate  *
3aa2aa9a6SDana Myers  * Name: acenv.h - Host and compiler configuration
47c478bd9Sstevel@tonic-gate  *
57c478bd9Sstevel@tonic-gate  *****************************************************************************/
67c478bd9Sstevel@tonic-gate 
726f3cdf0SGordon Ross /*
8*7b1019a6SJerry Jelinek  * Copyright (C) 2000 - 2016, Intel Corp.
97c478bd9Sstevel@tonic-gate  * All rights reserved.
107c478bd9Sstevel@tonic-gate  *
1126f3cdf0SGordon Ross  * Redistribution and use in source and binary forms, with or without
1226f3cdf0SGordon Ross  * modification, are permitted provided that the following conditions
1326f3cdf0SGordon Ross  * are met:
1426f3cdf0SGordon Ross  * 1. Redistributions of source code must retain the above copyright
1526f3cdf0SGordon Ross  *    notice, this list of conditions, and the following disclaimer,
1626f3cdf0SGordon Ross  *    without modification.
1726f3cdf0SGordon Ross  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
1826f3cdf0SGordon Ross  *    substantially similar to the "NO WARRANTY" disclaimer below
1926f3cdf0SGordon Ross  *    ("Disclaimer") and any redistribution must be conditioned upon
2026f3cdf0SGordon Ross  *    including a substantially similar Disclaimer requirement for further
2126f3cdf0SGordon Ross  *    binary redistribution.
2226f3cdf0SGordon Ross  * 3. Neither the names of the above-listed copyright holders nor the names
2326f3cdf0SGordon Ross  *    of any contributors may be used to endorse or promote products derived
2426f3cdf0SGordon Ross  *    from this software without specific prior written permission.
2526f3cdf0SGordon Ross  *
2626f3cdf0SGordon Ross  * Alternatively, this software may be distributed under the terms of the
2726f3cdf0SGordon Ross  * GNU General Public License ("GPL") version 2 as published by the Free
2826f3cdf0SGordon Ross  * Software Foundation.
2926f3cdf0SGordon Ross  *
3026f3cdf0SGordon Ross  * NO WARRANTY
3126f3cdf0SGordon Ross  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
3226f3cdf0SGordon Ross  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3326f3cdf0SGordon Ross  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
3426f3cdf0SGordon Ross  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3526f3cdf0SGordon Ross  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3626f3cdf0SGordon Ross  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3726f3cdf0SGordon Ross  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3826f3cdf0SGordon Ross  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
3926f3cdf0SGordon Ross  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
4026f3cdf0SGordon Ross  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
4126f3cdf0SGordon Ross  * POSSIBILITY OF SUCH DAMAGES.
4226f3cdf0SGordon Ross  */
437c478bd9Sstevel@tonic-gate 
447c478bd9Sstevel@tonic-gate #ifndef __ACENV_H__
457c478bd9Sstevel@tonic-gate #define __ACENV_H__
467c478bd9Sstevel@tonic-gate 
477c478bd9Sstevel@tonic-gate /*
48aa2aa9a6SDana Myers  * Environment configuration. The purpose of this file is to interface ACPICA
49aa2aa9a6SDana Myers  * to the local environment. This includes compiler-specific, OS-specific,
50aa2aa9a6SDana Myers  * and machine-specific configuration.
517c478bd9Sstevel@tonic-gate  */
527c478bd9Sstevel@tonic-gate 
53aa2aa9a6SDana Myers /* Types for ACPI_MUTEX_TYPE */
54aa2aa9a6SDana Myers 
55aa2aa9a6SDana Myers #define ACPI_BINARY_SEMAPHORE       0
56aa2aa9a6SDana Myers #define ACPI_OSL_MUTEX              1
57aa2aa9a6SDana Myers 
58aa2aa9a6SDana Myers /* Types for DEBUGGER_THREADING */
59aa2aa9a6SDana Myers 
60aa2aa9a6SDana Myers #define DEBUGGER_SINGLE_THREADED    0
61aa2aa9a6SDana Myers #define DEBUGGER_MULTI_THREADED     1
62aa2aa9a6SDana Myers 
63aa2aa9a6SDana Myers 
64aa2aa9a6SDana Myers /******************************************************************************
65aa2aa9a6SDana Myers  *
66aa2aa9a6SDana Myers  * Configuration for ACPI tools and utilities
67aa2aa9a6SDana Myers  *
68aa2aa9a6SDana Myers  *****************************************************************************/
69aa2aa9a6SDana Myers 
70*7b1019a6SJerry Jelinek /* Common application configuration. All single threaded except for AcpiExec. */
71*7b1019a6SJerry Jelinek 
72*7b1019a6SJerry Jelinek #if (defined ACPI_ASL_COMPILER) || \
73*7b1019a6SJerry Jelinek     (defined ACPI_BIN_APP)      || \
74*7b1019a6SJerry Jelinek     (defined ACPI_DUMP_APP)     || \
75*7b1019a6SJerry Jelinek     (defined ACPI_HELP_APP)     || \
76*7b1019a6SJerry Jelinek     (defined ACPI_NAMES_APP)    || \
77*7b1019a6SJerry Jelinek     (defined ACPI_SRC_APP)      || \
78*7b1019a6SJerry Jelinek     (defined ACPI_XTRACT_APP)   || \
79*7b1019a6SJerry Jelinek     (defined ACPI_EXAMPLE_APP)
80*7b1019a6SJerry Jelinek #define ACPI_APPLICATION
81*7b1019a6SJerry Jelinek #define ACPI_SINGLE_THREADED
82*7b1019a6SJerry Jelinek #endif
83*7b1019a6SJerry Jelinek 
84aa2aa9a6SDana Myers /* iASL configuration */
85450d6964Smyers 
8627f7c583Smyers #ifdef ACPI_ASL_COMPILER
87aa2aa9a6SDana Myers #define ACPI_DEBUG_OUTPUT
8827f7c583Smyers #define ACPI_CONSTANT_EVAL_ONLY
8927f7c583Smyers #define ACPI_LARGE_NAMESPACE_NODE
9027f7c583Smyers #define ACPI_DATA_TABLE_DISASSEMBLY
91*7b1019a6SJerry Jelinek #define ACPI_32BIT_PHYSICAL_ADDRESS
92*7b1019a6SJerry Jelinek #define ACPI_DISASSEMBLER 1
937c478bd9Sstevel@tonic-gate #endif
947c478bd9Sstevel@tonic-gate 
95*7b1019a6SJerry Jelinek /* AcpiExec configuration. Multithreaded with full AML debugger */
96aa2aa9a6SDana Myers 
97450d6964Smyers #ifdef ACPI_EXEC_APP
987c478bd9Sstevel@tonic-gate #define ACPI_APPLICATION
99aa2aa9a6SDana Myers #define ACPI_FULL_DEBUG
100186507a7Smyers #define ACPI_MUTEX_DEBUG
10127f7c583Smyers #define ACPI_DBG_TRACK_ALLOCATIONS
1027c478bd9Sstevel@tonic-gate #endif
1037c478bd9Sstevel@tonic-gate 
104*7b1019a6SJerry Jelinek /* AcpiHelp configuration. Error messages disabled. */
105*7b1019a6SJerry Jelinek 
106*7b1019a6SJerry Jelinek #ifdef ACPI_HELP_APP
107*7b1019a6SJerry Jelinek #define ACPI_NO_ERROR_MESSAGES
108*7b1019a6SJerry Jelinek #endif
109*7b1019a6SJerry Jelinek 
110*7b1019a6SJerry Jelinek /* AcpiNames configuration. Debug output enabled. */
111*7b1019a6SJerry Jelinek 
112*7b1019a6SJerry Jelinek #ifdef ACPI_NAMES_APP
113*7b1019a6SJerry Jelinek #define ACPI_DEBUG_OUTPUT
114*7b1019a6SJerry Jelinek #endif
115*7b1019a6SJerry Jelinek 
116*7b1019a6SJerry Jelinek /* AcpiExec/AcpiNames/Example configuration. Native RSDP used. */
117*7b1019a6SJerry Jelinek 
118*7b1019a6SJerry Jelinek #if (defined ACPI_EXEC_APP)     || \
119*7b1019a6SJerry Jelinek     (defined ACPI_EXAMPLE_APP)  || \
120*7b1019a6SJerry Jelinek     (defined ACPI_NAMES_APP)
121*7b1019a6SJerry Jelinek #define ACPI_USE_NATIVE_RSDP_POINTER
122*7b1019a6SJerry Jelinek #endif
123*7b1019a6SJerry Jelinek 
124*7b1019a6SJerry Jelinek /* AcpiDump configuration. Native mapping used if provided by the host */
125*7b1019a6SJerry Jelinek 
126*7b1019a6SJerry Jelinek #ifdef ACPI_DUMP_APP
127*7b1019a6SJerry Jelinek #define ACPI_USE_NATIVE_MEMORY_MAPPING
128*7b1019a6SJerry Jelinek #define USE_NATIVE_ALLOCATE_ZEROED
129*7b1019a6SJerry Jelinek #endif
130*7b1019a6SJerry Jelinek 
131*7b1019a6SJerry Jelinek /* AcpiNames/Example configuration. Hardware disabled */
132*7b1019a6SJerry Jelinek 
133*7b1019a6SJerry Jelinek #if (defined ACPI_EXAMPLE_APP)  || \
134*7b1019a6SJerry Jelinek     (defined ACPI_NAMES_APP)
135*7b1019a6SJerry Jelinek #define ACPI_REDUCED_HARDWARE 1
13626f3cdf0SGordon Ross #endif
13726f3cdf0SGordon Ross 
138*7b1019a6SJerry Jelinek /* Linkable ACPICA library. Two versions, one with full debug. */
139aa2aa9a6SDana Myers 
140aa2aa9a6SDana Myers #ifdef ACPI_LIBRARY
141aa2aa9a6SDana Myers #define ACPI_USE_LOCAL_CACHE
142*7b1019a6SJerry Jelinek #define ACPI_DEBUGGER 1
143*7b1019a6SJerry Jelinek #define ACPI_DISASSEMBLER 1
144*7b1019a6SJerry Jelinek 
145*7b1019a6SJerry Jelinek #ifdef _DEBUG
146*7b1019a6SJerry Jelinek #define ACPI_DEBUG_OUTPUT
147*7b1019a6SJerry Jelinek #endif
148450d6964Smyers #endif
149450d6964Smyers 
150aa2aa9a6SDana Myers /* Common for all ACPICA applications */
151aa2aa9a6SDana Myers 
152450d6964Smyers #ifdef ACPI_APPLICATION
1537c478bd9Sstevel@tonic-gate #define ACPI_USE_SYSTEM_CLIBRARY
154450d6964Smyers #define ACPI_USE_LOCAL_CACHE
1557c478bd9Sstevel@tonic-gate #endif
1567c478bd9Sstevel@tonic-gate 
157*7b1019a6SJerry Jelinek /* Common debug/disassembler support */
158aa2aa9a6SDana Myers 
15927f7c583Smyers #ifdef ACPI_FULL_DEBUG
16027f7c583Smyers #define ACPI_DEBUG_OUTPUT
161*7b1019a6SJerry Jelinek #define ACPI_DEBUGGER 1
162*7b1019a6SJerry Jelinek #define ACPI_DISASSEMBLER 1
16327f7c583Smyers #endif
16427f7c583Smyers 
165aa2aa9a6SDana Myers /*! [Begin] no source code translation */
166aa2aa9a6SDana Myers 
167aa2aa9a6SDana Myers /******************************************************************************
1687c478bd9Sstevel@tonic-gate  *
169aa2aa9a6SDana Myers  * Host configuration files. The compiler configuration files are included
170aa2aa9a6SDana Myers  * by the host files.
1717c478bd9Sstevel@tonic-gate  *
172aa2aa9a6SDana Myers  *****************************************************************************/
1737c478bd9Sstevel@tonic-gate 
174db2bae30SDana Myers #if defined(_LINUX) || defined(__linux__)
1757c478bd9Sstevel@tonic-gate #include "aclinux.h"
1767c478bd9Sstevel@tonic-gate 
177*7b1019a6SJerry Jelinek #elif defined(_APPLE) || defined(__APPLE__)
178*7b1019a6SJerry Jelinek #include "acmacosx.h"
179*7b1019a6SJerry Jelinek 
180*7b1019a6SJerry Jelinek #elif defined(__DragonFly__)
181*7b1019a6SJerry Jelinek #include "acdragonfly.h"
182*7b1019a6SJerry Jelinek 
18327f7c583Smyers #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
1847c478bd9Sstevel@tonic-gate #include "acfreebsd.h"
1857c478bd9Sstevel@tonic-gate 
1867c478bd9Sstevel@tonic-gate #elif defined(__NetBSD__)
1877c478bd9Sstevel@tonic-gate #include "acnetbsd.h"
1887c478bd9Sstevel@tonic-gate 
189aa2aa9a6SDana Myers #elif defined(__sun)
190aa2aa9a6SDana Myers #include "acsolaris.h"
191aa2aa9a6SDana Myers 
1927c478bd9Sstevel@tonic-gate #elif defined(MODESTO)
1937c478bd9Sstevel@tonic-gate #include "acmodesto.h"
1947c478bd9Sstevel@tonic-gate 
1957c478bd9Sstevel@tonic-gate #elif defined(NETWARE)
1967c478bd9Sstevel@tonic-gate #include "acnetware.h"
1977c478bd9Sstevel@tonic-gate 
198aa2aa9a6SDana Myers #elif defined(_CYGWIN)
199aa2aa9a6SDana Myers #include "accygwin.h"
200aa2aa9a6SDana Myers 
201aa2aa9a6SDana Myers #elif defined(WIN32)
202aa2aa9a6SDana Myers #include "acwin.h"
203aa2aa9a6SDana Myers 
204aa2aa9a6SDana Myers #elif defined(WIN64)
205aa2aa9a6SDana Myers #include "acwin64.h"
206aa2aa9a6SDana Myers 
207aa2aa9a6SDana Myers #elif defined(_WRS_LIB_BUILD)
208aa2aa9a6SDana Myers #include "acvxworks.h"
2097c478bd9Sstevel@tonic-gate 
210db2bae30SDana Myers #elif defined(__OS2__)
211db2bae30SDana Myers #include "acos2.h"
212db2bae30SDana Myers 
213aa2aa9a6SDana Myers #elif defined(_AED_EFI)
214aa2aa9a6SDana Myers #include "acefi.h"
215aa2aa9a6SDana Myers 
216*7b1019a6SJerry Jelinek #elif defined(_GNU_EFI)
217*7b1019a6SJerry Jelinek #include "acefi.h"
218*7b1019a6SJerry Jelinek 
219*7b1019a6SJerry Jelinek #elif defined(__HAIKU__)
220*7b1019a6SJerry Jelinek #include "achaiku.h"
221*7b1019a6SJerry Jelinek 
222*7b1019a6SJerry Jelinek #elif defined(__QNX__)
223*7b1019a6SJerry Jelinek #include "acqnx.h"
224*7b1019a6SJerry Jelinek 
2257c478bd9Sstevel@tonic-gate #else
2267c478bd9Sstevel@tonic-gate 
227aa2aa9a6SDana Myers /* Unknown environment */
2287c478bd9Sstevel@tonic-gate 
229aa2aa9a6SDana Myers #error Unknown target environment
230aa2aa9a6SDana Myers #endif
2317c478bd9Sstevel@tonic-gate 
232aa2aa9a6SDana Myers /*! [End] no source code translation !*/
233aa2aa9a6SDana Myers 
234aa2aa9a6SDana Myers 
235aa2aa9a6SDana Myers /******************************************************************************
236aa2aa9a6SDana Myers  *
237aa2aa9a6SDana Myers  * Setup defaults for the required symbols that were not defined in one of
238aa2aa9a6SDana Myers  * the host/compiler files above.
239aa2aa9a6SDana Myers  *
240aa2aa9a6SDana Myers  *****************************************************************************/
241aa2aa9a6SDana Myers 
242aa2aa9a6SDana Myers /* 64-bit data types */
243aa2aa9a6SDana Myers 
244aa2aa9a6SDana Myers #ifndef COMPILER_DEPENDENT_INT64
2457c478bd9Sstevel@tonic-gate #define COMPILER_DEPENDENT_INT64   long long
246aa2aa9a6SDana Myers #endif
247aa2aa9a6SDana Myers 
248aa2aa9a6SDana Myers #ifndef COMPILER_DEPENDENT_UINT64
2497c478bd9Sstevel@tonic-gate #define COMPILER_DEPENDENT_UINT64  unsigned long long
250aa2aa9a6SDana Myers #endif
2517c478bd9Sstevel@tonic-gate 
252aa2aa9a6SDana Myers /* Type of mutex supported by host. Default is binary semaphores. */
253aa2aa9a6SDana Myers 
254aa2aa9a6SDana Myers #ifndef ACPI_MUTEX_TYPE
255aa2aa9a6SDana Myers #define ACPI_MUTEX_TYPE             ACPI_BINARY_SEMAPHORE
2567c478bd9Sstevel@tonic-gate #endif
2577c478bd9Sstevel@tonic-gate 
258aa2aa9a6SDana Myers /* Global Lock acquire/release */
259aa2aa9a6SDana Myers 
260aa2aa9a6SDana Myers #ifndef ACPI_ACQUIRE_GLOBAL_LOCK
26126f3cdf0SGordon Ross #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acquired) Acquired = 1
262aa2aa9a6SDana Myers #endif
263aa2aa9a6SDana Myers 
264aa2aa9a6SDana Myers #ifndef ACPI_RELEASE_GLOBAL_LOCK
26526f3cdf0SGordon Ross #define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Pending) Pending = 0
266aa2aa9a6SDana Myers #endif
267aa2aa9a6SDana Myers 
268aa2aa9a6SDana Myers /* Flush CPU cache - used when going to sleep. Wbinvd or similar. */
269aa2aa9a6SDana Myers 
270aa2aa9a6SDana Myers #ifndef ACPI_FLUSH_CPU_CACHE
271aa2aa9a6SDana Myers #define ACPI_FLUSH_CPU_CACHE()
272aa2aa9a6SDana Myers #endif
273aa2aa9a6SDana Myers 
27426f3cdf0SGordon Ross /* "inline" keywords - configurable since inline is not standardized */
27526f3cdf0SGordon Ross 
27626f3cdf0SGordon Ross #ifndef ACPI_INLINE
27726f3cdf0SGordon Ross #define ACPI_INLINE
27826f3cdf0SGordon Ross #endif
27926f3cdf0SGordon Ross 
280aa2aa9a6SDana Myers /*
281aa2aa9a6SDana Myers  * Configurable calling conventions:
282aa2aa9a6SDana Myers  *
283aa2aa9a6SDana Myers  * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads)
284aa2aa9a6SDana Myers  * ACPI_EXTERNAL_XFACE      - External ACPI interfaces
285aa2aa9a6SDana Myers  * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces
286aa2aa9a6SDana Myers  * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces
287aa2aa9a6SDana Myers  */
288aa2aa9a6SDana Myers #ifndef ACPI_SYSTEM_XFACE
289aa2aa9a6SDana Myers #define ACPI_SYSTEM_XFACE
290aa2aa9a6SDana Myers #endif
291aa2aa9a6SDana Myers 
292aa2aa9a6SDana Myers #ifndef ACPI_EXTERNAL_XFACE
293aa2aa9a6SDana Myers #define ACPI_EXTERNAL_XFACE
294aa2aa9a6SDana Myers #endif
295aa2aa9a6SDana Myers 
296aa2aa9a6SDana Myers #ifndef ACPI_INTERNAL_XFACE
297aa2aa9a6SDana Myers #define ACPI_INTERNAL_XFACE
298aa2aa9a6SDana Myers #endif
2997c478bd9Sstevel@tonic-gate 
300aa2aa9a6SDana Myers #ifndef ACPI_INTERNAL_VAR_XFACE
301aa2aa9a6SDana Myers #define ACPI_INTERNAL_VAR_XFACE
302aa2aa9a6SDana Myers #endif
3037c478bd9Sstevel@tonic-gate 
304*7b1019a6SJerry Jelinek 
3057c478bd9Sstevel@tonic-gate /*
3067c478bd9Sstevel@tonic-gate  * Debugger threading model
3077c478bd9Sstevel@tonic-gate  * Use single threaded if the entire subsystem is contained in an application
3087c478bd9Sstevel@tonic-gate  * Use multiple threaded when the subsystem is running in the kernel.
3097c478bd9Sstevel@tonic-gate  *
3107c478bd9Sstevel@tonic-gate  * By default the model is single threaded if ACPI_APPLICATION is set,
3117c478bd9Sstevel@tonic-gate  * multi-threaded if ACPI_APPLICATION is not set.
3127c478bd9Sstevel@tonic-gate  */
3137c478bd9Sstevel@tonic-gate #ifndef DEBUGGER_THREADING
314*7b1019a6SJerry Jelinek #if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP)
315*7b1019a6SJerry Jelinek #define DEBUGGER_THREADING          DEBUGGER_MULTI_THREADED
3167c478bd9Sstevel@tonic-gate 
3177c478bd9Sstevel@tonic-gate #else
318*7b1019a6SJerry Jelinek #define DEBUGGER_THREADING          DEBUGGER_SINGLE_THREADED
3197c478bd9Sstevel@tonic-gate #endif
3207c478bd9Sstevel@tonic-gate #endif /* !DEBUGGER_THREADING */
3217c478bd9Sstevel@tonic-gate 
3227c478bd9Sstevel@tonic-gate 
3237c478bd9Sstevel@tonic-gate /******************************************************************************
3247c478bd9Sstevel@tonic-gate  *
3257c478bd9Sstevel@tonic-gate  * C library configuration
3267c478bd9Sstevel@tonic-gate  *
3277c478bd9Sstevel@tonic-gate  *****************************************************************************/
3287c478bd9Sstevel@tonic-gate 
3297c478bd9Sstevel@tonic-gate /*
330aa2aa9a6SDana Myers  * ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
331aa2aa9a6SDana Myers  *      Otherwise, local versions of string/memory functions will be used.
332aa2aa9a6SDana Myers  * ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
333aa2aa9a6SDana Myers  *      the standard header files may be used.
334aa2aa9a6SDana Myers  *
335*7b1019a6SJerry Jelinek  * The ACPICA subsystem only uses low level C library functions that do not
336*7b1019a6SJerry Jelinek  * call operating system services and may therefore be inlined in the code.
337aa2aa9a6SDana Myers  *
338aa2aa9a6SDana Myers  * It may be necessary to tailor these include files to the target
339aa2aa9a6SDana Myers  * generation environment.
3407c478bd9Sstevel@tonic-gate  */
341aa2aa9a6SDana Myers #ifdef ACPI_USE_SYSTEM_CLIBRARY
342aa2aa9a6SDana Myers 
343*7b1019a6SJerry Jelinek /* Use the standard C library headers. We want to keep these to a minimum. */
344aa2aa9a6SDana Myers 
3457c478bd9Sstevel@tonic-gate #ifdef ACPI_USE_STANDARD_HEADERS
346aa2aa9a6SDana Myers 
347aa2aa9a6SDana Myers /* Use the standard headers from the standard locations */
348aa2aa9a6SDana Myers 
3497c478bd9Sstevel@tonic-gate #include <stdarg.h>
3507c478bd9Sstevel@tonic-gate #include <stdlib.h>
3517c478bd9Sstevel@tonic-gate #include <string.h>
3527c478bd9Sstevel@tonic-gate #include <ctype.h>
3537c478bd9Sstevel@tonic-gate 
3547c478bd9Sstevel@tonic-gate #endif /* ACPI_USE_STANDARD_HEADERS */
3557c478bd9Sstevel@tonic-gate 
356aa2aa9a6SDana Myers /* We will be linking to the standard Clib functions */
357aa2aa9a6SDana Myers 
3587c478bd9Sstevel@tonic-gate #else
3597c478bd9Sstevel@tonic-gate 
3607c478bd9Sstevel@tonic-gate /******************************************************************************
3617c478bd9Sstevel@tonic-gate  *
3627c478bd9Sstevel@tonic-gate  * Not using native C library, use local implementations
3637c478bd9Sstevel@tonic-gate  *
3647c478bd9Sstevel@tonic-gate  *****************************************************************************/
3657c478bd9Sstevel@tonic-gate 
366aa2aa9a6SDana Myers /*
367aa2aa9a6SDana Myers  * Use local definitions of C library macros and functions. These function
368aa2aa9a6SDana Myers  * implementations may not be as efficient as an inline or assembly code
369aa2aa9a6SDana Myers  * implementation provided by a native C library, but they are functionally
370aa2aa9a6SDana Myers  * equivalent.
3717c478bd9Sstevel@tonic-gate  */
3727c478bd9Sstevel@tonic-gate #ifndef va_arg
3737c478bd9Sstevel@tonic-gate 
3747c478bd9Sstevel@tonic-gate #ifndef _VALIST
3757c478bd9Sstevel@tonic-gate #define _VALIST
3767c478bd9Sstevel@tonic-gate typedef char *va_list;
3777c478bd9Sstevel@tonic-gate #endif /* _VALIST */
3787c478bd9Sstevel@tonic-gate 
379aa2aa9a6SDana Myers /* Storage alignment properties */
380aa2aa9a6SDana Myers 
3817c478bd9Sstevel@tonic-gate #define  _AUPBND                (sizeof (ACPI_NATIVE_INT) - 1)
3827c478bd9Sstevel@tonic-gate #define  _ADNBND                (sizeof (ACPI_NATIVE_INT) - 1)
3837c478bd9Sstevel@tonic-gate 
384aa2aa9a6SDana Myers /* Variable argument list macro definitions */
385aa2aa9a6SDana Myers 
3867c478bd9Sstevel@tonic-gate #define _Bnd(X, bnd)            (((sizeof (X)) + (bnd)) & (~(bnd)))
3877c478bd9Sstevel@tonic-gate #define va_arg(ap, T)           (*(T *)(((ap) += (_Bnd (T, _AUPBND))) - (_Bnd (T,_ADNBND))))
388*7b1019a6SJerry Jelinek #define va_end(ap)              (ap = (va_list) NULL)
3897c478bd9Sstevel@tonic-gate #define va_start(ap, A)         (void) ((ap) = (((char *) &(A)) + (_Bnd (A,_AUPBND))))
3907c478bd9Sstevel@tonic-gate 
3917c478bd9Sstevel@tonic-gate #endif /* va_arg */
3927c478bd9Sstevel@tonic-gate 
393aa2aa9a6SDana Myers /* Use the local (ACPICA) definitions of the clib functions */
3947c478bd9Sstevel@tonic-gate 
3957c478bd9Sstevel@tonic-gate #endif /* ACPI_USE_SYSTEM_CLIBRARY */
3967c478bd9Sstevel@tonic-gate 
397*7b1019a6SJerry Jelinek #ifndef ACPI_FILE
398*7b1019a6SJerry Jelinek #ifdef ACPI_APPLICATION
399*7b1019a6SJerry Jelinek #include <stdio.h>
400*7b1019a6SJerry Jelinek #define ACPI_FILE              FILE *
401*7b1019a6SJerry Jelinek #define ACPI_FILE_OUT          stdout
402*7b1019a6SJerry Jelinek #define ACPI_FILE_ERR          stderr
403*7b1019a6SJerry Jelinek #else
404*7b1019a6SJerry Jelinek #define ACPI_FILE              void *
405*7b1019a6SJerry Jelinek #define ACPI_FILE_OUT          NULL
406*7b1019a6SJerry Jelinek #define ACPI_FILE_ERR          NULL
407*7b1019a6SJerry Jelinek #endif /* ACPI_APPLICATION */
408*7b1019a6SJerry Jelinek #endif /* ACPI_FILE */
409*7b1019a6SJerry Jelinek 
4107c478bd9Sstevel@tonic-gate #endif /* __ACENV_H__ */
411