acenv.h (9382B)
1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ 2/****************************************************************************** 3 * 4 * Name: acenv.h - Host and compiler configuration 5 * 6 * Copyright (C) 2000 - 2022, Intel Corp. 7 * 8 *****************************************************************************/ 9 10#ifndef __ACENV_H__ 11#define __ACENV_H__ 12 13/* 14 * Environment configuration. The purpose of this file is to interface ACPICA 15 * to the local environment. This includes compiler-specific, OS-specific, 16 * and machine-specific configuration. 17 */ 18 19/* Types for ACPI_MUTEX_TYPE */ 20 21#define ACPI_BINARY_SEMAPHORE 0 22#define ACPI_OSL_MUTEX 1 23 24/* Types for DEBUGGER_THREADING */ 25 26#define DEBUGGER_SINGLE_THREADED 0 27#define DEBUGGER_MULTI_THREADED 1 28 29/****************************************************************************** 30 * 31 * Configuration for ACPI tools and utilities 32 * 33 *****************************************************************************/ 34 35/* Common application configuration. All single threaded except for acpi_exec. */ 36 37#if (defined ACPI_ASL_COMPILER) || \ 38 (defined ACPI_BIN_APP) || \ 39 (defined ACPI_DUMP_APP) || \ 40 (defined ACPI_HELP_APP) || \ 41 (defined ACPI_NAMES_APP) || \ 42 (defined ACPI_SRC_APP) || \ 43 (defined ACPI_XTRACT_APP) || \ 44 (defined ACPI_EXAMPLE_APP) || \ 45 (defined ACPI_EFI_HELLO) 46#define ACPI_APPLICATION 47#define ACPI_SINGLE_THREADED 48#define USE_NATIVE_ALLOCATE_ZEROED 49#endif 50 51/* iASL configuration */ 52 53#ifdef ACPI_ASL_COMPILER 54#define ACPI_DEBUG_OUTPUT 55#define ACPI_CONSTANT_EVAL_ONLY 56#define ACPI_LARGE_NAMESPACE_NODE 57#define ACPI_DATA_TABLE_DISASSEMBLY 58#define ACPI_32BIT_PHYSICAL_ADDRESS 59#define ACPI_DISASSEMBLER 1 60#endif 61 62/* acpi_exec configuration. Multithreaded with full AML debugger */ 63 64#ifdef ACPI_EXEC_APP 65#define ACPI_APPLICATION 66#define ACPI_FULL_DEBUG 67#define ACPI_MUTEX_DEBUG 68#define ACPI_DBG_TRACK_ALLOCATIONS 69#endif 70 71/* acpi_help configuration. Error messages disabled. */ 72 73#ifdef ACPI_HELP_APP 74#define ACPI_NO_ERROR_MESSAGES 75#endif 76 77/* acpi_names configuration. Debug output enabled. */ 78 79#ifdef ACPI_NAMES_APP 80#define ACPI_DEBUG_OUTPUT 81#endif 82 83/* acpi_exec/acpi_names/Example configuration. Native RSDP used. */ 84 85#if (defined ACPI_EXEC_APP) || \ 86 (defined ACPI_EXAMPLE_APP) || \ 87 (defined ACPI_NAMES_APP) 88#define ACPI_USE_NATIVE_RSDP_POINTER 89#endif 90 91/* acpi_dump configuration. Native mapping used if provided by the host */ 92 93#ifdef ACPI_DUMP_APP 94#define ACPI_USE_NATIVE_MEMORY_MAPPING 95#endif 96 97/* acpi_names/Example configuration. Hardware disabled */ 98 99#if (defined ACPI_EXAMPLE_APP) || \ 100 (defined ACPI_NAMES_APP) 101#define ACPI_REDUCED_HARDWARE 1 102#endif 103 104/* Linkable ACPICA library. Two versions, one with full debug. */ 105 106#ifdef ACPI_LIBRARY 107#define ACPI_USE_LOCAL_CACHE 108#define ACPI_DEBUGGER 1 109#define ACPI_DISASSEMBLER 1 110 111#ifdef _DEBUG 112#define ACPI_DEBUG_OUTPUT 113#endif 114#endif 115 116/* Common for all ACPICA applications */ 117 118#ifdef ACPI_APPLICATION 119#define ACPI_USE_LOCAL_CACHE 120#endif 121 122/* Common debug/disassembler support */ 123 124#ifdef ACPI_FULL_DEBUG 125#define ACPI_DEBUG_OUTPUT 126#define ACPI_DEBUGGER 1 127#define ACPI_DISASSEMBLER 1 128#endif 129 130 131/* 132 * acpisrc CR\LF support 133 * Unix file line endings do not include the carriage return. 134 * If the acpisrc utility is being built using a microsoft compiler, it means 135 * that it will be running on a windows machine which means that the output is 136 * expected to have CR/LF newlines. If the acpisrc utility is built with 137 * anything else, it will likely run on a system with LF newlines. This flag 138 * tells the acpisrc utility that newlines will be in the LF format. 139 */ 140#define ACPI_SRC_OS_LF_ONLY 0 141 142/*! [Begin] no source code translation */ 143 144/****************************************************************************** 145 * 146 * Host configuration files. The compiler configuration files are included 147 * first. 148 * 149 *****************************************************************************/ 150 151#if defined(__GNUC__) && !defined(__INTEL_COMPILER) 152#include <acpi/platform/acgcc.h> 153 154#elif defined(_MSC_VER) 155#include "acmsvc.h" 156 157#elif defined(__INTEL_COMPILER) 158#include <acpi/platform/acintel.h> 159 160#endif 161 162#if defined(_LINUX) || defined(__linux__) 163#include <acpi/platform/aclinux.h> 164 165#elif defined(_APPLE) || defined(__APPLE__) 166#include "acmacosx.h" 167 168#elif defined(__DragonFly__) 169#include "acdragonfly.h" 170 171#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) 172#include "acfreebsd.h" 173 174#elif defined(__NetBSD__) 175#include "acnetbsd.h" 176 177#elif defined(__sun) 178#include "acsolaris.h" 179 180#elif defined(MODESTO) 181#include "acmodesto.h" 182 183#elif defined(NETWARE) 184#include "acnetware.h" 185 186#elif defined(_CYGWIN) 187#include "accygwin.h" 188 189#elif defined(WIN32) 190#include "acwin.h" 191 192#elif defined(WIN64) 193#include "acwin64.h" 194 195#elif defined(_WRS_LIB_BUILD) 196#include "acvxworks.h" 197 198#elif defined(__OS2__) 199#include "acos2.h" 200 201#elif defined(__HAIKU__) 202#include "achaiku.h" 203 204#elif defined(__QNX__) 205#include "acqnx.h" 206 207/* 208 * EFI applications can be built with -nostdlib, in this case, it must be 209 * included after including all other host environmental definitions, in 210 * order to override the definitions. 211 */ 212#elif defined(_AED_EFI) || defined(_GNU_EFI) || defined(_EDK2_EFI) 213#include "acefi.h" 214 215#else 216 217/* Unknown environment */ 218 219#error Unknown target environment 220#endif 221 222/*! [End] no source code translation !*/ 223 224/****************************************************************************** 225 * 226 * Setup defaults for the required symbols that were not defined in one of 227 * the host/compiler files above. 228 * 229 *****************************************************************************/ 230 231/* 64-bit data types */ 232 233#ifndef COMPILER_DEPENDENT_INT64 234#define COMPILER_DEPENDENT_INT64 long long 235#endif 236 237#ifndef COMPILER_DEPENDENT_UINT64 238#define COMPILER_DEPENDENT_UINT64 unsigned long long 239#endif 240 241/* Type of mutex supported by host. Default is binary semaphores. */ 242#ifndef ACPI_MUTEX_TYPE 243#define ACPI_MUTEX_TYPE ACPI_BINARY_SEMAPHORE 244#endif 245 246/* Global Lock acquire/release */ 247 248#ifndef ACPI_ACQUIRE_GLOBAL_LOCK 249#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acquired) acquired = 1 250#endif 251 252#ifndef ACPI_RELEASE_GLOBAL_LOCK 253#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0 254#endif 255 256/* Flush CPU cache - used when going to sleep. Wbinvd or similar. */ 257 258#ifndef ACPI_FLUSH_CPU_CACHE 259#define ACPI_FLUSH_CPU_CACHE() 260#endif 261 262/* "inline" keywords - configurable since inline is not standardized */ 263 264#ifndef ACPI_INLINE 265#define ACPI_INLINE 266#endif 267 268/* Use ordered initialization if compiler doesn't support designated. */ 269#ifndef ACPI_STRUCT_INIT 270#define ACPI_STRUCT_INIT(field, value) value 271#endif 272 273/* 274 * Configurable calling conventions: 275 * 276 * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) 277 * ACPI_EXTERNAL_XFACE - External ACPI interfaces 278 * ACPI_INTERNAL_XFACE - Internal ACPI interfaces 279 * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces 280 */ 281#ifndef ACPI_SYSTEM_XFACE 282#define ACPI_SYSTEM_XFACE 283#endif 284 285#ifndef ACPI_EXTERNAL_XFACE 286#define ACPI_EXTERNAL_XFACE 287#endif 288 289#ifndef ACPI_INTERNAL_XFACE 290#define ACPI_INTERNAL_XFACE 291#endif 292 293#ifndef ACPI_INTERNAL_VAR_XFACE 294#define ACPI_INTERNAL_VAR_XFACE 295#endif 296 297/* 298 * Debugger threading model 299 * Use single threaded if the entire subsystem is contained in an application 300 * Use multiple threaded when the subsystem is running in the kernel. 301 * 302 * By default the model is single threaded if ACPI_APPLICATION is set, 303 * multi-threaded if ACPI_APPLICATION is not set. 304 */ 305#ifndef DEBUGGER_THREADING 306#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP) 307#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED 308 309#else 310#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED 311#endif 312#endif /* !DEBUGGER_THREADING */ 313 314/****************************************************************************** 315 * 316 * C library configuration 317 * 318 *****************************************************************************/ 319 320/* 321 * ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library. 322 * Otherwise, local versions of string/memory functions will be used. 323 * ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and 324 * the standard header files may be used. Defining this implies that 325 * ACPI_USE_SYSTEM_CLIBRARY has been defined. 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 334/* Use the standard C library headers. We want to keep these to a minimum. */ 335 336#ifdef ACPI_USE_STANDARD_HEADERS 337 338/* Use the standard headers from the standard locations */ 339 340#include <stdlib.h> 341#include <string.h> 342#include <ctype.h> 343#if defined (ACPI_APPLICATION) || defined(ACPI_LIBRARY) 344#include <stdio.h> 345#include <fcntl.h> 346#include <errno.h> 347#include <time.h> 348#include <signal.h> 349#endif 350 351#endif /* ACPI_USE_STANDARD_HEADERS */ 352 353#ifdef ACPI_APPLICATION 354#define ACPI_FILE FILE * 355#define ACPI_FILE_OUT stdout 356#define ACPI_FILE_ERR stderr 357#else 358#define ACPI_FILE void * 359#define ACPI_FILE_OUT NULL 360#define ACPI_FILE_ERR NULL 361#endif /* ACPI_APPLICATION */ 362 363#ifndef ACPI_INIT_FUNCTION 364#define ACPI_INIT_FUNCTION 365#endif 366 367#endif /* __ACENV_H__ */