1*9fa130bfSJens Wiklander /* 2*9fa130bfSJens Wiklander * Copyright (c) 2015, Linaro Limited 3*9fa130bfSJens Wiklander * All rights reserved. 4*9fa130bfSJens Wiklander * 5*9fa130bfSJens Wiklander * Redistribution and use in source and binary forms, with or without 6*9fa130bfSJens Wiklander * modification, are permitted provided that the following conditions are met: 7*9fa130bfSJens Wiklander * 8*9fa130bfSJens Wiklander * 1. Redistributions of source code must retain the above copyright notice, 9*9fa130bfSJens Wiklander * this list of conditions and the following disclaimer. 10*9fa130bfSJens Wiklander * 11*9fa130bfSJens Wiklander * 2. Redistributions in binary form must reproduce the above copyright notice, 12*9fa130bfSJens Wiklander * this list of conditions and the following disclaimer in the documentation 13*9fa130bfSJens Wiklander * and/or other materials provided with the distribution. 14*9fa130bfSJens Wiklander * 15*9fa130bfSJens Wiklander * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16*9fa130bfSJens Wiklander * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*9fa130bfSJens Wiklander * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*9fa130bfSJens Wiklander * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 19*9fa130bfSJens Wiklander * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20*9fa130bfSJens Wiklander * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21*9fa130bfSJens Wiklander * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22*9fa130bfSJens Wiklander * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23*9fa130bfSJens Wiklander * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24*9fa130bfSJens Wiklander * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25*9fa130bfSJens Wiklander * POSSIBILITY OF SUCH DAMAGE. 26*9fa130bfSJens Wiklander */ 27*9fa130bfSJens Wiklander #ifndef KEEP_H 28*9fa130bfSJens Wiklander #define KEEP_H 29*9fa130bfSJens Wiklander 30*9fa130bfSJens Wiklander #include <compiler.h> 31*9fa130bfSJens Wiklander 32*9fa130bfSJens Wiklander #define KEEP_PAGER(sym) \ 33*9fa130bfSJens Wiklander const unsigned long ____keep_pager_##sym \ 34*9fa130bfSJens Wiklander __section("__keep_meta_vars_pager") = (unsigned long)&sym 35*9fa130bfSJens Wiklander 36*9fa130bfSJens Wiklander #define KEEP_INIT(sym) \ 37*9fa130bfSJens Wiklander const unsigned long ____keep_init_##sym \ 38*9fa130bfSJens Wiklander __section("__keep_meta_vars_init") = (unsigned long)&sym 39*9fa130bfSJens Wiklander 40*9fa130bfSJens Wiklander #endif /*KEEP_H*/ 41