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