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