summaryrefslogtreecommitdiffstats
path: root/lib/libsqlite3/src
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2014-03-22 00:01:04 +0000
committermiod <miod@openbsd.org>2014-03-22 00:01:04 +0000
commit1c16ef4cd4f56084eddefd8d73884e5e20893930 (patch)
tree9dbc0d98530b03bfcaa0f75ae4b74ab0cc47b12d /lib/libsqlite3/src
parentShuffle tlblo-related defines, to better show which bits are software only, (diff)
downloadwireguard-openbsd-1c16ef4cd4f56084eddefd8d73884e5e20893930.tar.xz
wireguard-openbsd-1c16ef4cd4f56084eddefd8d73884e5e20893930.zip
Second draft of my attempt to workaround the infamous R4000 end-of-page errata,
affecting R4000 processors revision 2.x and below (found on most R4000 Indigo and a few R4000 Indy). Since this errata gets triggered by TLB misses when the code flow crosses a page boundary, this code attempts to identify code pages prone to trigger the errata, and force the next page to be mapped for at least as long as the current pc lies in the troublesome page, by creating wiring extra TLB entries. These entries get recycled in a lazy-but-aggressive-enough way, either because of context switches, or because of further tlb exceptions reaching trap(). The errata workaround code is only compiled on R4000-capable kernels (i.e. sgi GENERIC-IP22 and nothing else), and only enabled on affected processors (i.e. not on R4000 revision 3, or on R4400). There is still room for improvemnt in unlucky cases, but in this simple enough incarnation, this allows my R4000 2.2 Indigo to finally reliably boot multiuser, even though both /sbin/init and /bin/sh contain code pages which can trigger the errata.
Diffstat (limited to 'lib/libsqlite3/src')
0 files changed, 0 insertions, 0 deletions