1273d11eaSMacpaul Lin /* 2273d11eaSMacpaul Lin * U-boot - linkage.h 3273d11eaSMacpaul Lin * 4273d11eaSMacpaul Lin * Copyright (c) 2005-2007 Analog Devices Inc. 5273d11eaSMacpaul Lin * 6*1a459660SWolfgang 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 #include <linux/config.h> 14273d11eaSMacpaul Lin 15273d11eaSMacpaul Lin #ifdef __cplusplus 16273d11eaSMacpaul Lin #define CPP_ASMLINKAGE extern "C" 17273d11eaSMacpaul Lin #else 18273d11eaSMacpaul Lin #define CPP_ASMLINKAGE 19273d11eaSMacpaul Lin #endif 20273d11eaSMacpaul Lin 21273d11eaSMacpaul Lin #define asmlinkage CPP_ASMLINKAGE 22273d11eaSMacpaul Lin 23273d11eaSMacpaul Lin #define SYMBOL_NAME_STR(X) #X 24273d11eaSMacpaul Lin #define SYMBOL_NAME(X) X 25273d11eaSMacpaul Lin #ifdef __STDC__ 26273d11eaSMacpaul Lin #define SYMBOL_NAME_LABEL(X) X##: 27273d11eaSMacpaul Lin #else 28273d11eaSMacpaul Lin #define SYMBOL_NAME_LABEL(X) X: 29273d11eaSMacpaul Lin #endif 30273d11eaSMacpaul Lin 317245536dSAneesh V #ifndef __ALIGN 32273d11eaSMacpaul Lin #define __ALIGN .align 4 337245536dSAneesh V #endif 347245536dSAneesh V 357245536dSAneesh V #ifndef __ALIGN_STR 36273d11eaSMacpaul Lin #define __ALIGN_STR ".align 4" 377245536dSAneesh V #endif 38273d11eaSMacpaul Lin 39273d11eaSMacpaul Lin #ifdef __ASSEMBLY__ 40273d11eaSMacpaul Lin 41273d11eaSMacpaul Lin #define ALIGN __ALIGN 42273d11eaSMacpaul Lin #define ALIGN_STR __ALIGN_STR 43273d11eaSMacpaul Lin 44273d11eaSMacpaul Lin #define LENTRY(name) \ 45273d11eaSMacpaul Lin ALIGN; \ 46273d11eaSMacpaul Lin SYMBOL_NAME_LABEL(name) 47273d11eaSMacpaul Lin 48273d11eaSMacpaul Lin #define ENTRY(name) \ 49273d11eaSMacpaul Lin .globl SYMBOL_NAME(name); \ 50273d11eaSMacpaul Lin LENTRY(name) 51273d11eaSMacpaul Lin 52273d11eaSMacpaul Lin #ifndef END 53273d11eaSMacpaul Lin #define END(name) \ 54273d11eaSMacpaul Lin .size name, .-name 55273d11eaSMacpaul Lin #endif 56273d11eaSMacpaul Lin 57273d11eaSMacpaul Lin #ifndef ENDPROC 58273d11eaSMacpaul Lin #define ENDPROC(name) \ 597245536dSAneesh V .type name STT_FUNC; \ 60273d11eaSMacpaul Lin END(name) 61273d11eaSMacpaul Lin #endif 62273d11eaSMacpaul Lin 63273d11eaSMacpaul Lin #endif 64273d11eaSMacpaul Lin 65273d11eaSMacpaul Lin #endif 66