summaryrefslogtreecommitdiffstats
path: root/usr.bin/mandoc/mdoc.c
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2010-12-23 20:05:07 +0000
committermiod <miod@openbsd.org>2010-12-23 20:05:07 +0000
commita83c48b9e9e9773c38f456a544af7fd9ee6d49a9 (patch)
treee3f43673a153b0fe09975e2a7e15830a636a0b9e /usr.bin/mandoc/mdoc.c
parentAdd a common interface for various devices (diff)
downloadwireguard-openbsd-a83c48b9e9e9773c38f456a544af7fd9ee6d49a9.tar.xz
wireguard-openbsd-a83c48b9e9e9773c38f456a544af7fd9ee6d49a9.zip
The exception vector page on m88k systems has always been the same page as
the one used by the firmware, which (at least on mvme88k) is at address zero. This is unfortunate, since this means that NULL pointer dereferences in the kernel are not caught, and writes cause havoc. This behaviour was necessary to be able to use the PROM system call interface during early bootstrap, without having to disassemble the VBR page and update branches - which use pc-relative displacement - if we were to use a different VBR address. On mvme88k, change this and actually set up two VBR pages: one, over the PROM page (except for the system call vectors), and another one in the kernel image (which will be mapped read-only). We'll run with the PROM page until the end of autoconf, and then switch to the kernel one, and unmap all the PROM below it. As a bonus, the final kernel page can use optimized data access fault handlers, which do not have to check for faults caused by badaddr(), since badaddr() is only used during device probe on buses which do not support hotplug. There are a few infrastructure collateral damage on aviion and luna88k, but these ports do not change their behaviour yet.
Diffstat (limited to 'usr.bin/mandoc/mdoc.c')
0 files changed, 0 insertions, 0 deletions