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