xref: /rk3399_rockchip-uboot/include/linux/linkage.h (revision 7245536d19aaf0a6dc1c2d4a8fa80adf2f2ae739)
1273d11eaSMacpaul Lin /*
2273d11eaSMacpaul Lin  * U-boot - linkage.h
3273d11eaSMacpaul Lin  *
4273d11eaSMacpaul Lin  * Copyright (c) 2005-2007 Analog Devices Inc.
5273d11eaSMacpaul Lin  *
6273d11eaSMacpaul Lin  * See file CREDITS for list of people who contributed to this
7273d11eaSMacpaul Lin  * project.
8273d11eaSMacpaul Lin  *
9273d11eaSMacpaul Lin  * This program is free software; you can redistribute it and/or
10273d11eaSMacpaul Lin  * modify it under the terms of the GNU General Public License as
11273d11eaSMacpaul Lin  * published by the Free Software Foundation; either version 2 of
12273d11eaSMacpaul Lin  * the License, or (at your option) any later version.
13273d11eaSMacpaul Lin  *
14273d11eaSMacpaul Lin  * This program is distributed in the hope that it will be useful,
15273d11eaSMacpaul Lin  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16273d11eaSMacpaul Lin  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17273d11eaSMacpaul Lin  * GNU General Public License for more details.
18273d11eaSMacpaul Lin  *
19273d11eaSMacpaul Lin  * You should have received a copy of the GNU General Public License
20273d11eaSMacpaul Lin  * along with this program; if not, write to the Free Software
21273d11eaSMacpaul Lin  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
22273d11eaSMacpaul Lin  * MA 02110-1301 USA
23273d11eaSMacpaul Lin  */
24273d11eaSMacpaul Lin 
25273d11eaSMacpaul Lin #ifndef _LINUX_LINKAGE_H
26273d11eaSMacpaul Lin #define _LINUX_LINKAGE_H
27273d11eaSMacpaul Lin 
28273d11eaSMacpaul Lin #include <asm/linkage.h>
29273d11eaSMacpaul Lin #include <linux/config.h>
30273d11eaSMacpaul Lin 
31273d11eaSMacpaul Lin #ifdef __cplusplus
32273d11eaSMacpaul Lin #define CPP_ASMLINKAGE		extern "C"
33273d11eaSMacpaul Lin #else
34273d11eaSMacpaul Lin #define CPP_ASMLINKAGE
35273d11eaSMacpaul Lin #endif
36273d11eaSMacpaul Lin 
37273d11eaSMacpaul Lin #define asmlinkage CPP_ASMLINKAGE
38273d11eaSMacpaul Lin 
39273d11eaSMacpaul Lin #define SYMBOL_NAME_STR(X)	#X
40273d11eaSMacpaul Lin #define SYMBOL_NAME(X)		X
41273d11eaSMacpaul Lin #ifdef __STDC__
42273d11eaSMacpaul Lin #define SYMBOL_NAME_LABEL(X)	X##:
43273d11eaSMacpaul Lin #else
44273d11eaSMacpaul Lin #define SYMBOL_NAME_LABEL(X)	X:
45273d11eaSMacpaul Lin #endif
46273d11eaSMacpaul Lin 
47*7245536dSAneesh V #ifndef __ALIGN
48273d11eaSMacpaul Lin #define __ALIGN .align		4
49*7245536dSAneesh V #endif
50*7245536dSAneesh V 
51*7245536dSAneesh V #ifndef __ALIGN_STR
52273d11eaSMacpaul Lin #define __ALIGN_STR		".align 4"
53*7245536dSAneesh V #endif
54273d11eaSMacpaul Lin 
55273d11eaSMacpaul Lin #ifdef __ASSEMBLY__
56273d11eaSMacpaul Lin 
57273d11eaSMacpaul Lin #define ALIGN			__ALIGN
58273d11eaSMacpaul Lin #define ALIGN_STR		__ALIGN_STR
59273d11eaSMacpaul Lin 
60273d11eaSMacpaul Lin #define LENTRY(name) \
61273d11eaSMacpaul Lin 	ALIGN; \
62273d11eaSMacpaul Lin 	SYMBOL_NAME_LABEL(name)
63273d11eaSMacpaul Lin 
64273d11eaSMacpaul Lin #define ENTRY(name) \
65273d11eaSMacpaul Lin 	.globl SYMBOL_NAME(name); \
66273d11eaSMacpaul Lin 	LENTRY(name)
67273d11eaSMacpaul Lin 
68273d11eaSMacpaul Lin #ifndef END
69273d11eaSMacpaul Lin #define END(name) \
70273d11eaSMacpaul Lin 	.size name, .-name
71273d11eaSMacpaul Lin #endif
72273d11eaSMacpaul Lin 
73273d11eaSMacpaul Lin #ifndef ENDPROC
74273d11eaSMacpaul Lin #define ENDPROC(name) \
75*7245536dSAneesh V 	.type name STT_FUNC; \
76273d11eaSMacpaul Lin 	END(name)
77273d11eaSMacpaul Lin #endif
78273d11eaSMacpaul Lin 
79273d11eaSMacpaul Lin #endif
80273d11eaSMacpaul Lin 
81273d11eaSMacpaul Lin #endif
82