[PATCH] x86-64: move __vgetcpu_mode & __jiffies to the vsyscall_2 zone
We apparently hit the 1024 limit of vsyscall_0 zone when some debugging options are set, or if __vsyscall_gtod_data is 64 bytes larger. In order to save 128 bytes from the vsyscall_0 zone, we move __vgetcpu_mode & __jiffies to vsyscall_2 zone where they really belong, since they are used only from vgetcpu() (which is in this vsyscall_2 area). After patch is applied, new layout is : ffffffffff600000 T vgettimeofday ffffffffff60004e t vsysc2 ffffffffff600140 t vread_hpet ffffffffff600150 t vread_tsc ffffffffff600180 D __vsyscall_gtod_data ffffffffff600400 T vtime ffffffffff600413 t vsysc1 ffffffffff600800 T vgetcpu ffffffffff600870 D __vgetcpu_mode ffffffffff600880 D __jiffies ffffffffff600c00 T venosys_1 Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: Andi Kleen <ak@suse.de> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
0260c196c9
commit
141a892f57
1 changed files with 6 additions and 4 deletions
|
@ -95,6 +95,12 @@ SECTIONS
|
|||
{ *(.vsyscall_gtod_data) }
|
||||
vsyscall_gtod_data = VVIRT(.vsyscall_gtod_data);
|
||||
|
||||
|
||||
.vsyscall_1 ADDR(.vsyscall_0) + 1024: AT(VLOAD(.vsyscall_1))
|
||||
{ *(.vsyscall_1) }
|
||||
.vsyscall_2 ADDR(.vsyscall_0) + 2048: AT(VLOAD(.vsyscall_2))
|
||||
{ *(.vsyscall_2) }
|
||||
|
||||
.vgetcpu_mode : AT(VLOAD(.vgetcpu_mode)) { *(.vgetcpu_mode) }
|
||||
vgetcpu_mode = VVIRT(.vgetcpu_mode);
|
||||
|
||||
|
@ -102,10 +108,6 @@ SECTIONS
|
|||
.jiffies : AT(VLOAD(.jiffies)) { *(.jiffies) }
|
||||
jiffies = VVIRT(.jiffies);
|
||||
|
||||
.vsyscall_1 ADDR(.vsyscall_0) + 1024: AT(VLOAD(.vsyscall_1))
|
||||
{ *(.vsyscall_1) }
|
||||
.vsyscall_2 ADDR(.vsyscall_0) + 2048: AT(VLOAD(.vsyscall_2))
|
||||
{ *(.vsyscall_2) }
|
||||
.vsyscall_3 ADDR(.vsyscall_0) + 3072: AT(VLOAD(.vsyscall_3))
|
||||
{ *(.vsyscall_3) }
|
||||
|
||||
|
|
Loading…
Reference in a new issue