Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
434 giacomo 1
/******************************************************************************
2
 *
3
 * Name: acenv.h - Generation environment specific items
4
 *
5
 *****************************************************************************/
6
 
7
/*
8
 * Copyright (C) 2000 - 2003, 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
/*
49
 * Configuration for ACPI tools and utilities
50
 */
51
 
52
#ifdef _ACPI_DUMP_APP
53
#ifndef MSDOS
54
#define ACPI_DEBUG_OUTPUT
55
#endif
56
#define ACPI_APPLICATION
57
#define ACPI_DISASSEMBLER
58
#define ACPI_NO_METHOD_EXECUTION
59
#define ACPI_USE_SYSTEM_CLIBRARY
60
#endif
61
 
62
#ifdef _ACPI_EXEC_APP
63
#undef DEBUGGER_THREADING
64
#define DEBUGGER_THREADING      DEBUGGER_SINGLE_THREADED
65
#define ACPI_DEBUG_OUTPUT
66
#define ACPI_APPLICATION
67
#define ACPI_DEBUGGER
68
#define ACPI_DISASSEMBLER
69
#define ACPI_USE_SYSTEM_CLIBRARY
70
#endif
71
 
72
#ifdef _ACPI_ASL_COMPILER
73
#define ACPI_DEBUG_OUTPUT
74
#define ACPI_APPLICATION
75
#define ACPI_DISASSEMBLER
76
#define ACPI_CONSTANT_EVAL_ONLY
77
#define ACPI_USE_SYSTEM_CLIBRARY
78
#endif
79
 
80
/*
81
 * Environment configuration.  The purpose of this file is to interface to the
82
 * local generation environment.
83
 *
84
 * 1) ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
85
 *      Otherwise, local versions of string/memory functions will be used.
86
 * 2) ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
87
 *      the standard header files may be used.
88
 *
89
 * The ACPI subsystem only uses low level C library functions that do not call
90
 * operating system services and may therefore be inlined in the code.
91
 *
92
 * It may be necessary to tailor these include files to the target
93
 * generation environment.
94
 *
95
 *
96
 * Functions and constants used from each header:
97
 *
98
 * string.h:    memcpy
99
 *              memset
100
 *              strcat
101
 *              strcmp
102
 *              strcpy
103
 *              strlen
104
 *              strncmp
105
 *              strncat
106
 *              strncpy
107
 *
108
 * stdlib.h:    strtoul
109
 *
110
 * stdarg.h:    va_list
111
 *              va_arg
112
 *              va_start
113
 *              va_end
114
 *
115
 */
116
 
117
/*! [Begin] no source code translation */
118
 
119
#if defined(__linux__)
120
#include "aclinux.h"
121
 
122
#elif defined(_AED_EFI)
123
#include "acefi.h"
124
 
125
#elif defined(WIN32)
126
#include "acwin.h"
127
 
128
#elif defined(WIN64)
129
#include "acwin64.h"
130
 
131
#elif defined(MSDOS)        /* Must appear after WIN32 and WIN64 check */
132
#include "acdos16.h"
133
 
134
#elif defined(__FreeBSD__)
135
#include "acfreebsd.h"
136
 
137
#elif defined(__NetBSD__)
138
#include "acnetbsd.h"
139
 
140
#elif defined(MODESTO)
141
#include "acmodesto.h"
142
 
143
#elif defined(NETWARE)
144
#include "acnetware.h"
145
 
146
#else
147
 
148
/* All other environments */
149
 
150
#define ACPI_USE_STANDARD_HEADERS
151
 
152
#define COMPILER_DEPENDENT_INT64   long long
153
#define COMPILER_DEPENDENT_UINT64  unsigned long long
154
 
155
 
156
/* Name of host operating system (returned by the _OS_ namespace object) */
157
 
158
#define ACPI_OS_NAME         "Intel ACPI/CA Core Subsystem"
159
 
160
/* This macro is used to tag functions as "printf-like" because
161
 * some compilers can catch printf format string problems. MSVC
162
 * doesn't, so this is proprocessed away.
163
 */
164
#define ACPI_PRINTF_LIKE_FUNC
165
 
166
#endif
167
 
168
/*
169
 * Memory allocation tracking.  Used only if
170
 * 1) This is the debug version
171
 * 2) This is NOT a 16-bit version of the code (not enough real-mode memory)
172
 */
173
#ifdef ACPI_DEBUG_OUTPUT
174
#if ACPI_MACHINE_WIDTH != 16
175
#define ACPI_DBG_TRACK_ALLOCATIONS
176
#endif
177
#endif
178
 
179
/*! [End] no source code translation !*/
180
 
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
#ifdef ACPI_USE_SYSTEM_CLIBRARY
209
/*
210
 * Use the standard C library headers.
211
 * We want to keep these to a minimum.
212
 */
213
 
214
#ifdef ACPI_USE_STANDARD_HEADERS
215
/*
216
 * Use the standard headers from the standard locations
217
 */
218
#include <stdarg.h>
219
#include <stdlib.h>
220
#include <string.h>
221
#include <ctype.h>
222
 
223
#endif /* ACPI_USE_STANDARD_HEADERS */
224
 
225
/*
226
 * We will be linking to the standard Clib functions
227
 */
