This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.
TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.
NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
1) Fix support for the powerstack E1. This machine needs to use the 8259
directly, and cannot use the prep interrupt vector register. Place a
quirk entry in the table for the machine.
2) Add a new com0_vreset boot image. The vreset code only works on a few
machines, and breaks others like the 7025-F40. Its only limitedly useful
when used with the com0, so just make it an optional image the user can
install by hand if they want.
3) Bump the bootloader to 1.8 with the above change.
ntp on my 7248, however, my 7043-140 is still a bit flaky. I suspect the
only way to fix the 7043 is going to be writing a timecounter driver for
the 8254 present on these machines. Either way, this makes some of the
machines better, and the other machines are still about the same as they
were before, so it's a net gain for the port.
1) Rewrite vreset.c completely. Saves about 1k, and now it sets the
screen up much better. Previously the resulting video mode looked bad on
my CRT, and my LCD wouldn't even recognize it as a valid mode. Now it
looks reasonably good and my LCD can talk to it.
2) Call vga_reset unconditionally in the setup process to fix the onboard
VGA. If you have a VGA and use the serial console, this will allow you
to still use the VGA device for getty/wscons. Tested on a 7248 with VGA
and a 7043 without VGA.
3) Change filesystem.c to use nullfs rather than ufs and cd9660. We
don't actually need an fs at all, but it would take a major rewrite to
get rid of them completely. This saves about 6KB on the bootloader.
4) Bump version to 1.7.
set the makefile to build the bootloader without the DB_MONITOR stuff by
default, as it is primarily for debugging. Reduces bootloader size by
about 8k.
It now handles three different cases:
1) if you have an old disk.. it reads the partition table, and writes the new
image with that.
2) if you are doing a new install, you can build an image w/o the table that
can be dd'd to any PReP boot partition.
3) it works the old way for making netboot or floppy images
Additionally, it now includes libz, and automatically compresses the
kernel image, rather than requiring an external step.
tool compiles on non-NetBSD now.
Note: We're not actually using BFD, just two header files that are
more conveniently laid out than our native header. There is no GPL
infection from using the BFD headers.
* Rename "config.h" to "nbtool_config.h" and
HAVE_CONFIG_H to HAVE_NBTOOL_CONFIG_H.
This makes in more obvious in the source when we're using
tools/compat/config.h versus "standard autoconf" config.h
* Consistently move the inclusion of nbtool_config.h to before
<sys/cdefs.h> so that the former can provide __RCSID() (et al),
and there's no need to protect those macros any more.
These changes should make it easier to "tool-ify" a program by adding:
#if HAVE_NBTOOL_CONFIG_H
#include "nbtool_config.h"
#endif
to the top of the source files (for the general case).
<sys/bootblock.h>:
* Added definitions for the Master Boot Record (MBR) used by
a variety of systems (primarily i386), including the format
of the BIOS Parameter Block (BPB).
This information was cribbed from a variety of sources
including <sys/disklabel_mbr.h> which this is a superset of.
As part of this, some data structure elements and #defines
were renamed to be more "namespace friendly" and consistent
with other bootblocks and MBR documentation.
Update all uses of the old names to the new names.
<sys/disklabel_mbr.h>:
* Deprecated in favor of <sys/bootblock.h> (the latter is more
"host tool" friendly).
amd64 & i386:
* Renamed /usr/mdec/bootxx_dosfs to /usr/mdec/bootxx_msdos, to
be consistent with the naming convention of the msdosfs tools.
* Removed /usr/mdec/bootxx_ufs, as it's equivalent to bootxx_ffsv1
and it's confusing to have two functionally equivalent bootblocks,
especially given that "ufs" has multiple meanings (it could be
a synonym for "ffs", or the group of ffs/lfs/ext2fs file systems).
* Rework pbr.S (the first sector of bootxx_*):
+ Ensure that BPB (bytes 11..89) and the partition table
(bytes 446..509) do not contain code.
+ Add support for booting from FAT partitions if BOOT_FROM_FAT
is defined. (Only set for bootxx_msdos).
+ Remove "dummy" partition 3; if people want to installboot(8)
these to the start of the disk they can use fdisk(8) to
create a real MBR partition table...
+ Compile with TERSE_ERROR so it fits because of the above.
Whilst this is less user friendly, I feel it's important
to have a valid partition table and BPB in the MBR/PBR.
* Renamed /usr/mdec/biosboot to /usr/mdec/boot, to be consistent
with other platforms.
* Enable SUPPORT_DOSFS in /usr/mdec/boot (stage2), so that
we can boot off FAT partitions.
* Crank version of /usr/mdec/boot to 3.1, and fix some of the other
entries in the version file.
installboot(8) (i386):
* Read the existing MBR of the filesystem and retain the BIOS
Parameter Block (BPB) in bytes 11..89 and the MBR partition
table in bytes 446..509. (Previously installboot(8) would
trash those two sections of the MBR.)
mbrlabel(8):
* Use sys/lib/libkern/xlat_mbr_fstype.c instead of homegrown code
to map the MBR partition type to the NetBSD disklabel type.
Test built "make release" for i386, and new bootblocks verified to work
(even off FAT!).