1273d11eaSMacpaul Lin /* 2273d11eaSMacpaul Lin * U-boot - linkage.h 3273d11eaSMacpaul Lin * 4273d11eaSMacpaul Lin * Copyright (c) 2005-2007 Analog Devices Inc. 5273d11eaSMacpaul Lin * 61a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 7273d11eaSMacpaul Lin */ 8273d11eaSMacpaul Lin 9273d11eaSMacpaul Lin #ifndef _LINUX_LINKAGE_H 10273d11eaSMacpaul Lin #define _LINUX_LINKAGE_H 11273d11eaSMacpaul Lin 12273d11eaSMacpaul Lin #include <asm/linkage.h> 13273d11eaSMacpaul Lin 14273d11eaSMacpaul Lin #ifdef __cplusplus 15273d11eaSMacpaul Lin #define CPP_ASMLINKAGE extern "C" 16273d11eaSMacpaul Lin #else 17273d11eaSMacpaul Lin #define CPP_ASMLINKAGE 18273d11eaSMacpaul Lin #endif 19273d11eaSMacpaul Lin 20*e6126a58SMasahiro Yamada #ifndef asmlinkage 21273d11eaSMacpaul Lin #define asmlinkage CPP_ASMLINKAGE 22*e6126a58SMasahiro Yamada #endif 23273d11eaSMacpaul Lin 24273d11eaSMacpaul Lin #define SYMBOL_NAME_STR(X) #X 25273d11eaSMacpaul Lin #define SYMBOL_NAME(X) X 26273d11eaSMacpaul Lin #ifdef __STDC__ 27273d11eaSMacpaul Lin #define SYMBOL_NAME_LABEL(X) X##: 28273d11eaSMacpaul Lin #else 29273d11eaSMacpaul Lin #define SYMBOL_NAME_LABEL(X) X: 30273d11eaSMacpaul Lin #endif 31273d11eaSMacpaul Lin 327245536dSAneesh V #ifndef __ALIGN 33273d11eaSMacpaul Lin #define __ALIGN .align 4 347245536dSAneesh V #endif 357245536dSAneesh V 367245536dSAneesh V #ifndef __ALIGN_STR 37273d11eaSMacpaul Lin #define __ALIGN_STR ".align 4" 387245536dSAneesh V #endif 39273d11eaSMacpaul Lin 40273d11eaSMacpaul Lin #ifdef __ASSEMBLY__ 41273d11eaSMacpaul Lin 42273d11eaSMacpaul Lin #define ALIGN __ALIGN 43273d11eaSMacpaul Lin #define ALIGN_STR __ALIGN_STR 44273d11eaSMacpaul Lin 45273d11eaSMacpaul Lin #define LENTRY(name) \ 46273d11eaSMacpaul Lin ALIGN; \ 47273d11eaSMacpaul Lin SYMBOL_NAME_LABEL(name) 48273d11eaSMacpaul Lin 49273d11eaSMacpaul Lin #define ENTRY(name) \ 50273d11eaSMacpaul Lin .globl SYMBOL_NAME(name); \ 51273d11eaSMacpaul Lin LENTRY(name) 52273d11eaSMacpaul Lin 53ec4fa567SDavid Feng #define WEAK(name) \ 54ec4fa567SDavid Feng .weak SYMBOL_NAME(name); \ 55ec4fa567SDavid Feng LENTRY(name) 56ec4fa567SDavid Feng 57273d11eaSMacpaul Lin #ifndef END 58273d11eaSMacpaul Lin #define END(name) \ 59273d11eaSMacpaul Lin .size name, .-name 60273d11eaSMacpaul Lin #endif 61273d11eaSMacpaul Lin 62273d11eaSMacpaul Lin #ifndef ENDPROC 63273d11eaSMacpaul Lin #define ENDPROC(name) \ 647245536dSAneesh V .type name STT_FUNC; \ 65273d11eaSMacpaul Lin END(name) 66273d11eaSMacpaul Lin #endif 67273d11eaSMacpaul Lin 68273d11eaSMacpaul Lin #endif 69273d11eaSMacpaul Lin 70273d11eaSMacpaul Lin #endif 71