diff options
Diffstat (limited to 'arch/x86/vdso/vdso_image.h')
-rw-r--r-- | arch/x86/vdso/vdso_image.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/x86/vdso/vdso_image.h b/arch/x86/vdso/vdso_image.h new file mode 100644 index 000000000000..1baa6bc517bf --- /dev/null +++ b/arch/x86/vdso/vdso_image.h | |||
@@ -0,0 +1,30 @@ | |||
1 | #ifndef _VDSO_IMAGE_H | ||
2 | #define _VDSO_IMAGE_H | ||
3 | |||
4 | #include <asm/page_types.h> | ||
5 | #include <linux/linkage.h> | ||
6 | |||
7 | #define DEFINE_VDSO_IMAGE(symname, filename) \ | ||
8 | __PAGE_ALIGNED_DATA ; \ | ||
9 | .globl symname##_start, symname##_end ; \ | ||
10 | .align PAGE_SIZE ; \ | ||
11 | symname##_start: ; \ | ||
12 | .incbin filename ; \ | ||
13 | symname##_end: ; \ | ||
14 | .align PAGE_SIZE /* extra data here leaks to userspace. */ ; \ | ||
15 | \ | ||
16 | .previous ; \ | ||
17 | \ | ||
18 | .globl symname##_pages ; \ | ||
19 | .bss ; \ | ||
20 | .align 8 ; \ | ||
21 | .type symname##_pages, @object ; \ | ||
22 | symname##_pages: ; \ | ||
23 | .zero (symname##_end - symname##_start + PAGE_SIZE - 1) / PAGE_SIZE * (BITS_PER_LONG / 8) ; \ | ||
24 | .size symname##_pages, .-symname##_pages | ||
25 | |||
26 | #define DECLARE_VDSO_IMAGE(symname) \ | ||
27 | extern char symname##_start[], symname##_end[]; \ | ||
28 | extern struct page *symname##_pages[] | ||
29 | |||
30 | #endif /* _VDSO_IMAGE_H */ | ||