Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Do not make oldconfig when building kitten
[palacios-OLD.git] / kitten / include / acpi / platform / acenv.h
1 /******************************************************************************
2  *
3  * Name: acenv.h - Generation environment specific items
4  *
5  *****************************************************************************/
6
7 /*
8  * Copyright (C) 2000 - 2006, R. Byron Moore
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 __ACENV_H__
45 #define __ACENV_H__
46
47 /*
48  * Configuration for ACPI tools and utilities
49  */
50
51 #ifdef ACPI_LIBRARY
52 /*
53  * Note: The non-debug version of the acpi_library does not contain any
54  * debug support, for minimimal size. The debug version uses ACPI_FULL_DEBUG
55  */
56 #define ACPI_USE_LOCAL_CACHE
57 #endif
58
59 #ifdef ACPI_ASL_COMPILER
60 #define ACPI_DEBUG_OUTPUT
61 #define ACPI_APPLICATION
62 #define ACPI_DISASSEMBLER
63 #define ACPI_CONSTANT_EVAL_ONLY
64 #define ACPI_LARGE_NAMESPACE_NODE
65 #define ACPI_DATA_TABLE_DISASSEMBLY
66 #endif
67
68 #ifdef ACPI_EXEC_APP
69 #undef DEBUGGER_THREADING
70 #define DEBUGGER_THREADING      DEBUGGER_SINGLE_THREADED
71 #define ACPI_FULL_DEBUG
72 #define ACPI_APPLICATION
73 #define ACPI_DEBUGGER
74 #define ACPI_MUTEX_DEBUG
75 #define ACPI_DBG_TRACK_ALLOCATIONS
76 #endif
77
78 #ifdef ACPI_DASM_APP
79 #ifndef MSDOS
80 #define ACPI_DEBUG_OUTPUT
81 #endif
82 #define ACPI_APPLICATION
83 #define ACPI_DISASSEMBLER
84 #define ACPI_NO_METHOD_EXECUTION
85 #define ACPI_LARGE_NAMESPACE_NODE
86 #define ACPI_DATA_TABLE_DISASSEMBLY
87 #endif
88
89 #ifdef ACPI_APPLICATION
90 #define ACPI_USE_SYSTEM_CLIBRARY
91 #define ACPI_USE_LOCAL_CACHE
92 #endif
93
94 #ifdef ACPI_FULL_DEBUG
95 #define ACPI_DEBUGGER
96 #define ACPI_DEBUG_OUTPUT
97 #define ACPI_DISASSEMBLER
98 #endif
99
100 /*
101  * Environment configuration.  The purpose of this file is to interface to the
102  * local generation environment.
103  *
104  * 1) ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
105  *      Otherwise, local versions of string/memory functions will be used.
106  * 2) ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
107  *      the standard header files may be used.
108  *
109  * The ACPI subsystem only uses low level C library functions that do not call
110  * operating system services and may therefore be inlined in the code.
111  *
112  * It may be necessary to tailor these include files to the target
113  * generation environment.
114  *
115  *
116  * Functions and constants used from each header:
117  *
118  * string.h:    memcpy
119  *              memset
120  *              strcat
121  *              strcmp
122  *              strcpy
123  *              strlen
124  *              strncmp
125  *              strncat
126  *              strncpy
127  *
128  * stdlib.h:    strtoul
129  *
130  * stdarg.h:    va_list
131  *              va_arg
132  *              va_start
133  *              va_end
134  *
135  */
136
137 /*! [Begin] no source code translation */
138
139 #if defined(__linux__)
140 #include "aclinux.h"
141
142 #elif defined(_AED_EFI)
143 #include "acefi.h"
144
145 #elif defined(WIN32)
146 #include "acwin.h"
147
148 #elif defined(WIN64)
149 #include "acwin64.h"
150
151 #elif defined(MSDOS)            /* Must appear after WIN32 and WIN64 check */
152 #include "acdos16.h"
153
154 #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
155 #include "acfreebsd.h"
156
157 #elif defined(__NetBSD__)
158 #include "acnetbsd.h"
159
160 #elif defined(MODESTO)
161 #include "acmodesto.h"
162
163 #elif defined(NETWARE)
164 #include "acnetware.h"
165
166 #elif defined(__sun)
167 #include "acsolaris.h"
168
169 #else
170
171 /* All other environments */
172
173 #define ACPI_USE_STANDARD_HEADERS
174
175 #define COMPILER_DEPENDENT_INT64   long long
176 #define COMPILER_DEPENDENT_UINT64  unsigned long long
177
178 #endif
179
180 /*! [End] no source code translation !*/
181
182 /*
183  * Debugger threading model
184  * Use single threaded if the entire subsystem is contained in an application
185  * Use multiple threaded when the subsystem is running in the kernel.
186  *
187  * By default the model is single threaded if ACPI_APPLICATION is set,
188  * multi-threaded if ACPI_APPLICATION is not set.
189  */
190 #define DEBUGGER_SINGLE_THREADED    0
191 #define DEBUGGER_MULTI_THREADED     1
192
193 #ifndef DEBUGGER_THREADING
194 #ifdef ACPI_APPLICATION
195 #define DEBUGGER_THREADING          DEBUGGER_SINGLE_THREADED
196
197 #else
198 #define DEBUGGER_THREADING          DEBUGGER_MULTI_THREADED
199 #endif
200 #endif                          /* !DEBUGGER_THREADING */
201
202 /******************************************************************************
203  *
204  * C library configuration
205  *
206  *****************************************************************************/
207
208 #define ACPI_IS_ASCII(c)  ((c) < 0x80)
209
210 #ifdef ACPI_USE_SYSTEM_CLIBRARY
211 /*
212  * Use the standard C library headers.
213  * We want to keep these to a minimum.
214  */
215 #ifdef ACPI_USE_STANDARD_HEADERS
216 /*
217  * Use the standard headers from the standard locations
218  */
219 #include <stdarg.h>
220 #include <stdlib.h>
221 #include <string.h>
222 #include <ctype.h>
223
224 #endif                          /* ACPI_USE_STANDARD_HEADERS */
225
226 /*
227  * We will be linking to the standard Clib functions
228  */
229 #define ACPI_STRSTR(s1,s2)      strstr((s1), (s2))
230 #define ACPI_STRCHR(s1,c)       strchr((s1), (c))
231 #define ACPI_STRLEN(s)          (acpi_size) strlen((s))
232 #define ACPI_STRCPY(d,s)        (void) strcpy((d), (s))
233 #define ACPI_STRNCPY(d,s,n)     (void) strncpy((d), (s), (acpi_size)(n))
234 #define ACPI_STRNCMP(d,s,n)     strncmp((d), (s), (acpi_size)(n))
235 #define ACPI_STRCMP(d,s)        strcmp((d), (s))
236 #define ACPI_STRCAT(d,s)        (void) strcat((d), (s))
237 #define ACPI_STRNCAT(d,s,n)     strncat((d), (s), (acpi_size)(n))
238 #define ACPI_STRTOUL(d,s,n)     strtoul((d), (s), (acpi_size)(n))
239 #define ACPI_MEMCMP(s1,s2,n)    memcmp((const char *)(s1), (const char *)(s2), (acpi_size)(n))
240 #define ACPI_MEMCPY(d,s,n)      (void) memcpy((d), (s), (acpi_size)(n))
241 #define ACPI_MEMSET(d,s,n)      (void) memset((d), (s), (acpi_size)(n))
242
243 #define ACPI_TOUPPER(i)         toupper((int) (i))
244 #define ACPI_TOLOWER(i)         tolower((int) (i))
245 #define ACPI_IS_XDIGIT(i)       isxdigit((int) (i))
246 #define ACPI_IS_DIGIT(i)        isdigit((int) (i))
247 #define ACPI_IS_SPACE(i)        isspace((int) (i))
248 #define ACPI_IS_UPPER(i)        isupper((int) (i))
249 #define ACPI_IS_PRINT(i)        isprint((int) (i))
250 #define ACPI_IS_ALPHA(i)        isalpha((int) (i))
251
252 #else
253
254 /******************************************************************************
255  *
256  * Not using native C library, use local implementations
257  *
258  *****************************************************************************/
259
260  /*
261   * Use local definitions of C library macros and functions
262   * NOTE: The function implementations may not be as efficient
263   * as an inline or assembly code implementation provided by a
264   * native C library.
265   */
266
267 #ifndef va_arg
268
269 #ifndef _VALIST
270 #define _VALIST
271 typedef char *va_list;
272 #endif                          /* _VALIST */
273
274 /*
275  * Storage alignment properties
276  */
277 #define  _AUPBND                (sizeof (acpi_native_int) - 1)
278 #define  _ADNBND                (sizeof (acpi_native_int) - 1)
279
280 /*
281  * Variable argument list macro definitions
282  */
283 #define _bnd(X, bnd)            (((sizeof (X)) + (bnd)) & (~(bnd)))
284 #define va_arg(ap, T)           (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND))))
285 #define va_end(ap)              (void) 0
286 #define va_start(ap, A)         (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))
287
288 #endif                          /* va_arg */
289
290 #define ACPI_STRSTR(s1,s2)      acpi_ut_strstr ((s1), (s2))
291 #define ACPI_STRCHR(s1,c)       acpi_ut_strchr ((s1), (c))
292 #define ACPI_STRLEN(s)          (acpi_size) acpi_ut_strlen ((s))
293 #define ACPI_STRCPY(d,s)        (void) acpi_ut_strcpy ((d), (s))
294 #define ACPI_STRNCPY(d,s,n)     (void) acpi_ut_strncpy ((d), (s), (acpi_size)(n))
295 #define ACPI_STRNCMP(d,s,n)     acpi_ut_strncmp ((d), (s), (acpi_size)(n))
296 #define ACPI_STRCMP(d,s)        acpi_ut_strcmp ((d), (s))
297 #define ACPI_STRCAT(d,s)        (void) acpi_ut_strcat ((d), (s))
298 #define ACPI_STRNCAT(d,s,n)     acpi_ut_strncat ((d), (s), (acpi_size)(n))
299 #define ACPI_STRTOUL(d,s,n)     acpi_ut_strtoul ((d), (s), (acpi_size)(n))
300 #define ACPI_MEMCMP(s1,s2,n)    acpi_ut_memcmp((const char *)(s1), (const char *)(s2), (acpi_size)(n))
301 #define ACPI_MEMCPY(d,s,n)      (void) acpi_ut_memcpy ((d), (s), (acpi_size)(n))
302 #define ACPI_MEMSET(d,v,n)      (void) acpi_ut_memset ((d), (v), (acpi_size)(n))
303 #define ACPI_TOUPPER            acpi_ut_to_upper
304 #define ACPI_TOLOWER            acpi_ut_to_lower
305
306 #endif                          /* ACPI_USE_SYSTEM_CLIBRARY */
307
308 /******************************************************************************
309  *
310  * Assembly code macros
311  *
312  *****************************************************************************/
313
314 /*
315  * Handle platform- and compiler-specific assembly language differences.
316  * These should already have been defined by the platform includes above.
317  *
318  * Notes:
319  * 1) Interrupt 3 is used to break into a debugger
320  * 2) Interrupts are turned off during ACPI register setup
321  */
322
323 /* Unrecognized compiler, use defaults */
324
325 #ifndef ACPI_ASM_MACROS
326
327 /*
328  * Calling conventions:
329  *
330  * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads)
331  * ACPI_EXTERNAL_XFACE      - External ACPI interfaces
332  * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces
333  * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces
334  */
335 #define ACPI_SYSTEM_XFACE
336 #define ACPI_EXTERNAL_XFACE
337 #define ACPI_INTERNAL_XFACE
338 #define ACPI_INTERNAL_VAR_XFACE
339
340 #define ACPI_ASM_MACROS
341 #define BREAKPOINT3
342 #define ACPI_DISABLE_IRQS()
343 #define ACPI_ENABLE_IRQS()
344 #define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acq)
345 #define ACPI_RELEASE_GLOBAL_LOCK(Glptr, acq)
346
347 #endif                          /* ACPI_ASM_MACROS */
348
349 #ifdef ACPI_APPLICATION
350
351 /* Don't want software interrupts within a ring3 application */
352
353 #undef BREAKPOINT3
354 #define BREAKPOINT3
355 #endif
356
357 /******************************************************************************
358  *
359  * Compiler-specific information is contained in the compiler-specific
360  * headers.
361  *
362  *****************************************************************************/
363 #endif                          /* __ACENV_H__ */