Subversion Repositories Kolibri OS

Rev

Rev 6588 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6588 serge 1
/******************************************************************************
2
 *
3
 * Name: acenv.h - Host and compiler configuration
4
 *
5
 *****************************************************************************/
6
 
7
/*
8
 * Copyright (C) 2000 - 2015, 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 __ACENV_H__
45
#define __ACENV_H__
46
 
47
/*
48
 * Environment configuration. The purpose of this file is to interface ACPICA
49
 * to the local environment. This includes compiler-specific, OS-specific,
50
 * and machine-specific configuration.
51
 */
52
 
53
/* Types for ACPI_MUTEX_TYPE */
54
 
55
#define ACPI_BINARY_SEMAPHORE       0
56
#define ACPI_OSL_MUTEX              1
57
 
58
/* Types for DEBUGGER_THREADING */
59
 
60
#define DEBUGGER_SINGLE_THREADED    0
61
#define DEBUGGER_MULTI_THREADED     1
62
 
63
/******************************************************************************
64
 *
65
 * Configuration for ACPI tools and utilities
66
 *
67
 *****************************************************************************/
68
 
69
/* iASL configuration */
70
 
71
#ifdef ACPI_ASL_COMPILER
72
#define ACPI_APPLICATION
73
#define ACPI_DEBUG_OUTPUT
74
#define ACPI_CONSTANT_EVAL_ONLY
75
#define ACPI_LARGE_NAMESPACE_NODE
76
#define ACPI_DATA_TABLE_DISASSEMBLY
77
#define ACPI_SINGLE_THREADED
78
#define ACPI_32BIT_PHYSICAL_ADDRESS
79
 
80
#define ACPI_DISASSEMBLER 1
81
#endif
82
 
83
/* acpi_exec configuration. Multithreaded with full AML debugger */
84
 
85
#ifdef ACPI_EXEC_APP
86
#define ACPI_APPLICATION
87
#define ACPI_FULL_DEBUG
88
#define ACPI_MUTEX_DEBUG
89
#define ACPI_DBG_TRACK_ALLOCATIONS
90
#endif
91
 
92
/*
93
 * acpi_bin/acpi_dump/acpi_help/acpi_names/acpi_src/acpi_xtract/Example
94
 * configuration. All single threaded.
95
 */
96
#if (defined ACPI_BIN_APP)      || \
97
	(defined ACPI_DUMP_APP)     || \
98
	(defined ACPI_HELP_APP)     || \
99
	(defined ACPI_NAMES_APP)    || \
100
	(defined ACPI_SRC_APP)      || \
101
	(defined ACPI_XTRACT_APP)   || \
102
	(defined ACPI_EXAMPLE_APP)
103
#define ACPI_APPLICATION
104
#define ACPI_SINGLE_THREADED
105
#endif
106
 
107
/* acpi_help configuration. Error messages disabled. */
108
 
109
#ifdef ACPI_HELP_APP
110
#define ACPI_NO_ERROR_MESSAGES
111
#endif
112
 
113
/* acpi_names configuration. Debug output enabled. */
114
 
115
#ifdef ACPI_NAMES_APP
116
#define ACPI_DEBUG_OUTPUT
117
#endif
118
 
119
/* acpi_exec/acpi_names/Example configuration. Native RSDP used. */
120
 
121
#if (defined ACPI_EXEC_APP)     || \
122
	(defined ACPI_EXAMPLE_APP)  || \
123
	(defined ACPI_NAMES_APP)
124
#define ACPI_USE_NATIVE_RSDP_POINTER
125
#endif
126
 
127
/* acpi_dump configuration. Native mapping used if provided by the host */
128
 
129
#ifdef ACPI_DUMP_APP
130
#define ACPI_USE_NATIVE_MEMORY_MAPPING
131
#define USE_NATIVE_ALLOCATE_ZEROED
132
#endif
133
 
134
/* acpi_names/Example configuration. Hardware disabled */
135
 
136
#if (defined ACPI_EXAMPLE_APP)  || \
137
	(defined ACPI_NAMES_APP)
138
#define ACPI_REDUCED_HARDWARE 1
139
#endif
140
 
141
/* Linkable ACPICA library */
142
 
