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