1/* 2 * U-Boot - linkage.h 3 * 4 * Copyright (c) 2005-2007 Analog Devices Inc. 5 * 6 * SPDX-License-Identifier: GPL-2.0+ 7 */ 8 9#ifndef _LINUX_LINKAGE_H 10#define _LINUX_LINKAGE_H 11 12#include <asm/linkage.h> 13 14/* Some toolchains use other characters (e.g. '`') to mark new line in macro */ 15#ifndef ASM_NL 16#define ASM_NL ; 17#endif 18 19#ifdef __cplusplus 20#define CPP_ASMLINKAGE extern "C" 21#else 22#define CPP_ASMLINKAGE 23#endif 24 25#ifndef asmlinkage 26#define asmlinkage CPP_ASMLINKAGE 27#endif 28 29#define SYMBOL_NAME_STR(X) #X 30#define SYMBOL_NAME(X) X 31#ifdef __STDC__ 32#define SYMBOL_NAME_LABEL(X) X##: 33#else 34#define SYMBOL_NAME_LABEL(X) X: 35#endif 36 37#ifndef __ALIGN 38#define __ALIGN .align 4 39#endif 40 41#ifndef __ALIGN_STR 42#define __ALIGN_STR ".align 4" 43#endif 44 45#ifdef __ASSEMBLY__ 46 47#define ALIGN __ALIGN 48#define ALIGN_STR __ALIGN_STR 49 50#define LENTRY(name) \ 51 ALIGN ASM_NL \ 52 SYMBOL_NAME_LABEL(name) 53 54#define ENTRY(name) \ 55 .globl SYMBOL_NAME(name) ASM_NL \ 56 LENTRY(name) 57 58#define WEAK(name) \ 59 .weak SYMBOL_NAME(name) ASM_NL \ 60 LENTRY(name) 61 62#ifndef END 63#define END(name) \ 64 .size name, .-name 65#endif 66 67#ifndef ENDPROC 68#define ENDPROC(name) \ 69 .type name STT_FUNC ASM_NL \ 70 END(name) 71#endif 72 73#endif 74 75#endif 76