code has copied the new kernel in place, so pass a copy of bootinfo
to the new kernel via "page tags".
Restructure the code to fill "page tags" to make it more generic and
more natural to use (especially in anticipation of ksyms support).
leave 4 bytes for the Windows NT Drive Serial Number (DSN) at 440-443
(as mbr_sector.mbr_dsn).
Ensure that all the MBR & PBR code reserves space for mbr_sector.mbr_dsn.
Leave the bootsel magic number at 444-445 as mbr_sector.mbr_bootsel_magic
(instead of mbr_sector.mbr_bootsel.mbrbs_magic), but use 0xb5e1 (MBR_BS_MAGIC)
instead of 0xaa55 (MBR_MAGIC) to indicate that this change has occurred.
Rework MBR_BS_NEWMBR to mean "mbr_bootsel has moved to 400".
Modify fdisk(8) to automatically relocate the mbr_bootsel from 404 to 400
if mbr_bootsel_magic is the old value (0xaa55), and unset MBR_BS_NEWMBR
to flag that new mbr_bootsel code must be used if updating the MBR.
These changes fixes a problem where Windows 2000 or Windows XP would corrupt
the last 3 bytes + NUL of MBR partition 3's bootsel name if the bootsel name
was 5 characters long, replacing bytes 6-9 with the DSN.
Also, by explicitly reserving the space for the DSN we prevent problems in the
future if non bootsel MBR or PBR code had other information at bytes 440-443.
in the early boot phase.
Define prom_interpret() to be a simple form of the Openfirmware OF_interpret().
Re-arrange OLDMON code in prom_getidprom() to make it compile on sparc64.
previous version would easily make the low order bits oscillate between 0
and some other value.
Together with the previous change, this should make those
pmap_pinit: out of segments
panics even less likely.
We should really attempt a systematic search before panic()ing at the end.
This should fix PR #24754, as well as many of the hangs and process
aborts reported on port-macppc@ in the last weeks.
This error would cause the pmap's vsid never to be freed, and would
occasionnally free a valid vsid used by another pmap, sometimes the kernel's.
. add a related KASSERT() to avoid regression
get properly probed and initialized. This also fixes the problem of the
keyboard getting the console output and the keyboard port getting the wrong
serial baud rate. The lcg driver is not currently present, but should be
"real soon now".
already mapped in the early console startup.
The software cursor isn't going to blink if we don't start it - set up the
callout when attaching.
Now that the cursor blink routine is actually called, blink the entire cursor
line rather than just the first pixel.
Don't try to clear the current cursor if the pointer to it hasn't been
initialized. This seems to happen when using the display as console, but
not when using a serial console.
On early console startup, use the framebuffer sizes, not the character cell
size to compute how much to clear.
The lcspx display will now initialize when booting with the display console,
but the dz device is not detected and the keyboard will not work yet. I
haven't tracked down why the dz device isn't found (it works fine when
using a serial console).
driver. Still some issues:
* framebuffer setup seems incomplete. Some drawing primitives work 100%
of the time, while others fail one in ten tries. Perhaps my board is
slightly broken, as the exact model as probed by ARCS seems to shift
between Elan and XS24 from time to time.
* characters are drawn bottom-up rather than top-down (as the wsfont
definitions expect).
it either is sitting in contiguous physical RAM or split the mbuf
into two Tx descriptors. Not the prettiest patch, but works well in
practice - gets about an 8% decrease on CPU time for a simple ttcp TCP
Tx benchmark. Thanks to Chris Demetriou for some debugging help.
Add some event counters.
Remove some #if 0'd debug code.
we start calling into C code. Previously we called memset() in our
C code. Unfortunately the compiler would sometimes store local variables
on the statck, which got killed by the memset(). Oops!