Merge tag 'mmc-10-29-2019' of https://gitlab.denx.de/u-boot/custodians/u-boot-mmc
[oweals/u-boot.git] / include / linux / linkage.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * U-Boot - linkage.h
4  *
5  * Copyright (c) 2005-2007 Analog Devices Inc.
6  */
7
8 #ifndef _LINUX_LINKAGE_H
9 #define _LINUX_LINKAGE_H
10
11 #include <asm/linkage.h>
12
13 /* Some toolchains use other characters (e.g. '`') to mark new line in macro */
14 #ifndef ASM_NL
15 #define ASM_NL           ;
16 #endif
17
18 #ifdef __cplusplus
19 #define CPP_ASMLINKAGE          extern "C"
20 #else
21 #define CPP_ASMLINKAGE
22 #endif
23
24 #ifndef asmlinkage
25 #define asmlinkage CPP_ASMLINKAGE
26 #endif
27
28 #define SYMBOL_NAME_STR(X)      #X
29 #define SYMBOL_NAME(X)          X
30 #ifdef __STDC__
31 #define SYMBOL_NAME_LABEL(X)    X##:
32 #else
33 #define SYMBOL_NAME_LABEL(X)    X:
34 #endif
35
36 #ifndef __ALIGN
37 #define __ALIGN .align          4
38 #endif
39
40 #ifndef __ALIGN_STR
41 #define __ALIGN_STR             ".align 4"
42 #endif
43
44 #ifdef __ASSEMBLY__
45
46 #define ALIGN                   __ALIGN
47 #define ALIGN_STR               __ALIGN_STR
48
49 #define LENTRY(name) \
50         ALIGN ASM_NL \
51         SYMBOL_NAME_LABEL(name)
52
53 #define ENTRY(name) \
54         .globl SYMBOL_NAME(name) ASM_NL \
55         LENTRY(name)
56
57 #define WEAK(name) \
58         .weak SYMBOL_NAME(name) ASM_NL \
59         LENTRY(name)
60
61 #ifndef END
62 #define END(name) \
63         .size name, .-name
64 #endif
65
66 #ifndef ENDPROC
67 #define ENDPROC(name) \
68         .type name STT_FUNC ASM_NL \
69         END(name)
70 #endif
71
72 #endif
73
74 #endif