Robert Swindells, with addition of serial console, other assorted cleanup
and much headbanging by me. Tested only on a iPaq 3970 so far.
NB: So far this uses the SA-11xx-targetted assembly code (including cache
handling, etc). Fortunately, none of that's required since hpcboot allocs
cache-inhibited pages from WinCE to copy the 2nd-stage loader and kernel
into. I've split the code into SA-11xx and PXA-2x0 bits in my tree, but
that needs help/review from someone with ARM/XScale clue.
Fixes a frequent memory stomp of the bootinfo page (the kernel entry address,
no less) that occurrs when you turn the serial-debug code in the ARM 2nd-
stage bootloader.
Visual C++ 4 for ARM, SH[34]. Not currently integrated into the 'install'
targets since it's only been tested for ARM; SH targets compile but I have
no hardware to test on. eVC++4 only supports targets of MIPSII, MIPSIV
and MIPS16 so that might not be appropriate for the hpcmips based systems.
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.
need to understand the locking around that field. Instead of setting
B_ERROR, set b_error instead. b_error is 'owned' by whoever completes
the I/O request.
version.
Add disk_blocksize(9) so that disk drivers can record the physical
block size of a disk if it is different to DEV_BSIZE. Right now this
simply initialises dk_blkshift and dk_byteshift according to the
supplied block size. This information is used in the MI version of
bounds_check_with_label().
my archive of commit mail):
Take DST into account when computing bi.timezone offset, so that
NetBSD gets correct time when booted in the summer.
Fix framebuffer address for Jornada 7xx machines, so that you can boot
with layouts other than "Japanese" (which happened to have the
framebuffer address in its entry).
Fix a bug where ksyms were not loaded correctly, which also caused the
kernel to not recognize detached miniroot.
Kludge required memory size calculations to compensate for partially
filled tagged pages, or kernel with certain segment sizes wouldn't
load.
[hpcarm have picked up some of these fixes in hpcboot v14 that was
compiled/committed in the meanwhile, for hpcarm only].
Instead of polluting libkern.h with ifdefs introduce our own private
copy. Since AFAICT we only need it for libsa/ufs.c which only
includes it for the strlen() prototype, trim it to provide just that
for now.
We cannot just #include <string.h> (the WinCE one) here, as that pulls
in a lot of unrelated stuff, e.g. defines for limits that collide with
machine/limits.h
pages to allocate, as some of those pages are only partially filled
(e.g. last page of loadable segment) we may allocate too few tagged
pages and boot will fail. So lie by reporting extra size for each
partial tagged page.
XXX: This is an ugly hack, but I'm not going to shave this yak.