143
#ifdef ACPI_LIBRARY
144
#define ACPI_USE_LOCAL_CACHE
145
#define ACPI_FULL_DEBUG
146
#endif
147
 
148
/* Common for all ACPICA applications */
149
 
150
#ifdef ACPI_APPLICATION
151
#define ACPI_USE_SYSTEM_CLIBRARY
152
#define ACPI_USE_LOCAL_CACHE
153
#endif
154
 
155
/* Common debug/disassembler support */
156
 
157
#ifdef ACPI_FULL_DEBUG
158
#define ACPI_DEBUG_OUTPUT
159
#define ACPI_DEBUGGER 1
160
#define ACPI_DISASSEMBLER 1
161
#endif
162
 
163
 
164
/*! [Begin] no source code translation */
165
 
166
/******************************************************************************
167
 *
168
 * Host configuration files. The compiler configuration files are included
169
 * by the host files.
170
 *
171
 *****************************************************************************/
172
 
173
#if defined(_LINUX) || defined(__linux__)
174
#include 
175
 
176
#elif defined(_APPLE) || defined(__APPLE__)
177
#include "acmacosx.h"
178
 
179
#elif defined(__DragonFly__)
180
#include "acdragonfly.h"
181
 
182
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
183
#include "acfreebsd.h"
184
 
185
#elif defined(__NetBSD__)
186
#include "acnetbsd.h"
187
 
188
#elif defined(__sun)
189
#include "acsolaris.h"
190
 
191
#elif defined(MODESTO)
192
#include "acmodesto.h"
193
 
194
#elif defined(NETWARE)
195
#include "acnetware.h"
196
 
197
#elif defined(_CYGWIN)
198
#include "accygwin.h"
199
 
200
#elif defined(WIN32)
201
#include "acwin.h"
202
 
203
#elif defined(WIN64)
204
#include "acwin64.h"
205
 
206
#elif defined(_WRS_LIB_BUILD)
207
#include "acvxworks.h"
208
 
209
#elif defined(__OS2__)
210
#include "acos2.h"
211
 
212
#elif defined(_AED_EFI)
213
#include "acefi.h"
214
 
215
#elif defined(_GNU_EFI)
216
#include "acefi.h"
217
 
218
#elif defined(__HAIKU__)
219
#include "achaiku.h"
220
 
221
#else
222
 
223
/* Unknown environment */
224
 
225
#error Unknown target environment
226
#endif
227
 
228
/*! [End] no source code translation !*/
229
 
230
/******************************************************************************
231
 *
232
 * Setup defaults for the required symbols that were not defined in one of
233
 * the host/compiler files above.
234
 *
235
 *****************************************************************************/
236
 
237
/* 64-bit data types */
238
 
239
#ifndef COMPILER_DEPENDENT_INT64
240
#define COMPILER_DEPENDENT_INT64   long long
241
#endif
242
 
243
#ifndef COMPILER_DEPENDENT_UINT64
244
#define COMPILER_DEPENDENT_UINT64  unsigned long long
245
#endif
246
 
247
/* Type of mutex supported by host. Default is binary semaphores. */
248
#ifndef ACPI_MUTEX_TYPE
6594 serge 249
#define ACPI_MUTEX_TYPE             ACPI_OSL_MUTEX
6588 serge 250
#endif
251
 
252
/* Global Lock acquire/release */
253
 
254
#ifndef ACPI_ACQUIRE_GLOBAL_LOCK
255
#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acquired) acquired = 1
256
#endif
257
 
258
#ifndef ACPI_RELEASE_GLOBAL_LOCK
259
#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0
260
#endif
261
 
262
/* Flush CPU cache - used when going to sleep. Wbinvd or similar. */
263
 
264
#ifndef ACPI_FLUSH_CPU_CACHE
265
#define ACPI_FLUSH_CPU_CACHE()
266
#endif
267
 
268
/* "inline" keywords - configurable since inline is not standardized */
269
 
270
#ifndef ACPI_INLINE
271
#define ACPI_INLINE
272
#endif
273
 
274
/*
275
 * Configurable calling conventions:
276
 *
277
 * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads)
278
 * ACPI_EXTERNAL_XFACE      - External ACPI interfaces
279
 * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces
280
 * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces
281
 */
