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