Add lk_bell() to ring keyboard audible bell (for rcons bell).
Add LK_KEY_CLICK option to reset keyboard and enable keyclick.
(off by default since theres no way to control it from userland yet).
+ Don't use our own "clean" and "depend" targets
+ "make depend" works
+ Only include each include path once on compile lines
+ Clean up include file names
+ Don't build a separate libdrive.a, just specify driver source files
+ Use "make print-objdir" instead of old "printf ... | make -f-"
+ Remove more unnecessary targets, variables and other cruft
Still builds identical bootblocks to 1.3.3 with gcc, still too large
with egcs.
dec_boot.h, dec_exec.h & dec_prom.h were copied via respository
copy to sys/arch/pmax/stand/libsa.
+ dependency on libsa works
+ set and use BINDIR/BINMODE
+ don't pull in sys/lib/lib{sa,kern}/Makefile.inc (``make clean''
doesn't make empty lib/{sa,kern} directories in each
directory/obj dir).
+ remove unnecessary targets, variables and other cruft
+ wrap lines at 80 chars
Re-ordering SRCS line in libsa/Makefile to a more logical sequence
(alphabetical by source dir) results in a libsa.a with archive members
in a different order, and a resultant bootrz that differs from the 1.3.3
bootrz. Untested as yet, so left in but commented out.
Also, _don't_ install the bootblocks (as per intent of previous commit)
or our own small libsa(!).
2.7.2.2-myc2 (and produces _identical_ bootblocks with the 1.3.3
bootblocks which weren't in the tree), but egcs 1.1.1 builds a ufs.o
that's about a 100 bytes too big, and it busts the 7.5k we've got for
bootrz.
Still needs cleanup - the Makefiles could be better/cleaner, and doesn't
install yet (because of above problem). At least there's something to
work with now.
Note that we have our own versions of a lot of the sys/lib/libsa
routines which are less functional/smaller.
minor of libc and the major of libutil). For little-endian architectures
merge the bnswap() assembly versions with nto* and hton* using symbols
aliasing. Use symbol renaming for the bswap function in this case to avoid
namespace pollution.
Declare bswap* in machine/bswap.h, not machine/endian.h. For little-endian
machines, common code for inline macros go in machine/byte_swap.h
Sync libkern with libc.
Adjust #include in kernel sources for machine/bswap.h.
console setup and driver attach-time.
* Dont wire potential console lines as CLOCAL; use softcar.
* #ifdef tests on #ifdef NRASTERCONSOLE, not HAVE_RCONS.
* use dc_coldparam() in dc_tty_init(), dc_kbd_init().
* use dc_tty_init() to set line for serial console in dc_consinit()
* only call dc_mouse_init() if the console major-number is RCONSDEV.
- returned EOPNOTSUPP rather than -1.
- no check for negative offset.
many of these fix potential security problems in these drivers.
XXX XXX XXX
the d_mmap cdev routine should be changed to have a prototype like:
paddr_t (*d_mmap) __P((dev_t, off_t, int));
by someone!
Use scc_tty_init() in scc_consinit(). Declare scc_consinit() in sccvar.h.
* Remove last vestige of special-case console handling in sccparam() code.
* Call scc_consinit() from findcons scc_serial() console-setup.
Dont PROM for scc serial console at all.
attempt results in the up and down arrows not repeating in the X server.
The keyboard division table is modified to place the Right-Shift keycode
into division 6 along with the Left-Shift and Control. A corresponding
change to the X server lk201 keyboard handler is also required.
This got lost when disk geometry processing was updated.
Also move the CDROM check from rzread() to rzwrite() - it doesn't make
much sense to report a read-only filesystem error when trying to read a
CDROM.
-sys/lib/libkern builds as library per default (as it was documented all
the time)
-ports able to LKM set "KERN_AS=obj" explicitely in their Makefiles
(for now; should depend on actual "option LKM" or -better- functions
included for LKM use should be pulled in by a stub)
-always link libcompat before libkern - libkern stuff can be referred to
by libcompat, but not the other way
struct scsipi_adapter; they were not used.
Add a scsipi_ioctl entry point to struct scsipi_adapter. This will be
used to issue ioctl commands to the host adapters.
Inspired by PR #6090, from Matt Jacob.
Adds (most) support for ARC platform to port-independent mips code.
Some changes (e.g., clean up of overlapping CPU/FPU ids) inspired by
comparison to the OpenBSD 2.1 codebase of Soda's ARC port.
Open issues:
* Still no support for r4600 or mipsIV CPUs with two-way L1 cache.
Code derived from Per Fogelstrom's OpenBSD source doesn't work
on mips3 pmaxes with L2 cache.
* Still some port-specific #ifdefs, for interrupt enable and
pmax L2 cache-size. Needs more thought, but overlaps with
work-in-progress by Tohru and Tsubai on spl()s and related stuff.
initialized yet. Use the base variable, and also use the symbolic symbols
to acdess the registers. Also, the console max_rows is based on the
display height, not the width.
- bump cpu_model[] length as the longest name occupies over 30 characters.
- place machine_arch[] beside machine[] for clearity.
- nuke useless #include directives.
- small scale cleanup in vm_machdep.c
as with user-land programs, include files are installed by each directory
in the tree that has includes to install. (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.) The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change. Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
making performance of bus_dma drivers not completely suck on the DECstation.
XXX R4000 case is still abysmal, because some other data structure
modification is required to deal with the virtually-indexed R4000 cache.
controllers (including SCSI id 7 on the 2100/3100).
- On the pmax (2100,3100) set the host SCSI id to 6.
- Move disk and tape config for the second ASC controller from the GENERIC
config file to scsi.pmax so all configurations can use the second
controller.
* 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.