summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2002-09-23 01:50:32 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2002-09-23 01:50:32 +0000
commite5c537e48a40d69509c6f79c53a8eb9d80ea3ef7 (patch)
tree2417dcf57fca527a693cde6f56c2d595cd2313b3
parent68e2f6f5dbedde3a48641b57c08fcd716c30aed3 (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.sh2
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