* ibus (virtual bus for baseboard direct-attach deviecs)
* 5100 support, using ibus
* rename "clock" to mcclock for future support of Qbus machiens
* use sys/dev/dec mcclock_pad32 machinery for pmax mcclock
* reworked TC config code.
Also make TC framebuffer-console search table-driven.
Does not yet include "tcasic" layer; there's no such hardware on DECstations
and nothing for a tcasic layer to do.
into sys/dev/dec and split into a clockfns layer and a "middle" layer
for other DEC systems which use mcclocks with each onchip byte
register padded out to a 32-bit word.
Clone alpha/alpha/mcclock (also duplicated in pmax port) into
sys/dev/dec, and ifdef for default clockrates on pmax and alpha.
Use new machinery on pmax for ibus,ioasic attached mcclocks.
read and write compare register (controls cycle-driven periodic interrupt).
Use cycle counter for microsecond time on mips3, but for now only on
3min motherboards (5000/150). the MAXINE baseboard microsecond
counter is more stable and I don't ave no 5000/260 to test.
XXX clkread() is a mess, it should be rewritten.
XXX should add nanotime() to give inkernel nanosecond resolution,
and then microtime() reworked to use nanotime().
* dec_5100.c: sysconf, interrupt, and motherboard (drain writebuffer)
support for 5100.
* support for hardware kludge in 5100: sii DMA buffer is hardware
padded to alternate 32-bit words, not alternating 16-bit halfwords.
* 5100 has no framebuffer, console is wired to serial port 0.
With ibus support, boots as far as exec'ing init, and hangs.
a HAVE_GCC28 check-variable that can now be used to add other gcc-2.8
flags in cases where they may be useful, or to remove gcc 2.7.2 "bug
workaround" flags.)
dec_3max.c into a shared file. These models have compatible memory
subsystems, the same memory slots, and (apparently) the same error reporting.
Add markers for where MNN probes for configurations with a mixture of
RAM sizes and for Prestoserve NVRAM (in normal RAM slots) should go.
interrupt-callout vector from mips locore dispatch code to port code.
* Move branch-emulation declaration to mips/include/trap.h.
* Garbage-collect pmax/pmax/trap.h.
Not needed now pmax/pmax_trap.c is gone, and after above tidy-up.
Replace all DS5000_* and DS3100 ifdefs with ifdefs on DEC_ options.
* Use MI declarations, not pmax-specific, in model-specific init
that uses baseboard (ioasic) registers.
* Further cleanup of machdep.c. Clock-tick still needs more thought.
* Use 'ibus' names for 3100 baseboard devices in MI code.
* add "Platform" support inpmax/pmax/sysconf.c and pmax/include/sysconf.h
(based on Alpha cpuconf.[ch], with a namechange to avoid clashes with
support for models of MIPS cpus. They differ more than Alphas).
* For each supported model of DECstation, create a separate file
with the support for that model. Use model codenames, since
support is really baseboard-specific and CPU daugherboards can change.
Move code from machdep.c and pmax_trap.c,
Add sysconf (nee "cpuconf") support.
* Rename model-specific functions to match sysconf names.
* Clean up autoconf.c. Use platform callbacks.
* Retire pmax_trap.c.
Leaves I/O bus configuration and console configuration untouched.
as pmax/dev/findcons.c:
* Follow the same logic: look for the device the PROM is using.
* If it's a framebuffer and we don't have a driver for it, try other
* framebuffers in PROM search order.
* If no match found, warn user and fall over to serial console.
* if no serial console found, go back to PROM.
Rework tc/scc.c attach routine to give cleaner initialization semantics.
Prune out old 'braindamage' code.
* Do rcons output properly, using cn_tab->cn_dev which points
at rcons cdevsw entrypoints.
* The pmadx console code was using keyboard (serial) device
(major,minor) for raster consoles with special code in the keyboard
drivers to catch output intended for consoles, pull it off the device
queue, and print them via cnputc().
Ifdef out RCONS_BRAINDAMAGE.
* Other minor cleanup to pmax scc driver.
also calls biowait().
Some drives seek to modepage on every modepage geometry-sense in rzready()
cache dev_t of last readied device in rzdump() to elide rzready() calls.
2x speedup of dumps on rz25 and 20x-30x speedup on some IBM OEM 4gig drives.
from DELAY(100) to DELAY(150). The newer accurate DELAY() calibration
left some mice (mostly VSXXX-GA square, not VSXXX-AA hockeypuck)
ignoring the MOUSE_INCREMENTAL command.
The 150ms delay is verified to work on 3100s on both kinds of mice.
Fix cursor sprite for X11 startup/exit:
* add cursor on/off functions.
* Default cursor state is off (for framebuffer console).
* Turn off cursor in each driver's xxxCursorInit() entrypoint.
* Turn on cursor at the end of each driver's xxxLoadCursor() entrypoint.
works with X11R5 servers shipped with NetBSD 1.3.
* add cursor on/off functions.
* Default cursor state is off (for framebuffer console).
* Turn off cursor in each driver's xxxCursorInit() entrypoint.
* Turn on cursor at the end of each driver's xxxLoadCursor() entrypoint.
works with X11R5 servers shipped with NetBSD 1.3.
tech-kern. Reported by Sean Davidson to cause erroneous doubling of
keyboard input on a 5000/50 under load.
Increasing the DELAY() from 2 to 30 doesn't help. Remove it for the
1.3 release. May cause problems with low-speed serial input, but
console keyboards work properly.
* Add code to query CDs for size, from MI scsi cd.c. Use it on CDs.
* Set C partition size for CDs. 4.4bsd/pmax code only set `a' partition
size and required users to mount `a' partition, breking raw-device
access like "disklabel rz?".
* Avoid possible divide-by-zero call to howmany() from rzstart(),
on removable media that aren't ready at device-open time.
Verified to work on rrz42.
until a proper fix is available:
Perpetuate the 4.4bsd design even further. Change keyboard-driver
open routines to check for an active raster console. If active, set the
keyboard struct tty's t_winsize from the rcons t_winsize on first open.
See pr 4438 for remaining problems and discussion of a complete fix.
* add includes for sys/dev/scsipi headers.
* cut-and-paste mode_sense and disk-geometry sense code from sd.c,
with name changes sd -> rz.
* Write `rz_command()' to send SCSI sense commands based on
existing rz size-sensing code.
* get geometry info with page 4 and page 5 mode sense.
* use resulting geom info for default label, fake label, and when
using ultrix labels. (ultrix labels have no geometry info).
Fixes incrrect-label bugs with using sysinst to install onto
Ultrix-labelled disks.
* Check for a disklabel matching the known values in an install diskimage.
If found, update incore disklabel's RAW_PART with the size reported
by the disk, clobbering the size used by vnd(4).*
* If geometry info is bogus or /missing, supply a fake geometry
(as in sd.c). Saves readdisklabel() and sysinst from divide-by-zero errors.
* lint: RAWPART -> RAW_PART.
(_BYTE_ORDER, _BIG_ENDIAN, _LITTLE_ENDIAN).
Define old names from the ANSI ones if not _POSIX_SOURCE.
* Define _QUAD_HIGHWORD and _QUAD_LOWWORD properly when
_BYTE_ORDER == _BIG_ENDIAN.
pseudo-device rnd # /dev/random and in-kernel generator
in config files.
o Add declaration to all architectures.
o Clean up copyright message in rnd.c, rnd.h, and rndpool.c to include
that this code is derived in part from Ted Tyso's linux code.
by renaming "netbsd" to "netbsd.elf", and then creating an a.out image
called "netbsd".
Instead, create _both_ ECOFF and a.out versions of the kernels, named
"netbsd.ecoff" and "netbsd.aout" respectively, and drop the ".elf"
from the ELF kernel.
(And, with any luck, the a.out hack will go away completely Very Soon.)
msgbuf. Note that old 'dmesg' and 'syslogd' binaries will continue running,
though old 'dmesg' binaries will output a few bytes of junk at the start of
the buffer, and will miss a few bytes at the end of the buffer.
(currently only CD-ROM drives on i386). The sys/dev/scsipi system provides 2
busses to which devices can attach (scsibus and atapibus). This needed to
change some include files and structure names in the low level scsi drivers.
Compute CPU speed(MHz) and loop multiplier for DELAY() based on
counting empty loop between mcclock ticks. New global: cpu_mhz.
Change pmax/pmax/machdep.c to build baseboard model names from cpu_mhz.
Set 'cpuspeed' for more realistic DELAY() on mips3 models.
Mips CPU constants, testing, and calibration from D. Sean Davidson
<davidson@zk3.dec.com> and Simon Burge <simonb@telstra.com.au>.
* Move clockvar.h (header file for generic clock code) to sys/dev/dec.
* Move if_le_dec.c with DEC padded LANCE-dma (pmax/pmax, ioasic, vax 3400)
to sys/dev/dec. Remove from sys/dev/tc.
* Declare attribute le_dec_subr in /sys/dev/dec/files.dec,
use if_le_dec.c when it's defined.
* Move IOCTL asic declaration from pmax and Alpha MD machine
files to sys/dev/tc/files.tc.
* move TurboChannel and ioasic if_le attachments from pmax and Alpha machine
config files to /sys/dev/tc/files.tc. Add le_dec_subr attribute.
* Add if_le_dec attribute to if_le_ibus (pmax ds3100 pmax) LANCE attachment.
Add DDB interface to /sys/arch/mips/mips..
Rework heuristic stack traceback to work with DDB.
Add hooks to print exception log from DDB.
Add hooks from pmax console drivers: call Debugger()
after break from serial console, or 'DO' key from LK-xxx.
newly-exec()ed user-land process for the new dl*-capable crt0:
a0 stack pointer (points to onstack argc)
a1 rtld cleanup (filled in by dynamic loader)
a2 rtld object (filled in by dynamic loader)
a3 ps_strings
From Jason Thorpe (thorpej@nas.nasa.gov).
* cpuregs.h:
rename remaining VMMACH_xxx TLB macros to MIPS_TLB_xxx.
Add compile-time MIPS3-only, compile-time MIPS1-only, and
runtime (both) definitions for number of TLB ASIDs (tlb pids)
and shift count to extract a TLB pid.
* locore.h:
Delete unused vector slot for indexed TLB writes.
mips1 and mips3 TLBs are different enough that we have
to break them out at the caller anyway.
* Add compile-time MIPS3-only andcompile-time MIPS1-only
macros to call locore functions directly by name.
Use the existing method table only if
* mips/mips_machdep.c, mips/trap.c, mips/pmap.c, pmax/machdep.c:
Use MIPS3_ or MIPS1_ specific names for TLB pids in
mips3 and mips1 specific code paths (e.g., creating the kernel stack
for process 0).
Add `options MIPS3' to pmax/conf/GENERIC.
* cpuregs.h:
Delete unused VMMACH_ names (e.g., duplicates of PTE bits in pte.h).
Change remaining VMMACH_xxx names to MIPS1_xxx or MIPS3_xx.
Fold remaining compile-time definitions into a single #ifdef MIPS3.
* Use MIPS1_ names in locore_r2000.S, mips3_ names in locore_r4000.S
* Garbage-collect MachHitFlushDCache()
* psl.h:
use MIPS1_, MIPS3_ symbolic names for Cause register bits.
change _R3K to MIPS1_, _R4K to MIPS3. Conditionalize for mips1 only,
mips3 only, or when both are defined, use runtime CPUISMIPS3 test.
similar design and code by Jason Thorpe and Jonathan Stone.
NOTE: the kernel-stack-switching code and cacheflush() calls in
locore.S still use #ifdef MIPS3 and need more work.
mips/include/cpu.h:
Add CPUISMIPS3 for run-time tests of what CPU architecture level
we're running on.
mips/include/locore.h:
Add declarations of locore cache-size variables for ref/def toolchain.
mips/include/mips1_pte.h:
mips1 TLB bit definitions.
mips/include/mips3_pte.h:
mips3 TLB bit definitions.
mips/include/pte.h:
define accesor macros for TLB bits (e.g., mips_pg_m_bit(),
that expand to CPU constants if only one CPU arch is configured,
or to inline functions if both MIPS1 and MIPS3 are configured.
mips/mips/locore_r2000.S:
Use MIPS1_PG_xxx constants inside mips1-specific code.
mips/mips/locore_r4000.S:
Use MIPS3_PG_xxx constants inside mips3-specific code.
mips/mips/locore.S:
Use MIPS1_PG_xxx constants inside mips3-specific code.
Use MIPS1_PG_xxx constants inside mips1-specific code.
(Needs more work!)
mips/mips/{pmap.c,vm_machdep.c,trap.c}, pmax/pmax/machdep.c:
Use MIPS3_PG_xxx constants inside mips3-specific functions,
and MIPS1_PG_XXX inside mips1-specific code.
Otherwise, use mips_pg_XXX_bit() macros where they apply,
and use "if (CPUISMIPS3) { ... } else {... }" where they don't.
mips/mips/mips_machdep.c:
Import Michael Hitch's fixes from the pmax locore-init code
into mips_vector_init().
pmax/pmax/machdep.c:
Use generic mips_vector_init() locore vector-init function.
Move mips-specific pmap definitions (PMAP_PREFER for mips3, declaratin
of pmap_bootstrap() for the system-specific machdep.c) from
arch/pmax/include/pmap.h to arch/mips/include/pmap.h.
* Move declaration of locore communcation variables (CPU family,
cache sizes, etc) to mips/include/locore.h. Delete from
pmax/include/cpu.h and older versions from pica/include/cpu.h.
* Move definitions of CLKF_BASEPRI, CLKF_USERMODE to mips/include/cpu.
* Delete duplicate definitions in pica/include/cpu.h, pmax/include/cpu.h.
Change pmax/include/psl.h to just do #include <mips/psl.h>.
pmax/include/psl.h would go away completely if it wasn't stil required
by compat/common/kern_exit_43.c.
recovering from a possible race condition in sii_intr, read the active
target from the destat register, and set the softc state pointer
`state' appropriately. (This warning is in a block that prints a
warning message, and the warning message has _never_ been seen. The
bug is probably innocuous.)
Also addresses the `more thought needed' in the log message for rev. 1.12.