1*273d11eaSMacpaul Lin /* 2*273d11eaSMacpaul Lin * U-boot - linkage.h 3*273d11eaSMacpaul Lin * 4*273d11eaSMacpaul Lin * Copyright (c) 2005-2007 Analog Devices Inc. 5*273d11eaSMacpaul Lin * 6*273d11eaSMacpaul Lin * See file CREDITS for list of people who contributed to this 7*273d11eaSMacpaul Lin * project. 8*273d11eaSMacpaul Lin * 9*273d11eaSMacpaul Lin * This program is free software; you can redistribute it and/or 10*273d11eaSMacpaul Lin * modify it under the terms of the GNU General Public License as 11*273d11eaSMacpaul Lin * published by the Free Software Foundation; either version 2 of 12*273d11eaSMacpaul Lin * the License, or (at your option) any later version. 13*273d11eaSMacpaul Lin * 14*273d11eaSMacpaul Lin * This program is distributed in the hope that it will be useful, 15*273d11eaSMacpaul Lin * but WITHOUT ANY WARRANTY; without even the implied warranty of 16*273d11eaSMacpaul Lin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*273d11eaSMacpaul Lin * GNU General Public License for more details. 18*273d11eaSMacpaul Lin * 19*273d11eaSMacpaul Lin * You should have received a copy of the GNU General Public License 20*273d11eaSMacpaul Lin * along with this program; if not, write to the Free Software 21*273d11eaSMacpaul Lin * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, 22*273d11eaSMacpaul Lin * MA 02110-1301 USA 23*273d11eaSMacpaul Lin */ 24*273d11eaSMacpaul Lin 25*273d11eaSMacpaul Lin #ifndef _LINUX_LINKAGE_H 26*273d11eaSMacpaul Lin #define _LINUX_LINKAGE_H 27*273d11eaSMacpaul Lin 28*273d11eaSMacpaul Lin #include <asm/linkage.h> 29*273d11eaSMacpaul Lin #include <linux/config.h> 30*273d11eaSMacpaul Lin 31*273d11eaSMacpaul Lin #ifdef __cplusplus 32*273d11eaSMacpaul Lin #define CPP_ASMLINKAGE extern "C" 33*273d11eaSMacpaul Lin #else 34*273d11eaSMacpaul Lin #define CPP_ASMLINKAGE 35*273d11eaSMacpaul Lin #endif 36*273d11eaSMacpaul Lin 37*273d11eaSMacpaul Lin #define asmlinkage CPP_ASMLINKAGE 38*273d11eaSMacpaul Lin 39*273d11eaSMacpaul Lin #define SYMBOL_NAME_STR(X) #X 40*273d11eaSMacpaul Lin #define SYMBOL_NAME(X) X 41*273d11eaSMacpaul Lin #ifdef __STDC__ 42*273d11eaSMacpaul Lin #define SYMBOL_NAME_LABEL(X) X##: 43*273d11eaSMacpaul Lin #else 44*273d11eaSMacpaul Lin #define SYMBOL_NAME_LABEL(X) X: 45*273d11eaSMacpaul Lin #endif 46*273d11eaSMacpaul Lin 47*273d11eaSMacpaul Lin #define __ALIGN .align 4 48*273d11eaSMacpaul Lin #define __ALIGN_STR ".align 4" 49*273d11eaSMacpaul Lin 50*273d11eaSMacpaul Lin #ifdef __ASSEMBLY__ 51*273d11eaSMacpaul Lin 52*273d11eaSMacpaul Lin #define ALIGN __ALIGN 53*273d11eaSMacpaul Lin #define ALIGN_STR __ALIGN_STR 54*273d11eaSMacpaul Lin 55*273d11eaSMacpaul Lin #define LENTRY(name) \ 56*273d11eaSMacpaul Lin ALIGN; \ 57*273d11eaSMacpaul Lin SYMBOL_NAME_LABEL(name) 58*273d11eaSMacpaul Lin 59*273d11eaSMacpaul Lin #define ENTRY(name) \ 60*273d11eaSMacpaul Lin .globl SYMBOL_NAME(name); \ 61*273d11eaSMacpaul Lin LENTRY(name) 62*273d11eaSMacpaul Lin 63*273d11eaSMacpaul Lin #ifndef END 64*273d11eaSMacpaul Lin #define END(name) \ 65*273d11eaSMacpaul Lin .size name, .-name 66*273d11eaSMacpaul Lin #endif 67*273d11eaSMacpaul Lin 68*273d11eaSMacpaul Lin #ifndef ENDPROC 69*273d11eaSMacpaul Lin #define ENDPROC(name) \ 70*273d11eaSMacpaul Lin .type name, @function; \ 71*273d11eaSMacpaul Lin END(name) 72*273d11eaSMacpaul Lin #endif 73*273d11eaSMacpaul Lin 74*273d11eaSMacpaul Lin #endif 75*273d11eaSMacpaul Lin 76*273d11eaSMacpaul Lin #endif 77