1 /* SPDX-License-Identifier: BSD-2-Clause */ 2 /* 3 * Copyright (c) 2015, Linaro Limited 4 */ 5 #ifndef KEEP_H 6 #define KEEP_H 7 8 #ifdef ASM 9 10 .macro KEEP_PAGER sym 11 .pushsection __keep_meta_vars_pager 12 .global ____keep_pager_\sym 13 ____keep_pager_\sym: 14 .long \sym 15 .popsection 16 .endm 17 18 .macro KEEP_INIT sym 19 .pushsection __keep_meta_vars_init 20 .global ____keep_init_\sym 21 ____keep_init_\sym: 22 .long \sym 23 .popsection 24 .endm 25 26 #else 27 28 #include <compiler.h> 29 30 #define KEEP_PAGER(sym) \ 31 extern const unsigned long ____keep_pager_##sym; \ 32 const unsigned long ____keep_pager_##sym \ 33 __section("__keep_meta_vars_pager") = (unsigned long)&sym 34 35 #define KEEP_INIT(sym) \ 36 extern const unsigned long ____keep_init_##sym; \ 37 const unsigned long ____keep_init_##sym \ 38 __section("__keep_meta_vars_init") = (unsigned long)&sym 39 40 #endif /* ASM */ 41 42 #endif /*KEEP_H*/ 43