18bb6de15SAntonio Nino Diaz /* 2277713e0SManish V Badarkhe * Copyright (c) 2018-2025, 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__)) 15351f9cd8SYann Gautier #define __maybe_unused __attribute__((__unused__)) 168bb6de15SAntonio Nino Diaz #define __aligned(x) __attribute__((__aligned__(x))) 178bb6de15SAntonio Nino Diaz #define __section(x) __attribute__((__section__(x))) 18023f1bedSAndre Przywara #define __fallthrough __attribute__((__fallthrough__)) 19*53644fa8SBoyan Karatotev #define __noinline __attribute__((__noinline__)) 201dcc28cfSDaniel Boulby #if RECLAIM_INIT_CODE 211dcc28cfSDaniel Boulby /* 221dcc28cfSDaniel Boulby * Add each function to a section that is unique so the functions can still 23*53644fa8SBoyan Karatotev * be garbage collected. 24*53644fa8SBoyan Karatotev * 25*53644fa8SBoyan Karatotev * NOTICE: for this to work, these functions will NOT be inlined. 26*53644fa8SBoyan Karatotev * TODO: the noinline attribute can be removed if RECLAIM_INIT_CODE is made 27*53644fa8SBoyan Karatotev * platform agnostic and called after bl31_main(). Then, top-level functions 28*53644fa8SBoyan Karatotev * (those that can't be inlined like bl31_main()) can be annotated with __init 29*53644fa8SBoyan Karatotev * and noinline can be removed. 301dcc28cfSDaniel Boulby */ 31*53644fa8SBoyan Karatotev #define __init __section(".text.init." __FILE__ "." __XSTRING(__LINE__)) __noinline 321dcc28cfSDaniel Boulby #else 331dcc28cfSDaniel Boulby #define __init 341dcc28cfSDaniel Boulby #endif 358bb6de15SAntonio Nino Diaz 368bb6de15SAntonio Nino Diaz #define __printflike(fmtarg, firstvararg) \ 378bb6de15SAntonio Nino Diaz __attribute__((__format__ (__printf__, fmtarg, firstvararg))) 388bb6de15SAntonio Nino Diaz 398bb6de15SAntonio Nino Diaz #define __weak_reference(sym, alias) \ 408bb6de15SAntonio Nino Diaz __asm__(".weak alias"); \ 418bb6de15SAntonio Nino Diaz __asm__(".equ alias, sym") 428bb6de15SAntonio Nino Diaz 438bb6de15SAntonio Nino Diaz #define __STRING(x) #x 448bb6de15SAntonio Nino Diaz #define __XSTRING(x) __STRING(x) 458bb6de15SAntonio Nino Diaz 46277713e0SManish V Badarkhe #define __predict_true(exp) (exp) 47277713e0SManish V Badarkhe #define __predict_false(exp) (exp) 48277713e0SManish V Badarkhe 498bb6de15SAntonio Nino Diaz #endif /* CDEFS_H */ 50