228
 
229
#define ACPI_STRSTR(s1,s2)      strstr((s1), (s2))
230
#define ACPI_STRUPR(s)          (void) acpi_ut_strupr ((s))
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_MEMCPY(d,s,n)      (void) memcpy((d), (s), (acpi_size)(n))
240
#define ACPI_MEMSET(d,s,n)      (void) memset((d), (s), (acpi_size)(n))
241
 
242
#define ACPI_TOUPPER            toupper
243
#define ACPI_TOLOWER            tolower
244
#define ACPI_IS_XDIGIT          isxdigit
245
#define ACPI_IS_DIGIT           isdigit
246
#define ACPI_IS_SPACE           isspace
247
#define ACPI_IS_UPPER           isupper
248
#define ACPI_IS_PRINT           isprint
249
#define ACPI_IS_ALPHA           isalpha
250
#define ACPI_IS_ASCII           isascii
251
 
252
/******************************************************************************
253
 *
254
 * Not using native C library, use local implementations
255
 *
256
 *****************************************************************************/
257
#else
258
 
259
/*
260
 * Use local definitions of C library macros and functions
261
 * NOTE: The function implementations may not be as efficient
262
 * as an inline or assembly code implementation provided by a
263
 * native C library.
264
 */
265
 
266
#ifndef va_arg
267
 
268
#ifndef _VALIST
269
#define _VALIST
270
typedef char *va_list;
271
#endif /* _VALIST */
272
 
273
/*
274
 * Storage alignment properties
275
 */
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
 
284
#define _bnd(X, bnd)            (((sizeof (X)) + (bnd)) & (~(bnd)))
285
#define va_arg(ap, T)           (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND))))
286
#define va_end(ap)              (void) 0
287
#define va_start(ap, A)         (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))
288
 
289
#endif /* va_arg */
290
 
291
 
292
#define ACPI_STRSTR(s1,s2)      acpi_ut_strstr ((s1), (s2))
293
#define ACPI_STRUPR(s)          (void) acpi_ut_strupr ((s))
294
#define ACPI_STRLEN(s)          (acpi_size) acpi_ut_strlen ((s))
295
#define ACPI_STRCPY(d,s)        (void) acpi_ut_strcpy ((d), (s))
296
#define ACPI_STRNCPY(d,s,n)     (void) acpi_ut_strncpy ((d), (s), (acpi_size)(n))
297
#define ACPI_STRNCMP(d,s,n)     acpi_ut_strncmp ((d), (s), (acpi_size)(n))
298
#define ACPI_STRCMP(d,s)        acpi_ut_strcmp ((d), (s))
299
#define ACPI_STRCAT(d,s)        (void) acpi_ut_strcat ((d), (s))
300
#define ACPI_STRNCAT(d,s,n)     acpi_ut_strncat ((d), (s), (acpi_size)(n))
301
#define ACPI_STRTOUL(d,s,n)     acpi_ut_strtoul ((d), (s), (acpi_size)(n))
302
#define ACPI_MEMCPY(d,s,n)      (void) acpi_ut_memcpy ((d), (s), (acpi_size)(n))
303
#define ACPI_MEMSET(d,v,n)      (void) acpi_ut_memset ((d), (v), (acpi_size)(n))
304
#define ACPI_TOUPPER            acpi_ut_to_upper
305
#define ACPI_TOLOWER            acpi_ut_to_lower
306
 
307
#endif /* ACPI_USE_SYSTEM_CLIBRARY */
308
 
309
 
310
/******************************************************************************
311
 *
312
 * Assembly code macros
313
 *
314
 *****************************************************************************/
315
 
316
/*
317
 * Handle platform- and compiler-specific assembly language differences.
318
 * These should already have been defined by the platform includes above.
319
 *
320
 * Notes:
321
 * 1) Interrupt 3 is used to break into a debugger
322
 * 2) Interrupts are turned off during ACPI register setup
323
 */
324
 
325
/* Unrecognized compiler, use defaults */
326
 
327
#ifndef ACPI_ASM_MACROS
328
 
329
/*
330
 * Calling conventions:
331
 *
332
 * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads)
333
 * ACPI_EXTERNAL_XFACE      - External ACPI interfaces
334
 * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces
335
 * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces
336
 */
337
#define ACPI_SYSTEM_XFACE
338
#define ACPI_EXTERNAL_XFACE
339
#define ACPI_INTERNAL_XFACE
340
#define ACPI_INTERNAL_VAR_XFACE
341
 
342
#define ACPI_ASM_MACROS
343
#define BREAKPOINT3
344
#define ACPI_DISABLE_IRQS()
345
#define ACPI_ENABLE_IRQS()
346
#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acq)
347
#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, acq)
348
 
349
#endif /* ACPI_ASM_MACROS */
350
 
351
 
352
#ifdef ACPI_APPLICATION
353
 
354
/* Don't want software interrupts within a ring3 application */
355
 
356
#undef BREAKPOINT3
357
#define BREAKPOINT3
358
#endif
359
 
360
 
361
/******************************************************************************
362
 *
363
 * Compiler-specific information is contained in the compiler-specific
364
 * headers.
365
 *
366
 *****************************************************************************/
367
#endif /* __ACENV_H__ */