diff options
author | Artur Grabowski <art@cvs.openbsd.org> | 2002-09-23 01:50:32 +0000 |
---|---|---|
committer | Artur Grabowski <art@cvs.openbsd.org> | 2002-09-23 01:50:32 +0000 |
commit | e5c537e48a40d69509c6f79c53a8eb9d80ea3ef7 (patch) | |
tree | 2417dcf57fca527a693cde6f56c2d595cd2313b3 | |
parent | 68e2f6f5dbedde3a48641b57c08fcd716c30aed3 (diff) |
In an ELF binary the end of the text segment and the start of the data
segment can share the same page in the file. Since we can't mmap it with
the same permissions, the data segment is loaded offset by a constant so
that it ends up in a different page.
On sparc that's not really enough. To avoid cache aliases we have to make
the offset big enough to make sure that we don't get incoherent aliases
that would have to be mapped uncached. This offset has been 64k this
far and noone noticed until some change actually made us fault in those
pages at the same time and incoherent aliases reduced make build time on
some hypersparcs (only hypersparcs have big enough caches to notice this)
from 14 hours to 23 hours.
Bump that offset (MAXPAGESIZE) to 1MB.
deraadt@ ok
-rw-r--r-- | gnu/usr.bin/binutils/ld/emulparams/elf32_sparc.sh | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gnu/usr.bin/binutils/ld/emulparams/elf32_sparc.sh b/gnu/usr.bin/binutils/ld/emulparams/elf32_sparc.sh index 74e2326d53e..da5c4a7a079 100644 --- a/gnu/usr.bin/binutils/ld/emulparams/elf32_sparc.sh +++ b/gnu/usr.bin/binutils/ld/emulparams/elf32_sparc.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-sparc" TEXT_START_ADDR=0x10000 -MAXPAGESIZE=0x10000 +MAXPAGESIZE=0x100000 NONPAGED_TEXT_START_ADDR=0x10000 ALIGNMENT=8 ARCH=sparc |