Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/acpi/platform/acgcc.h
26285 views
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 - 2025, 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
/*
65
* Flexible array members are not allowed to be part of a union under
66
* C99, but this is not for any technical reason. Work around the
67
* limitation.
68
*/
69
#define ACPI_FLEX_ARRAY(TYPE, NAME) \
70
struct { \
71
struct { } __Empty_ ## NAME; \
72
TYPE NAME[]; \
73
}
74
75
/*
76
* Explicitly mark strings that lack a terminating NUL character so
77
* that ACPICA can be built with -Wunterminated-string-initialization.
78
*/
79
#if __has_attribute(__nonstring__)
80
#define ACPI_NONSTRING __attribute__((__nonstring__))
81
#endif
82
83
#endif /* __ACGCC_H__ */
84
85