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 20273d11eaSMacpaul Lin #define asmlinkage CPP_ASMLINKAGE 21273d11eaSMacpaul Lin 22273d11eaSMacpaul Lin #define SYMBOL_NAME_STR(X) #X 23273d11eaSMacpaul Lin #define SYMBOL_NAME(X) X 24273d11eaSMacpaul Lin #ifdef __STDC__ 25273d11eaSMacpaul Lin #define SYMBOL_NAME_LABEL(X) X##: 26273d11eaSMacpaul Lin #else 27273d11eaSMacpaul Lin #define SYMBOL_NAME_LABEL(X) X: 28273d11eaSMacpaul Lin #endif 29273d11eaSMacpaul Lin 307245536dSAneesh V #ifndef __ALIGN 31273d11eaSMacpaul Lin #define __ALIGN .align 4 327245536dSAneesh V #endif 337245536dSAneesh V 347245536dSAneesh V #ifndef __ALIGN_STR 35273d11eaSMacpaul Lin #define __ALIGN_STR ".align 4" 367245536dSAneesh V #endif 37273d11eaSMacpaul Lin 38273d11eaSMacpaul Lin #ifdef __ASSEMBLY__ 39273d11eaSMacpaul Lin 40273d11eaSMacpaul Lin #define ALIGN __ALIGN 41273d11eaSMacpaul Lin #define ALIGN_STR __ALIGN_STR 42273d11eaSMacpaul Lin 43273d11eaSMacpaul Lin #define LENTRY(name) \ 44273d11eaSMacpaul Lin ALIGN; \ 45273d11eaSMacpaul Lin SYMBOL_NAME_LABEL(name) 46273d11eaSMacpaul Lin 47273d11eaSMacpaul Lin #define ENTRY(name) \ 48273d11eaSMacpaul Lin .globl SYMBOL_NAME(name); \ 49273d11eaSMacpaul Lin LENTRY(name) 50273d11eaSMacpaul Lin 51*ec4fa567SDavid Feng #define WEAK(name) \ 52*ec4fa567SDavid Feng .weak SYMBOL_NAME(name); \ 53*ec4fa567SDavid Feng LENTRY(name) 54*ec4fa567SDavid Feng 55273d11eaSMacpaul Lin #ifndef END 56273d11eaSMacpaul Lin #define END(name) \ 57273d11eaSMacpaul Lin .size name, .-name 58273d11eaSMacpaul Lin #endif 59273d11eaSMacpaul Lin 60273d11eaSMacpaul Lin #ifndef ENDPROC 61273d11eaSMacpaul Lin #define ENDPROC(name) \ 627245536dSAneesh V .type name STT_FUNC; \ 63273d11eaSMacpaul Lin END(name) 64273d11eaSMacpaul Lin #endif 65273d11eaSMacpaul Lin 66273d11eaSMacpaul Lin #endif 67273d11eaSMacpaul Lin 68273d11eaSMacpaul Lin #endif 69