Commit | Line | Data |
---|---|---|
b67e612c AL |
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 */ |