Merge branch 'tracing/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/frederi...
[deliverable/linux.git] / include / linux / linkage.h
CommitLineData
1da177e4
LT
1#ifndef _LINUX_LINKAGE_H
2#define _LINUX_LINKAGE_H
3
a7bf0bd5 4#include <linux/compiler.h>
1da177e4
LT
5#include <asm/linkage.h>
6
7#ifdef __cplusplus
8#define CPP_ASMLINKAGE extern "C"
9#else
10#define CPP_ASMLINKAGE
11#endif
12
13#ifndef asmlinkage
14#define asmlinkage CPP_ASMLINKAGE
15#endif
16
d50efc6c
IM
17#ifndef asmregparm
18# define asmregparm
19#endif
20
a7bf0bd5
JF
21#define __page_aligned_data __section(.data.page_aligned) __aligned(PAGE_SIZE)
22#define __page_aligned_bss __section(.bss.page_aligned) __aligned(PAGE_SIZE)
23
d2af12ae
TA
24/*
25 * For assembly routines.
26 *
27 * Note when using these that you must specify the appropriate
28 * alignment directives yourself
29 */
30#define __PAGE_ALIGNED_DATA .section ".data.page_aligned", "aw"
31#define __PAGE_ALIGNED_BSS .section ".bss.page_aligned", "aw"
32
d10d89ec
LT
33/*
34 * This is used by architectures to keep arguments on the stack
35 * untouched by the compiler by keeping them live until the end.
36 * The argument stack may be owned by the assembly-language
37 * caller, not the callee, and gcc doesn't always understand
38 * that.
39 *
40 * We have the return value, and a maximum of six arguments.
41 *
42 * This should always be followed by a "return ret" for the
43 * protection to work (ie no more work that the compiler might
44 * end up needing stack temporaries for).
45 */
b0fac023
HC
46/* Assembly files may be compiled with -traditional .. */
47#ifndef __ASSEMBLY__
54a01510
RM
48#ifndef asmlinkage_protect
49# define asmlinkage_protect(n, ret, args...) do { } while (0)
1da177e4 50#endif
b0fac023 51#endif
1da177e4
LT
52
53#ifndef __ALIGN
54#define __ALIGN .align 4,0x90
55#define __ALIGN_STR ".align 4,0x90"
56#endif
57
58#ifdef __ASSEMBLY__
59
60#define ALIGN __ALIGN
61#define ALIGN_STR __ALIGN_STR
62
ab7efcc9 63#ifndef ENTRY
1da177e4
LT
64#define ENTRY(name) \
65 .globl name; \
66 ALIGN; \
67 name:
ab7efcc9 68#endif
1da177e4 69
214541d1
RR
70#ifndef WEAK
71#define WEAK(name) \
72 .weak name; \
73 name:
74#endif
75
ab7efcc9
JB
76#ifndef END
77#define END(name) \
78 .size name, .-name
79#endif
80
6b8be6df
JR
81/* If symbol 'name' is treated as a subroutine (gets called, and returns)
82 * then please use ENDPROC to mark 'name' as STT_FUNC for the benefit of
83 * static analysis tools such as stack depth analyzer.
84 */
ab7efcc9
JB
85#ifndef ENDPROC
86#define ENDPROC(name) \
87 .type name, @function; \
88 END(name)
89#endif
d0aaff97 90
1da177e4
LT
91#endif
92
93#define NORET_TYPE /**/
94#define ATTRIB_NORET __attribute__((noreturn))
95#define NORET_AND noreturn,
96
1da177e4 97#endif
This page took 0.616256 seconds and 5 git commands to generate.