xref: /rk3399_rockchip-uboot/include/linux/linkage.h (revision e6126a58720ed8e53de93883c3f1572ad3d7b7c3)
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