282
#ifndef ACPI_SYSTEM_XFACE
283
#define ACPI_SYSTEM_XFACE
284
#endif
285
 
286
#ifndef ACPI_EXTERNAL_XFACE
287
#define ACPI_EXTERNAL_XFACE
288
#endif
289
 
290
#ifndef ACPI_INTERNAL_XFACE
291
#define ACPI_INTERNAL_XFACE
292
#endif
293
 
294
#ifndef ACPI_INTERNAL_VAR_XFACE
295
#define ACPI_INTERNAL_VAR_XFACE
296
#endif
297
 
298
/*
299
 * Debugger threading model
300
 * Use single threaded if the entire subsystem is contained in an application
301
 * Use multiple threaded when the subsystem is running in the kernel.
302
 *
303
 * By default the model is single threaded if ACPI_APPLICATION is set,
304
 * multi-threaded if ACPI_APPLICATION is not set.
305
 */
306
#ifndef DEBUGGER_THREADING
307
#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP)
308
#define DEBUGGER_THREADING          DEBUGGER_MULTI_THREADED
309
 
310
#else
311
#define DEBUGGER_THREADING          DEBUGGER_SINGLE_THREADED
312
#endif
313
#endif				/* !DEBUGGER_THREADING */
314
 
315
/******************************************************************************
316
 *
317
 * C library configuration
318
 *
319
 *****************************************************************************/
320
 
321
/*
322
 * ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
323
 *      Otherwise, local versions of string/memory functions will be used.
324
 * ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
325
 *      the standard header files may be used.
326
 *
327
 * The ACPICA subsystem only uses low level C library functions that do not
328
 * call operating system services and may therefore be inlined in the code.
329
 *
330
 * It may be necessary to tailor these include files to the target
331
 * generation environment.
332
 */
333
#ifdef ACPI_USE_SYSTEM_CLIBRARY
334
 
335
/* Use the standard C library headers. We want to keep these to a minimum. */
336
 
337
#ifdef ACPI_USE_STANDARD_HEADERS
338
 
339
/* Use the standard headers from the standard locations */
340
 
341
#include 
342
#include 
343
#include 
344
#include 
345
 
346
#endif				/* ACPI_USE_STANDARD_HEADERS */
347
 
348
/* We will be linking to the standard Clib functions */
349
 
350
#else
351
 
352
/******************************************************************************
353
 *
354
 * Not using native C library, use local implementations
355
 *
356
 *****************************************************************************/
357
 
358
/*
359
 * Use local definitions of C library macros and functions. These function
360
 * implementations may not be as efficient as an inline or assembly code
361
 * implementation provided by a native C library, but they are functionally
362
 * equivalent.
363
 */
364
#ifndef va_arg
365
 
366
#ifndef _VALIST
367
#define _VALIST
368
typedef char *va_list;
369
#endif				/* _VALIST */
370
 
371
/* Storage alignment properties */
372
 
373
#define  _AUPBND                (sizeof (acpi_native_int) - 1)
374
#define  _ADNBND                (sizeof (acpi_native_int) - 1)
375
 
376
/* Variable argument list macro definitions */
377
 
378
#define _bnd(X, bnd)            (((sizeof (X)) + (bnd)) & (~(bnd)))
379
#define va_arg(ap, T)           (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND))))
380
#define va_end(ap)              (ap = (va_list) NULL)
381
#define va_start(ap, A)         (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))
382
 
383
#endif				/* va_arg */
384
 
385
/* Use the local (ACPICA) definitions of the clib functions */
386
 
387
#endif				/* ACPI_USE_SYSTEM_CLIBRARY */
388
 
389
#ifndef ACPI_FILE
390
#ifdef ACPI_APPLICATION
391
#include 
392
#define ACPI_FILE              FILE *
393
#define ACPI_FILE_OUT          stdout
394
#define ACPI_FILE_ERR          stderr
395
#else
396
#define ACPI_FILE              void *
397
#define ACPI_FILE_OUT          NULL
398
#define ACPI_FILE_ERR          NULL
399
#endif				/* ACPI_APPLICATION */
400
#endif				/* ACPI_FILE */
401
 
402
#endif				/* __ACENV_H__ */