xref: /openbmc/u-boot/include/linux/linkage.h (revision 707acd01)
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 #ifdef __cplusplus
15 #define CPP_ASMLINKAGE		extern "C"
16 #else
17 #define CPP_ASMLINKAGE
18 #endif
19 
20 #define asmlinkage CPP_ASMLINKAGE
21 
22 #define SYMBOL_NAME_STR(X)	#X
23 #define SYMBOL_NAME(X)		X
24 #ifdef __STDC__
25 #define SYMBOL_NAME_LABEL(X)	X##:
26 #else
27 #define SYMBOL_NAME_LABEL(X)	X:
28 #endif
29 
30 #ifndef __ALIGN
31 #define __ALIGN .align		4
32 #endif
33 
34 #ifndef __ALIGN_STR
35 #define __ALIGN_STR		".align 4"
36 #endif
37 
38 #ifdef __ASSEMBLY__
39 
40 #define ALIGN			__ALIGN
41 #define ALIGN_STR		__ALIGN_STR
42 
43 #define LENTRY(name) \
44 	ALIGN; \
45 	SYMBOL_NAME_LABEL(name)
46 
47 #define ENTRY(name) \
48 	.globl SYMBOL_NAME(name); \
49 	LENTRY(name)
50 
51 #define WEAK(name) \
52 	.weak SYMBOL_NAME(name); \
53 	LENTRY(name)
54 
55 #ifndef END
56 #define END(name) \
57 	.size name, .-name
58 #endif
59 
60 #ifndef ENDPROC
61 #define ENDPROC(name) \
62 	.type name STT_FUNC; \
63 	END(name)
64 #endif
65 
66 #endif
67 
68 #endif
69