linux/include/acpi/platform/acgcc.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
   2/******************************************************************************
   3 *
   4 * Name: acgcc.h - GCC specific defines, etc.
   5 *
   6 * Copyright (C) 2000 - 2021, Intel Corp.
   7 *
   8 *****************************************************************************/
   9
  10#ifndef __ACGCC_H__
  11#define __ACGCC_H__
  12
  13#ifndef va_arg
  14#ifdef __KERNEL__
  15#include <linux/stdarg.h>
  16#else
  17#include <stdarg.h>
  18#endif /* __KERNEL__ */
  19#endif /* ! va_arg */
  20
  21#define ACPI_INLINE             __inline__
  22
  23/* Function name is used for debug output. Non-ANSI, compiler-dependent */
  24
  25#define ACPI_GET_FUNCTION_NAME          __func__
  26
  27/*
  28 * This macro is used to tag functions as "printf-like" because
  29 * some compilers (like GCC) can catch printf format string problems.
  30 */
  31#define ACPI_PRINTF_LIKE(c) __attribute__ ((__format__ (__printf__, c, c+1)))
  32
  33/*
  34 * Some compilers complain about unused variables. Sometimes we don't want to
  35 * use all the variables (for example, _acpi_module_name). This allows us
  36 * to tell the compiler warning in a per-variable manner that a variable
  37 * is unused.
  38 */
  39#define ACPI_UNUSED_VAR __attribute__ ((unused))
  40
  41/* GCC supports __VA_ARGS__ in macros */
  42
  43#define COMPILER_VA_MACRO               1
  44
  45/* GCC supports native multiply/shift on 32-bit platforms */
  46
  47#define ACPI_USE_NATIVE_MATH64
  48
  49/* GCC did not support __has_attribute until 5.1. */
  50
  51#ifndef __has_attribute
  52#define __has_attribute(x) 0
  53#endif
  54
  55/*
  56 * Explicitly mark intentional explicit fallthrough to silence
  57 * -Wimplicit-fallthrough in GCC 7.1+.
  58 */
  59
  60#if __has_attribute(__fallthrough__)
  61#define ACPI_FALLTHROUGH __attribute__((__fallthrough__))
  62#endif
  63
  64#endif                          /* __ACGCC_H__ */
  65