blob: 6c9873f8828751d9c48c3c2a5b0eeef793855233 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef _LINUX_LINKAGE_H
2#define _LINUX_LINKAGE_H
3
Linus Torvalds1da177e2005-04-16 15:20:36 -07004#include <asm/linkage.h>
5
6#ifdef __cplusplus
7#define CPP_ASMLINKAGE extern "C"
8#else
9#define CPP_ASMLINKAGE
10#endif
11
12#ifndef asmlinkage
13#define asmlinkage CPP_ASMLINKAGE
14#endif
15
16#ifndef prevent_tail_call
17# define prevent_tail_call(ret) do { } while (0)
18#endif
19
20#ifndef __ALIGN
21#define __ALIGN .align 4,0x90
22#define __ALIGN_STR ".align 4,0x90"
23#endif
24
25#ifdef __ASSEMBLY__
26
27#define ALIGN __ALIGN
28#define ALIGN_STR __ALIGN_STR
29
Jan Beulichab7efcc2006-03-24 03:16:17 -080030#ifndef ENTRY
Linus Torvalds1da177e2005-04-16 15:20:36 -070031#define ENTRY(name) \
32 .globl name; \
33 ALIGN; \
34 name:
Jan Beulichab7efcc2006-03-24 03:16:17 -080035#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070036
Prasanna S Panchamukhid0aaff92005-09-06 15:19:26 -070037#define KPROBE_ENTRY(name) \
Prasanna S.Pd28c4392006-09-26 10:52:34 +020038 .pushsection .kprobes.text, "ax"; \
Jan Beulichab7efcc2006-03-24 03:16:17 -080039 ENTRY(name)
Prasanna S Panchamukhid0aaff92005-09-06 15:19:26 -070040
Prasanna S.Pd28c4392006-09-26 10:52:34 +020041#define KPROBE_END(name) \
42 END(name); \
43 .popsection
44
Jan Beulichab7efcc2006-03-24 03:16:17 -080045#ifndef END
46#define END(name) \
47 .size name, .-name
48#endif
49
50#ifndef ENDPROC
51#define ENDPROC(name) \
52 .type name, @function; \
53 END(name)
54#endif
Prasanna S Panchamukhid0aaff92005-09-06 15:19:26 -070055
Linus Torvalds1da177e2005-04-16 15:20:36 -070056#endif
57
58#define NORET_TYPE /**/
59#define ATTRIB_NORET __attribute__((noreturn))
60#define NORET_AND noreturn,
61
62#ifndef FASTCALL
63#define FASTCALL(x) x
64#define fastcall
65#endif
66
67#endif