Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5270 serge 1
#ifndef _LINUX_LINKAGE_H
2
#define _LINUX_LINKAGE_H
3
 
4
#include 
5
#include 
6
#include 
7
#include 
8
 
9
/* Some toolchains use other characters (e.g. '`') to mark new line in macro */
10
#ifndef ASM_NL
11
#define ASM_NL		 ;
12
#endif
13
 
14
#ifdef __cplusplus
15
#define CPP_ASMLINKAGE extern "C"
16
#else
17
#define CPP_ASMLINKAGE
18
#endif
19
 
20
#ifndef asmlinkage
21
#define asmlinkage CPP_ASMLINKAGE
22
#endif
23
 
24
#ifndef cond_syscall
25
#define cond_syscall(x)	asm(				\
26
	".weak " VMLINUX_SYMBOL_STR(x) "\n\t"		\
27
	".set  " VMLINUX_SYMBOL_STR(x) ","		\
28
		 VMLINUX_SYMBOL_STR(sys_ni_syscall))
29
#endif
30
 
31
#ifndef SYSCALL_ALIAS
32
#define SYSCALL_ALIAS(alias, name) asm(			\
33
	".globl " VMLINUX_SYMBOL_STR(alias) "\n\t"	\
34
	".set   " VMLINUX_SYMBOL_STR(alias) ","		\
35
		  VMLINUX_SYMBOL_STR(name))
36
#endif
37
 
38
#define __page_aligned_data	__section(.data..page_aligned) __aligned(PAGE_SIZE)
39
#define __page_aligned_bss	__section(.bss..page_aligned) __aligned(PAGE_SIZE)
40
 
41
/*
42
 * For assembly routines.
43
 *
44
 * Note when using these that you must specify the appropriate
45
 * alignment directives yourself
46
 */
47
#define __PAGE_ALIGNED_DATA	.section ".data..page_aligned", "aw"
48
#define __PAGE_ALIGNED_BSS	.section ".bss..page_aligned", "aw"
49
 
50
/*
51
 * This is used by architectures to keep arguments on the stack
52
 * untouched by the compiler by keeping them live until the end.
53
 * The argument stack may be owned by the assembly-language
54
 * caller, not the callee, and gcc doesn't always understand
55
 * that.
56
 *
57
 * We have the return value, and a maximum of six arguments.
58
 *
59
 * This should always be followed by a "return ret" for the
60
 * protection to work (ie no more work that the compiler might
61
 * end up needing stack temporaries for).
62
 */
63
/* Assembly files may be compiled with -traditional .. */
64
#ifndef __ASSEMBLY__
65
#ifndef asmlinkage_protect
66
# define asmlinkage_protect(n, ret, args...)	do { } while (0)
67
#endif
68
#endif
69
 
70
#ifndef __ALIGN
71
#define __ALIGN		.align 4,0x90
72
#define __ALIGN_STR	".align 4,0x90"
73
#endif
74
 
75
#ifdef __ASSEMBLY__
76
 
77
#ifndef LINKER_SCRIPT
78
#define ALIGN __ALIGN
79
#define ALIGN_STR __ALIGN_STR
80
 
81
#ifndef ENTRY
82
#define ENTRY(name) \
83
	.globl name ASM_NL \
84
	ALIGN ASM_NL \
85
	name:
86
#endif
87
#endif /* LINKER_SCRIPT */
88
 
89
#ifndef WEAK
90
#define WEAK(name)	   \
91
	.weak name ASM_NL   \
92
	name:
93
#endif
94
 
95
#ifndef END
96
#define END(name) \
97
	.size name, .-name
98
#endif
99
 
100
/* If symbol 'name' is treated as a subroutine (gets called, and returns)
101
 * then please use ENDPROC to mark 'name' as STT_FUNC for the benefit of
102
 * static analysis tools such as stack depth analyzer.
103
 */
104
#ifndef ENDPROC
105
#define ENDPROC(name) \
106
	.type name, @function ASM_NL \
107
	END(name)
108
#endif
109
 
110
#endif
111
 
112
#endif