libmetal
Loading...
Searching...
No Matches
compiler.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7/*
8 * @file gcc/compiler.h
9 * @brief GCC specific primitives for libmetal.
10 */
11
12#ifndef __METAL_GCC_COMPILER__H__
13#define __METAL_GCC_COMPILER__H__
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19#define restrict __restrict__
20#define metal_align(n) __attribute__((aligned(n)))
21#define metal_weak __attribute__((weak))
22
23#if defined(__STRICT_ANSI__)
24#define metal_asm __asm__
25#else
26/*
27 * Even though __asm__ is always available in mainline GCC, we use asm in
28 * the non-strict modes for compatibility with other compilers that define
29 * __GNUC__
30 */
31#define metal_asm asm
32#endif
33
34#define METAL_PACKED_BEGIN
35#define METAL_PACKED_END __attribute__((__packed__))
36
37#ifndef __deprecated
38#define __deprecated __attribute__((deprecated))
39#endif
40
41#ifdef __cplusplus
42}
43#endif
44
45#endif /* __METAL_GCC_COMPILER__H__ */