cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

aclinux.h (6539B)


      1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
      2/******************************************************************************
      3 *
      4 * Name: aclinux.h - OS specific defines, etc. for Linux
      5 *
      6 * Copyright (C) 2000 - 2022, Intel Corp.
      7 *
      8 *****************************************************************************/
      9
     10#ifndef __ACLINUX_H__
     11#define __ACLINUX_H__
     12
     13#ifdef __KERNEL__
     14
     15/* ACPICA external files should not include ACPICA headers directly. */
     16
     17#if !defined(BUILDING_ACPICA) && !defined(_LINUX_ACPI_H)
     18#error "Please don't include <acpi/acpi.h> directly, include <linux/acpi.h> instead."
     19#endif
     20
     21#endif
     22
     23/* Common (in-kernel/user-space) ACPICA configuration */
     24
     25#define ACPI_USE_SYSTEM_CLIBRARY
     26#define ACPI_USE_DO_WHILE_0
     27#define ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS
     28
     29#ifdef __KERNEL__
     30
     31#define ACPI_USE_SYSTEM_INTTYPES
     32#define ACPI_USE_GPE_POLLING
     33
     34/* Kernel specific ACPICA configuration */
     35
     36#ifdef CONFIG_PCI
     37#define ACPI_PCI_CONFIGURED
     38#endif
     39
     40#ifdef CONFIG_ACPI_REDUCED_HARDWARE_ONLY
     41#define ACPI_REDUCED_HARDWARE 1
     42#endif
     43
     44#ifdef CONFIG_ACPI_DEBUGGER
     45#define ACPI_DEBUGGER
     46#endif
     47
     48#ifdef CONFIG_ACPI_DEBUG
     49#define ACPI_MUTEX_DEBUG
     50#endif
     51
     52#include <linux/string.h>
     53#include <linux/kernel.h>
     54#include <linux/ctype.h>
     55#include <linux/sched.h>
     56#include <linux/atomic.h>
     57#include <linux/math64.h>
     58#include <linux/slab.h>
     59#include <linux/spinlock_types.h>
     60#ifdef EXPORT_ACPI_INTERFACES
     61#include <linux/export.h>
     62#endif
     63#ifdef CONFIG_ACPI
     64#include <asm/acenv.h>
     65#endif
     66
     67#define ACPI_INIT_FUNCTION __init
     68
     69/* Use a specific bugging default separate from ACPICA */
     70
     71#undef ACPI_DEBUG_DEFAULT
     72#define ACPI_DEBUG_DEFAULT          (ACPI_LV_INFO | ACPI_LV_REPAIR)
     73
     74#ifndef CONFIG_ACPI
     75
     76/* External globals for __KERNEL__, stubs is needed */
     77
     78#define ACPI_GLOBAL(t,a)
     79#define ACPI_INIT_GLOBAL(t,a,b)
     80
     81/* Generating stubs for configurable ACPICA macros */
     82
     83#define ACPI_NO_MEM_ALLOCATIONS
     84
     85/* Generating stubs for configurable ACPICA functions */
     86
     87#define ACPI_NO_ERROR_MESSAGES
     88#undef ACPI_DEBUG_OUTPUT
     89
     90/* External interface for __KERNEL__, stub is needed */
     91
     92#define ACPI_EXTERNAL_RETURN_STATUS(prototype) \
     93	static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);}
     94#define ACPI_EXTERNAL_RETURN_OK(prototype) \
     95	static ACPI_INLINE prototype {return(AE_OK);}
     96#define ACPI_EXTERNAL_RETURN_VOID(prototype) \
     97	static ACPI_INLINE prototype {return;}
     98#define ACPI_EXTERNAL_RETURN_UINT32(prototype) \
     99	static ACPI_INLINE prototype {return(0);}
    100#define ACPI_EXTERNAL_RETURN_PTR(prototype) \
    101	static ACPI_INLINE prototype {return(NULL);}
    102
    103#endif				/* CONFIG_ACPI */
    104
    105/* Host-dependent types and defines for in-kernel ACPICA */
    106
    107#define ACPI_MACHINE_WIDTH          BITS_PER_LONG
    108#define ACPI_USE_NATIVE_MATH64
    109#define ACPI_EXPORT_SYMBOL(symbol)  EXPORT_SYMBOL(symbol);
    110#define strtoul                     simple_strtoul
    111
    112#define acpi_cache_t                        struct kmem_cache
    113#define acpi_spinlock                       spinlock_t *
    114#define acpi_raw_spinlock                   raw_spinlock_t *
    115#define acpi_cpu_flags                      unsigned long
    116
    117#define acpi_uintptr_t                      uintptr_t
    118
    119#define ACPI_TO_INTEGER(p)                  ((uintptr_t)(p))
    120#define ACPI_OFFSET(d, f)                   offsetof(d, f)
    121
    122/* Use native linux version of acpi_os_allocate_zeroed */
    123
    124#define USE_NATIVE_ALLOCATE_ZEROED
    125
    126/* Use logical addresses for accessing GPE registers in system memory */
    127
    128#define ACPI_GPE_USE_LOGICAL_ADDRESSES
    129
    130/*
    131 * Overrides for in-kernel ACPICA
    132 */
    133#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize
    134#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate
    135#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate
    136#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate_zeroed
    137#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_free
    138#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object
    139#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id
    140#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock
    141#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_raw_lock
    142#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_raw_lock
    143#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_raw_lock
    144#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_raw_lock
    145
    146/*
    147 * OSL interfaces used by debugger/disassembler
    148 */
    149#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_readable
    150#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_writable
    151#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize_debugger
    152#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate_debugger
    153
    154/*
    155 * OSL interfaces used by utilities
    156 */
    157#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_redirect_output
    158#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_name
    159#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_index
    160#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_address
    161#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_directory
    162#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_next_filename
    163#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_directory
    164
    165#define ACPI_MSG_ERROR          KERN_ERR "ACPI Error: "
    166#define ACPI_MSG_EXCEPTION      KERN_ERR "ACPI Exception: "
    167#define ACPI_MSG_WARNING        KERN_WARNING "ACPI Warning: "
    168#define ACPI_MSG_INFO           KERN_INFO "ACPI: "
    169
    170#define ACPI_MSG_BIOS_ERROR     KERN_ERR "ACPI BIOS Error (bug): "
    171#define ACPI_MSG_BIOS_WARNING   KERN_WARNING "ACPI BIOS Warning (bug): "
    172
    173/*
    174 * Linux wants to use designated initializers for function pointer structs.
    175 */
    176#define ACPI_STRUCT_INIT(field, value)	.field = value
    177
    178#else				/* !__KERNEL__ */
    179
    180#define ACPI_USE_STANDARD_HEADERS
    181
    182#ifdef ACPI_USE_STANDARD_HEADERS
    183#include <unistd.h>
    184#endif
    185
    186/* Define/disable kernel-specific declarators */
    187
    188#ifndef __init
    189#define __init
    190#endif
    191#ifndef __iomem
    192#define __iomem
    193#endif
    194
    195/* Host-dependent types and defines for user-space ACPICA */
    196
    197#define ACPI_FLUSH_CPU_CACHE()
    198#define ACPI_CAST_PTHREAD_T(pthread) ((acpi_thread_id) (pthread))
    199
    200#if defined(__ia64__)    || (defined(__x86_64__) && !defined(__ILP32__)) ||\
    201	defined(__aarch64__) || defined(__PPC64__) ||\
    202	defined(__s390x__) ||\
    203	(defined(__riscv) && (defined(__LP64__) || defined(_LP64)))
    204#define ACPI_MACHINE_WIDTH          64
    205#define COMPILER_DEPENDENT_INT64    long
    206#define COMPILER_DEPENDENT_UINT64   unsigned long
    207#else
    208#define ACPI_MACHINE_WIDTH          32
    209#define COMPILER_DEPENDENT_INT64    long long
    210#define COMPILER_DEPENDENT_UINT64   unsigned long long
    211#define ACPI_USE_NATIVE_DIVIDE
    212#define ACPI_USE_NATIVE_MATH64
    213#endif
    214
    215#ifndef __cdecl
    216#define __cdecl
    217#endif
    218
    219#endif				/* __KERNEL__ */
    220
    221#endif				/* __ACLINUX_H__ */