18bb6de15SAntonio Nino Diaz /* 28bb6de15SAntonio Nino Diaz * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. 38bb6de15SAntonio Nino Diaz * 48bb6de15SAntonio Nino Diaz * SPDX-License-Identifier: BSD-3-Clause 58bb6de15SAntonio Nino Diaz */ 68bb6de15SAntonio Nino Diaz 78bb6de15SAntonio Nino Diaz #ifndef CDEFS_H 88bb6de15SAntonio Nino Diaz #define CDEFS_H 98bb6de15SAntonio Nino Diaz 108bb6de15SAntonio Nino Diaz #define __dead2 __attribute__((__noreturn__)) 118bb6de15SAntonio Nino Diaz #define __deprecated __attribute__((__deprecated__)) 128bb6de15SAntonio Nino Diaz #define __packed __attribute__((__packed__)) 138bb6de15SAntonio Nino Diaz #define __used __attribute__((__used__)) 148bb6de15SAntonio Nino Diaz #define __unused __attribute__((__unused__)) 158bb6de15SAntonio Nino Diaz #define __aligned(x) __attribute__((__aligned__(x))) 168bb6de15SAntonio Nino Diaz #define __section(x) __attribute__((__section__(x))) 17*1dcc28cfSDaniel Boulby #if RECLAIM_INIT_CODE 18*1dcc28cfSDaniel Boulby /* 19*1dcc28cfSDaniel Boulby * Add each function to a section that is unique so the functions can still 20*1dcc28cfSDaniel Boulby * be garbage collected 21*1dcc28cfSDaniel Boulby */ 22*1dcc28cfSDaniel Boulby #define __init __section(".text.init." __FILE__ "." __XSTRING(__LINE__)) 23*1dcc28cfSDaniel Boulby #else 24*1dcc28cfSDaniel Boulby #define __init 25*1dcc28cfSDaniel Boulby #endif 268bb6de15SAntonio Nino Diaz 278bb6de15SAntonio Nino Diaz #define __printflike(fmtarg, firstvararg) \ 288bb6de15SAntonio Nino Diaz __attribute__((__format__ (__printf__, fmtarg, firstvararg))) 298bb6de15SAntonio Nino Diaz 308bb6de15SAntonio Nino Diaz #define __weak_reference(sym, alias) \ 318bb6de15SAntonio Nino Diaz __asm__(".weak alias"); \ 328bb6de15SAntonio Nino Diaz __asm__(".equ alias, sym") 338bb6de15SAntonio Nino Diaz 348bb6de15SAntonio Nino Diaz #define __STRING(x) #x 358bb6de15SAntonio Nino Diaz #define __XSTRING(x) __STRING(x) 368bb6de15SAntonio Nino Diaz 378bb6de15SAntonio Nino Diaz #endif /* CDEFS_H */ 38