blob: 423f0db7d810d9785bfa808a309ebb38767da4b0 [file] [log] [blame]
Antonio Nino Diaz1b465f82018-08-13 19:51:26 +01001/*
Yann Gautierc92490b2022-08-29 09:33:46 +02002 * Copyright (c) 2018-2022, ARM Limited and Contributors. All rights reserved.
Antonio Nino Diaz1b465f82018-08-13 19:51:26 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef CDEFS_H
8#define CDEFS_H
9
10#define __dead2 __attribute__((__noreturn__))
11#define __deprecated __attribute__((__deprecated__))
12#define __packed __attribute__((__packed__))
13#define __used __attribute__((__used__))
14#define __unused __attribute__((__unused__))
Yann Gautierc92490b2022-08-29 09:33:46 +020015#define __maybe_unused __attribute__((__unused__))
Antonio Nino Diaz1b465f82018-08-13 19:51:26 +010016#define __aligned(x) __attribute__((__aligned__(x)))
17#define __section(x) __attribute__((__section__(x)))
Daniel Boulby468f0d72018-09-18 11:45:51 +010018#if RECLAIM_INIT_CODE
19/*
20 * Add each function to a section that is unique so the functions can still
21 * be garbage collected
22 */
23#define __init __section(".text.init." __FILE__ "." __XSTRING(__LINE__))
24#else
25#define __init
26#endif
Antonio Nino Diaz1b465f82018-08-13 19:51:26 +010027
28#define __printflike(fmtarg, firstvararg) \
29 __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
30
31#define __weak_reference(sym, alias) \
32 __asm__(".weak alias"); \
33 __asm__(".equ alias, sym")
34
35#define __STRING(x) #x
36#define __XSTRING(x) __STRING(x)
37
38#endif /* CDEFS_H */