behaviour of splhigh() was changed. The new behaviour raised the level to
IPL_HIGH if it was lower, but left it alone if the same or higher. Apparently
the firmware transfers to NetBSD with all interrupts blocked, or something
else blocks all interrupts (including machine checks) before the code
is really started. This meant that machine checks were blocked during
device probes, leading to false device probes _and_ an unexpected (and
therefore fatal) machine check at the spl0() after autoconfiguration.
"smallest amount to put in cluster", and (MHLEN + MLEN) is the largest amount
amount of data that can be stored without clustering.
Pointed out by Thorsten Frueauf <frueauf@ira.uka.de> with W. R. Stevens'
TCP/IP Illustrated, Vol. 2, at hand.
(1) it was using 'max', and some functions use a variable
of that name (*sigh*), and
(2) that makes it easier to be a bit trickier, and only call
swpipl if changing the IPL.
- Add NetBSD autoconfiguration support.
- Rearrange code slightly to minimize the number of #ifdefs.
- Don't use a structure to access CSRs. Use macros that DTRT for
the NetBSD and FreeBSD cases.
- Deal with alignment contraint on Alpha - add 2-byte padding at the
beginning of the RFA, so that the data will be 4-byte aligned, after
the 14-byte Ethernet header.
Thanks to Matthias Drochner for the testing, and David Greenman for
the feedback on the changes.
kernels, at the same time getting rid of up to 3 conditional branches and a
bit over one cacheline fetch (for the 68060; the saving is a bit smaller for
040 and yet smaller for the 020/30).
While we're here, also get rid of an redundant lea (using SP-relative
addressing) and of two redundant pushes.
While we're here, also fix a panic which would tear us down on 68060 machines
if a branch prediction error ever occured.
cast if it isn't. (These casts aren't necessarily safe, because of
alignment issues, but they allow the code to compile with prototyped versions
of bus_space_{read,write}_multi_2().)
disconnect from the BIOS
2) when text segment as claimed by BIOS is out of sensible range, punt
completely rather than trying to shrink it to fit the ISA hole. Some
BIOSes would crash with the previous behavior. Some won't have a
working APM with the new behavior, but their BIOSes are broken.
Suggested by Chris Demetriou, with very minor tweaks by me.