373 lines · c
1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */2/******************************************************************************3 *4 * Name: acenv.h - Host and compiler configuration5 *6 * Copyright (C) 2000 - 2023, 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 ACPICA15 * 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 022#define ACPI_OSL_MUTEX 123 24/* Types for DEBUGGER_THREADING */25 26#define DEBUGGER_SINGLE_THREADED 027#define DEBUGGER_MULTI_THREADED 128 29/******************************************************************************30 *31 * Configuration for ACPI tools and utilities32 *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_APPLICATION47#define ACPI_SINGLE_THREADED48#define USE_NATIVE_ALLOCATE_ZEROED49#endif50 51/* iASL configuration */52 53#ifdef ACPI_ASL_COMPILER54#define ACPI_DEBUG_OUTPUT55#define ACPI_CONSTANT_EVAL_ONLY56#define ACPI_LARGE_NAMESPACE_NODE57#define ACPI_DATA_TABLE_DISASSEMBLY58#define ACPI_32BIT_PHYSICAL_ADDRESS59#define ACPI_DISASSEMBLER 160#endif61 62/* acpi_exec configuration. Multithreaded with full AML debugger */63 64#ifdef ACPI_EXEC_APP65#define ACPI_APPLICATION66#define ACPI_FULL_DEBUG67#define ACPI_MUTEX_DEBUG68#define ACPI_DBG_TRACK_ALLOCATIONS69#endif70 71/* acpi_help configuration. Error messages disabled. */72 73#ifdef ACPI_HELP_APP74#define ACPI_NO_ERROR_MESSAGES75#endif76 77/* acpi_names configuration. Debug output enabled. */78 79#ifdef ACPI_NAMES_APP80#define ACPI_DEBUG_OUTPUT81#endif82 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_POINTER89#endif90 91/* acpi_dump configuration. Native mapping used if provided by the host */92 93#ifdef ACPI_DUMP_APP94#define ACPI_USE_NATIVE_MEMORY_MAPPING95#endif96 97/* acpi_names/Example configuration. Hardware disabled */98 99#if (defined ACPI_EXAMPLE_APP) || \100 (defined ACPI_NAMES_APP)101#define ACPI_REDUCED_HARDWARE 1102#endif103 104/* Linkable ACPICA library. Two versions, one with full debug. */105 106#ifdef ACPI_LIBRARY107#define ACPI_USE_LOCAL_CACHE108#define ACPI_DEBUGGER 1109#define ACPI_DISASSEMBLER 1110 111#ifdef _DEBUG112#define ACPI_DEBUG_OUTPUT113#endif114#endif115 116/* Common for all ACPICA applications */117 118#ifdef ACPI_APPLICATION119#define ACPI_USE_LOCAL_CACHE120#endif121 122/* Common debug/disassembler support */123 124#ifdef ACPI_FULL_DEBUG125#define ACPI_DEBUG_OUTPUT126#define ACPI_DEBUGGER 1127#define ACPI_DISASSEMBLER 1128#endif129 130 131/*132 * acpisrc CR\LF support133 * Unix file line endings do not include the carriage return.134 * If the acpisrc utility is being built using a microsoft compiler, it means135 * that it will be running on a windows machine which means that the output is136 * expected to have CR/LF newlines. If the acpisrc utility is built with137 * anything else, it will likely run on a system with LF newlines. This flag138 * tells the acpisrc utility that newlines will be in the LF format.139 */140#define ACPI_SRC_OS_LF_ONLY 0141 142/*! [Begin] no source code translation */143 144/******************************************************************************145 *146 * Host configuration files. The compiler configuration files are included147 * 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#endif158 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 be206 * included after including all other host environmental definitions, in207 * 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#else215 216/* Unknown environment */217 218#error Unknown target environment219#endif220 221/*! [End] no source code translation !*/222 223/******************************************************************************224 *225 * Setup defaults for the required symbols that were not defined in one of226 * the host/compiler files above.227 *228 *****************************************************************************/229 230/* 64-bit data types */231 232#ifndef COMPILER_DEPENDENT_INT64233#define COMPILER_DEPENDENT_INT64 long long234#endif235 236#ifndef COMPILER_DEPENDENT_UINT64237#define COMPILER_DEPENDENT_UINT64 unsigned long long238#endif239 240/* Type of mutex supported by host. Default is binary semaphores. */241#ifndef ACPI_MUTEX_TYPE242#define ACPI_MUTEX_TYPE ACPI_BINARY_SEMAPHORE243#endif244 245/* Global Lock acquire/release */246 247#ifndef ACPI_ACQUIRE_GLOBAL_LOCK248#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acquired) acquired = 1249#endif250 251#ifndef ACPI_RELEASE_GLOBAL_LOCK252#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0253#endif254 255/* NULL/invalid value to use for destroyed or not-yet-created semaphores. */256 257#ifndef ACPI_SEMAPHORE_NULL258#define ACPI_SEMAPHORE_NULL NULL259#endif260 261/* Flush CPU cache - used when going to sleep. Wbinvd or similar. */262 263#ifndef ACPI_FLUSH_CPU_CACHE264#define ACPI_FLUSH_CPU_CACHE()265#endif266 267/* "inline" keywords - configurable since inline is not standardized */268 269#ifndef ACPI_INLINE270#define ACPI_INLINE271#endif272 273/* Use ordered initialization if compiler doesn't support designated. */274#ifndef ACPI_STRUCT_INIT275#define ACPI_STRUCT_INIT(field, value) value276#endif277 278/*279 * Configurable calling conventions:280 *281 * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads)282 * ACPI_EXTERNAL_XFACE - External ACPI interfaces283 * ACPI_INTERNAL_XFACE - Internal ACPI interfaces284 * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces285 */286#ifndef ACPI_SYSTEM_XFACE287#define ACPI_SYSTEM_XFACE288#endif289 290#ifndef ACPI_EXTERNAL_XFACE291#define ACPI_EXTERNAL_XFACE292#endif293 294#ifndef ACPI_INTERNAL_XFACE295#define ACPI_INTERNAL_XFACE296#endif297 298#ifndef ACPI_INTERNAL_VAR_XFACE299#define ACPI_INTERNAL_VAR_XFACE300#endif301 302/*303 * Debugger threading model304 * Use single threaded if the entire subsystem is contained in an application305 * 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_THREADING311#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP)312#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED313 314#else315#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED316#endif317#endif /* !DEBUGGER_THREADING */318 319/******************************************************************************320 *321 * C library configuration322 *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 and329 * the standard header files may be used. Defining this implies that330 * ACPI_USE_SYSTEM_CLIBRARY has been defined.331 *332 * The ACPICA subsystem only uses low level C library functions that do not333 * 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 target336 * 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_HEADERS342 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#endif355 356#endif /* ACPI_USE_STANDARD_HEADERS */357 358#ifdef ACPI_APPLICATION359#define ACPI_FILE FILE *360#define ACPI_FILE_OUT stdout361#define ACPI_FILE_ERR stderr362#else363#define ACPI_FILE void *364#define ACPI_FILE_OUT NULL365#define ACPI_FILE_ERR NULL366#endif /* ACPI_APPLICATION */367 368#ifndef ACPI_INIT_FUNCTION369#define ACPI_INIT_FUNCTION370#endif371 372#endif /* __ACENV_H__ */373