xref: /aosp_15_r20/external/arm-trusted-firmware/include/lib/libc/cdefs.h (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong Park /*
2*54fd6939SJiyong Park  * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
3*54fd6939SJiyong Park  *
4*54fd6939SJiyong Park  * SPDX-License-Identifier: BSD-3-Clause
5*54fd6939SJiyong Park  */
6*54fd6939SJiyong Park 
7*54fd6939SJiyong Park #ifndef CDEFS_H
8*54fd6939SJiyong Park #define CDEFS_H
9*54fd6939SJiyong Park 
10*54fd6939SJiyong Park #define __dead2		__attribute__((__noreturn__))
11*54fd6939SJiyong Park #define __deprecated	__attribute__((__deprecated__))
12*54fd6939SJiyong Park #define __packed	__attribute__((__packed__))
13*54fd6939SJiyong Park #define __used		__attribute__((__used__))
14*54fd6939SJiyong Park #define __unused	__attribute__((__unused__))
15*54fd6939SJiyong Park #define __aligned(x)	__attribute__((__aligned__(x)))
16*54fd6939SJiyong Park #define __section(x)	__attribute__((__section__(x)))
17*54fd6939SJiyong Park #if RECLAIM_INIT_CODE
18*54fd6939SJiyong Park /*
19*54fd6939SJiyong Park  * Add each function to a section that is unique so the functions can still
20*54fd6939SJiyong Park  * be garbage collected
21*54fd6939SJiyong Park  */
22*54fd6939SJiyong Park #define __init		__section(".text.init." __FILE__ "." __XSTRING(__LINE__))
23*54fd6939SJiyong Park #else
24*54fd6939SJiyong Park #define __init
25*54fd6939SJiyong Park #endif
26*54fd6939SJiyong Park 
27*54fd6939SJiyong Park #define __printflike(fmtarg, firstvararg) \
28*54fd6939SJiyong Park 		__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
29*54fd6939SJiyong Park 
30*54fd6939SJiyong Park #define __weak_reference(sym, alias)	\
31*54fd6939SJiyong Park 	__asm__(".weak alias");		\
32*54fd6939SJiyong Park 	__asm__(".equ alias, sym")
33*54fd6939SJiyong Park 
34*54fd6939SJiyong Park #define __STRING(x)	#x
35*54fd6939SJiyong Park #define __XSTRING(x)	__STRING(x)
36*54fd6939SJiyong Park 
37*54fd6939SJiyong Park #endif /* CDEFS_H */
38