diff options
Diffstat (limited to 'arch/i386/kernel')
-rw-r--r-- | arch/i386/kernel/vsyscall-note.S | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/i386/kernel/vsyscall-note.S b/arch/i386/kernel/vsyscall-note.S index 271f16a8ca01..07c0daf78237 100644 --- a/arch/i386/kernel/vsyscall-note.S +++ b/arch/i386/kernel/vsyscall-note.S | |||
@@ -14,7 +14,6 @@ ELFNOTE_START(Linux, 0, "a") | |||
14 | ELFNOTE_END | 14 | ELFNOTE_END |
15 | 15 | ||
16 | #ifdef CONFIG_XEN | 16 | #ifdef CONFIG_XEN |
17 | |||
18 | /* | 17 | /* |
19 | * Add a special note telling glibc's dynamic linker a fake hardware | 18 | * Add a special note telling glibc's dynamic linker a fake hardware |
20 | * flavor that it will use to choose the search path for libraries in the | 19 | * flavor that it will use to choose the search path for libraries in the |
@@ -28,15 +27,19 @@ ELFNOTE_END | |||
28 | * It should contain: | 27 | * It should contain: |
29 | * hwcap 1 nosegneg | 28 | * hwcap 1 nosegneg |
30 | * to match the mapping of bit to name that we give here. | 29 | * to match the mapping of bit to name that we give here. |
30 | * | ||
31 | * At runtime, the fake hardware feature will be considered to be present | ||
32 | * if its bit is set in the mask word. So, we start with the mask 0, and | ||
33 | * at boot time we set VDSO_NOTE_NONEGSEG_BIT if running under Xen. | ||
31 | */ | 34 | */ |
32 | 35 | ||
33 | /* Bit used for the pseudo-hwcap for non-negative segments. We use | 36 | #include "../xen/vdso.h" /* Defines VDSO_NOTE_NONEGSEG_BIT. */ |
34 | bit 1 to avoid bugs in some versions of glibc when bit 0 is | ||
35 | used; the choice is otherwise arbitrary. */ | ||
36 | #define VDSO_NOTE_NONEGSEG_BIT 1 | ||
37 | 37 | ||
38 | .globl VDSO_NOTE_MASK | ||
38 | ELFNOTE_START(GNU, 2, "a") | 39 | ELFNOTE_START(GNU, 2, "a") |
39 | .long 1, 1<<VDSO_NOTE_NONEGSEG_BIT /* ncaps, mask */ | 40 | .long 1 /* ncaps */ |
41 | VDSO_NOTE_MASK: | ||
42 | .long 0 /* mask */ | ||
40 | .byte VDSO_NOTE_NONEGSEG_BIT; .asciz "nosegneg" /* bit, name */ | 43 | .byte VDSO_NOTE_NONEGSEG_BIT; .asciz "nosegneg" /* bit, name */ |
41 | ELFNOTE_END | 44 | ELFNOTE_END |
42 | #endif | 45 | #endif |