1) Add the NVRAM device. This device allows us to speak with the nvram on
prep-based machines and read/write to it. Also add a simple IOCTL
interface for speaking with the nvram from userland. This hasn't been
tested yet, but eventually I plan to support it with the sparc eeprom
command.
2) Change the root device detection to use the nvram device to attempt to
guess the boot device. Most machines should now correctly guess thier
boot device, though I expect a few devices to still not work quite right yet.
3) change the default IRQ to level rather than edge in the pnpbus if the
flags are invalid or empty. (based on output from a PowerStack E1)
4) correctly handle older machines in pnpbus that have FixedIOPorts
rather than variable ones.
Still have much to do.
To fix lingering problems with the LV/ULV Pentium Ms that run with a 400 MHz
FSB (738, et al), change ENTRY() yet again to directly include the FSB
multiplier - CPUID isn't enough to determine what it should be.
While I'm at it, add more values for the 750, and fix values for the 730
and 770 to jibe with what the 'prescribed' values (via ACPI) are.
Fixes PR/33080 and PR/33081.
Move the voltage-level check into the cpu ID loop, since it seems that
CPUs with the same ID string and the same CPUID can have different voltage
levels. Thank you, Intel.
COMPAT_NETBSD32. They haven't worked for 5 years.
Silently agreed by the tech-kern readers.
XXX sparc64 MD glue still lacking.
XXX The FPU registers on i386 are not dumped correctly, according to my
XXX tests. It shouldn't be much work for someone who has the slightest
XXX idea of how that stuff is supposed to be laid out on i386.
FROMBCD()/TOBCD() macros into wrappers around it, resulting in both
smaller code footprint and elimination of possible issues due to
multiple evaluation of macro arguments.
Suggested by Simon Burge and Anders Gavare on tech-kern.
moving system call functionality from trap.c to new syscall.c
Split out userret from trap.c to <machine/userret.h> and use
mi_userret().
This gets approx 20% speed improvement (45us to 36us) with lmbench's
"lat_syscall null" benchmark(!).
the TOY register, which is presumed to be seconds since Jan. 1 2000.
For now I'm assuming the trim divider is 32K, which makes 1 tick per sec.
This is true for the DBAU1550 board at least. Other boards might need to
initialize a reasonable trim counter and establish the 32KHz oscillator.
In any case, this code is *no worse* on older systems than what was there
before.
1) create new pnpbus psuedo bus. This is a bus layer that reads the PNP
tree from the residual data and allows attachment of devices with the
information given therein. Based loosely on i386/pnpbios.
2) Delete obio bus, as with the pnp bus we no longer need it.
3) Create a number of functions that gather the information needed to set
up the machine from the residual data, rather than hardcoding it in.
4) Create a quirk table for machines that are bizzare enough that the
residual information is not sufficient. (such as the 6015)
5) Using the data gathering routines and the quirk table, delete struct
platform completely from the architecture. Prep is now almost completely
dynamic in figuring out the machine it is running on and setting things
up properly.
6) Add a wdc_pnpbus driver which attaches the wdc controller found on
some 7248's and the 6015. This replaces the now-defunct wdc_obio.
7) delete all the mot_* and ibm_* files, and replace them with a single
ibm_machdep.c which only contains the quirk functions for the 6015 and
the 6050.
8) Modify GENERIC to work with all this stuff.