Call configure() directly immediately after config_init().
This causes autoconfiguration to happen at the same time as before, but
creates some kernel submaps earlier, so that e.g. mbinit() can now
allocate memory.
- Protect userspace from unnecessary header inclusions (as noted on
current-users).
- Some const poisioning.
- GREATLY simplify the locking protocol, and fix potential deadlock
scenarios. In particular, assume that the back-end page allocator
provides its own locking mechanism (this is currently true for all
such allocators in the NetBSD kernel). Doing so allows us to simply
use one spin lock for serialized access to all r/w members of the pool
descriptor. The spin lock is released before calling the back-end
allocator, and re-acquired upon return from it.
- Fix a problem in pr_rmpage() where a data structure was referenced
after it was freed.
- Minor tweak to page manaement. Migrate both idle and empty pages
to the end of the page list. As soon as a page becomes un-empty
(by a pool_put()), place it at the head of the page list, and set
curpage to point to it. This reduces fragmentation as well as the
time required to find a non-empty page as soon as curpage becomes
empty again.
- Use mono_time throughout, and protect access to it w/ splclock().
- In pool_reclaim(), if freeing an idle page would reduce the number
of allocatable items to below the low water mark, don't.
test for divide-by-zero, unlike machine insn) from the binutils-2.9.1
sequence to the older binutils-2.8.1 sequence.
gas 2.8.1 emits a div as (in pseudocode)
divu $zer0o, a0, v0; bnez $v0, 1f; nop; break0x7; 1: mflo a0;
gas 2.9.1 emits the shorter sequence
bnez <divisor>, 1f; divu <args>; break0x7; 1:
bnez $v0, 1f; divu $zer0o, a0, v0; /break0x7; 1: mflo a0;
but that on a decstation 5000/150 with a rev 3.0 r4000, for kernel
code, later references to $a0 seem to get a corrupted value. not
reproduced yet on an r4400.
Could be an r4000-specific bug with the interlock on mulhi and mullo?
of the Compaq NetFlex 3/P uses a Thunerlan TNETE100 chip. The PCI variant
use some other PCI chip the ThunderLAN driver can't handle yet.
Also, correct SYNOPSYS.
- there are a couple of registers that are reset after the X server finishes,
which do not have the same values as they do when the machine is powered
on. If the two are mismatched you can't write to the video memory.
- video memory is mapped at offset 4MB to keep the X server happy
- there is now a VGA memory mapping
- DEBUG_ET4000 is now a bit more useful for debugging!