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 - 2019, 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/*! [Begin] no source code translation */ 132 133/****************************************************************************** 134 * 135 * Host configuration files. The compiler configuration files are included 136 * first. 137 * 138 *****************************************************************************/ 139 140#if defined(__GNUC__) && !defined(__INTEL_COMPILER) 141#include <acpi/platform/acgcc.h> 142 143#elif defined(_MSC_VER) 144#include "acmsvc.h" 145 146#elif defined(__INTEL_COMPILER) 147#include <acpi/platform/acintel.h> 148 149#endif 150 151#if defined(_LINUX) || defined(__linux__) 152#include <acpi/platform/aclinux.h> 153 154#elif defined(_APPLE) || defined(__APPLE__) 155#include "acmacosx.h" 156 157#elif defined(__DragonFly__) 158#include "acdragonfly.h" 159 160#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) 161#include "acfreebsd.h" 162 163#elif defined(__NetBSD__) 164#include "acnetbsd.h" 165 166#elif defined(__sun) 167#include "acsolaris.h" 168 169#elif defined(MODESTO) 170#include "acmodesto.h" 171 172#elif defined(NETWARE) 173#include "acnetware.h" 174 175#elif defined(_CYGWIN) 176#include "accygwin.h" 177 178#elif defined(WIN32) 179#include "acwin.h" 180 181#elif defined(WIN64) 182#include "acwin64.h" 183 184#elif defined(_WRS_LIB_BUILD) 185#include "acvxworks.h" 186 187#elif defined(__OS2__) 188#include "acos2.h" 189 190#elif defined(__HAIKU__) 191#include "achaiku.h" 192 193#elif defined(__QNX__) 194#include "acqnx.h" 195 196/* 197 * EFI applications can be built with -nostdlib, in this case, it must be 198 * included after including all other host environmental definitions, in 199 * order to override the definitions. 200 */ 201#elif defined(_AED_EFI) || defined(_GNU_EFI) || defined(_EDK2_EFI) 202#include "acefi.h" 203 204#else 205 206/* Unknown environment */ 207 208#error Unknown target environment 209#endif 210 211/*! [End] no source code translation !*/ 212 213/****************************************************************************** 214 * 215 * Setup defaults for the required symbols that were not defined in one of 216 * the host/compiler files above. 217 * 218 *****************************************************************************/ 219 220/* 64-bit data types */ 221 222#ifndef COMPILER_DEPENDENT_INT64 223#define COMPILER_DEPENDENT_INT64 long long 224#endif 225 226#ifndef COMPILER_DEPENDENT_UINT64 227#define COMPILER_DEPENDENT_UINT64 unsigned long long 228#endif 229 230/* Type of mutex supported by host. Default is binary semaphores. */ 231#ifndef ACPI_MUTEX_TYPE 232#define ACPI_MUTEX_TYPE ACPI_BINARY_SEMAPHORE 233#endif 234 235/* Global Lock acquire/release */ 236 237#ifndef ACPI_ACQUIRE_GLOBAL_LOCK 238#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acquired) acquired = 1 239#endif 240 241#ifndef ACPI_RELEASE_GLOBAL_LOCK 242#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0 243#endif 244 245/* Flush CPU cache - used when going to sleep. Wbinvd or similar. */ 246 247#ifndef ACPI_FLUSH_CPU_CACHE 248#define ACPI_FLUSH_CPU_CACHE() 249#endif 250 251/* "inline" keywords - configurable since inline is not standardized */ 252 253#ifndef ACPI_INLINE 254#define ACPI_INLINE 255#endif 256 257/* Use ordered initialization if compiler doesn't support designated. */ 258#ifndef ACPI_STRUCT_INIT 259#define ACPI_STRUCT_INIT(field, value) value 260#endif 261 262/* 263 * Configurable calling conventions: 264 * 265 * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) 266 * ACPI_EXTERNAL_XFACE - External ACPI interfaces 267 * ACPI_INTERNAL_XFACE - Internal ACPI interfaces 268 * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces 269 */ 270#ifndef ACPI_SYSTEM_XFACE 271#define ACPI_SYSTEM_XFACE 272#endif 273 274#ifndef ACPI_EXTERNAL_XFACE 275#define ACPI_EXTERNAL_XFACE 276#endif 277 278#ifndef ACPI_INTERNAL_XFACE 279#define ACPI_INTERNAL_XFACE 280#endif 281 282#ifndef ACPI_INTERNAL_VAR_XFACE 283#define ACPI_INTERNAL_VAR_XFACE 284#endif 285 286/* 287 * Debugger threading model 288 * Use single threaded if the entire subsystem is contained in an application 289 * Use multiple threaded when the subsystem is running in the kernel. 290 * 291 * By default the model is single threaded if ACPI_APPLICATION is set, 292 * multi-threaded if ACPI_APPLICATION is not set. 293 */ 294#ifndef DEBUGGER_THREADING 295#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP) 296#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED 297 298#else 299#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED 300#endif 301#endif /* !DEBUGGER_THREADING */ 302 303/****************************************************************************** 304 * 305 * C library configuration 306 * 307 *****************************************************************************/ 308 309/* 310 * ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library. 311 * Otherwise, local versions of string/memory functions will be used. 312 * ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and 313 * the standard header files may be used. Defining this implies that 314 * ACPI_USE_SYSTEM_CLIBRARY has been defined. 315 * 316 * The ACPICA subsystem only uses low level C library functions that do not 317 * call operating system services and may therefore be inlined in the code. 318 * 319 * It may be necessary to tailor these include files to the target 320 * generation environment. 321 */ 322 323/* Use the standard C library headers. We want to keep these to a minimum. */ 324 325#ifdef ACPI_USE_STANDARD_HEADERS 326 327/* Use the standard headers from the standard locations */ 328 329#include <stdlib.h> 330#include <string.h> 331#include <ctype.h> 332#if defined (ACPI_APPLICATION) || defined(ACPI_LIBRARY) 333#include <stdio.h> 334#include <fcntl.h> 335#include <errno.h> 336#include <time.h> 337#include <signal.h> 338#endif 339 340#endif /* ACPI_USE_STANDARD_HEADERS */ 341 342#ifdef ACPI_APPLICATION 343#define ACPI_FILE FILE * 344#define ACPI_FILE_OUT stdout 345#define ACPI_FILE_ERR stderr 346#else 347#define ACPI_FILE void * 348#define ACPI_FILE_OUT NULL 349#define ACPI_FILE_ERR NULL 350#endif /* ACPI_APPLICATION */ 351 352#ifndef ACPI_INIT_FUNCTION 353#define ACPI_INIT_FUNCTION 354#endif 355 356#endif /* __ACENV_H__ */ 357