Subversion Repositories Kolibri OS

Rev

Rev 6594 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /******************************************************************************
  2.  *
  3.  * Name: acenv.h - Host and compiler configuration
  4.  *
  5.  *****************************************************************************/
  6.  
  7. /*
  8.  * Copyright (C) 2000 - 2016, 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 <acpi/platform/aclinux.h>
  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
  249. #define ACPI_MUTEX_TYPE             ACPI_OSL_MUTEX
  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 <stdarg.h>
  342. #include <stdlib.h>
  343. #include <string.h>
  344. #include <ctype.h>
  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 <stdio.h>
  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__ */
  403.