- Interrupt service routines now take a pointer to
the device's softc, rather than a unit number.
- Interrupt handling code in locore.s condensed. Only
remaining "special" handlers are lev0 (spurious),
lev1 (HIL; don't ask), lev6 (clock), and lev7 (NMI).
Only remaining hard-coded device driver reference in
locore is HIL. (clock doesn't count...)
- "dcafastservice" eliminated. DCA driver has new mechanism
to guarantee prompt interrupt service at any ipl (not
just level 5).
- Interrupt code pulled out of autoconf.c and machdep.c and
placed in new file, isr.c
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.
YAY! No more need for dcafastservice!
HIL: squish instances of "(void) splhil()" and "(void) spl0();".
The dtop driver no longer requires the "needs-count" flag.
Fix a panic in boot-time interrupt establish. The "generic" pmax
interrupt-establish code assumes that all interrupt args are new-config
device structs accessed via a struct cfdriver. Make it so.
number before attempting to load the Macintosh partition info. If the
first 32-bits of block 0 contain the BSD disklable magic number, treat
it as a NetBSD disklabel.
When loading the Macintosh partition map, check the first 32 partitions
for the root, usr, and swap partitions--instead of the first 8. Still
only allows 8 total partitions for NetBSD use.
the MI 5380 driver. It has been verified to work on the IIx, IIsi,
and IIci only, but should work with any Macintosh 5380-based SCSI
controller.
- This driver is _not_ intended to be a general purpose replacement
for the `ncrscsi' driver. It is an alternative for those having
problems with that driver.
- Disconnect/reselect doesn't (yet) work, so don't expect SCSI tape
or magneto-optical disk drives to function properly.
rather than SEEKCOMPLETE before retrying the operation. If implied seeks
are being used, the state is set to DOIO (no change). This is why I
couldn't reproduce the disk_unbusy() panic on my SS2; it uses implied
seeks. Patch from John F. Woods <jfw@jfwhome.funhouse.com>
retrying the operation. Fixes disk_unbusy() imbalance and really seems
like the right thing to do in case it was the seek that failed. Takes
care of PR #1985. Patch from John F. Woods <jfw@jfwhome.funhouse.com>
intent for the value of the C_REL constant was 0xc0. Testing has turned
up no adverse effect on tape or disk devices, and in fact this change
apparently makes my 9145 tape work as expected. (!) Closes PRs 1874 and
1971.
- moved disk_busy() call from xdstrategy() to xdc_startbuf()
[prevents disk_unbusy panic when disk is loaded (if no
free IOPBs, xdstrategy() would queue the buffer for pickup
by xdcintr() but xdcintr() would never call disk_busy().
xdc_startbuf() is a better place since all bufs are routed
through here] problem detected by girish@dworkin.wustl.edu,
diagnosed and corrected by me.
- move disk_unbusy() call in xdc_remove_iorq() before the call to
XDC_FREE() [don't want to access a data structure that was just put
on a free list]
[prevents disk_unbusy panic when disk is loaded (if no
free IOPBs, xdstrategy() would queue the buffer for pickup
by xdcintr() but xdcintr() would never call disk_busy().
xdc_startbuf() is a better place since all bufs are routed
through here] problem detected by girish@dworkin.wustl.edu,
diagnosed and corrected by me.
- move disk_unbusy() call in xdc_remove_iorq() before the call to
XDC_FREE() [don't want to access a data structure that was just put
on a free list]
code. Substantially the same code tested on a 5k/240. Should work on a
5k/1xx. Not tested on a MAXINE, where the single unit may break the
PROM-channel-number to driver-channel-number mapping.
parameter parameters shadowing locals. Replace vmapbuf() and vunmapbuf()
with the Alpha-port versions, which are cleaner (use round_page(),
trunc_page(), etc.)
to be passed as well as the fp frame.
FPE<->kernel glue code now builds a trapframe structure for passing in
and out of the post instruction emulation callback.
Signal delivery during FP emulation now works correctly.
* add a new enum decstation_intr_t to trap.c, naming each instrumented
interrupt symbolically, and used to index into intrcnt[]. Change the
model-specific interrupt handlers to use the decstation_intr_t when
updating interrupt counters.
* add instrumentation to the kmin and maxine interrupt handlers.
* fix a bug that counted each hardclock interrupts on the kn02 twice.
The hardcoded mapping from locore names to units is gross; but these
counters will hopefully be useful in identifying interrupt hot-spots
and PPP problems on the 3MIN.
on the size of MI data structures that come before it in the softc.
Chip will not function properly if alignment is wrong. (as per OpenBSD)
Detected and fixed by: Chuck Cranor <chuck@ccrc.wustl.edu>
and Michael L Hitch <osymh@gemini.oscs.montana.edu>
Several had: _MACHINE_ICU_H_ -> _NS32K_ICU_H_
cpu.h * Removed definition of cpu_swapout.
* Added definition of cpu_wait.
frame.h * added struct switchframe
icu.h * tweeked ints_off
param.h * More derived constants.
* Alot of things taken over from i386/include/param.h.
pcb.h * Removed pcb_flags (was unused) and pcb_pl.
The current priority level is now stored
in the switch frame by cpu_switch.
pmap.h * Taken over from i386/include/pmap.h.
psl.h * Add USERMODE definition
trap.h * T_INTERRUPT -> T_AST
types.h * Remove __FORK_BRAINDAMAGE
vmparam.h * Taken over from i386/include/vmparam.h.
Added definition of INTSTACK.
clock.c * Removed definition of DELAY.
intr.c * Removed an unneeded $Id:....$
locore.s * Moved some of the low level initialization
code to machdep.c.
* Defined proc_trampoline.
* Changed sigcode to pass scp to SYS_sigreturn.
* Changed copyin/copyout/fu*/su* to take advantage
of the ns32532's dual address instructions.
* Recoded copyinstr/copyoutstr/copystr in assembler.
* Added a new and faster version of bzero.
This makes bzero.s unnecessary.
* Defined suswintr to make profiling work.
* Recoded cpu_switch modelled after the i386
version of cpu_switch.
* Added support for lazy fpu state restore to
cpu_switch.
* Recoded trap handling code to be more readable.
* Added experimental code for single cacheline
invalidation.
machdep.c * Copied over cpu_startup from i386/i386/machdep.c.
* Changed sys_sigreturn to take advantage of the
argument passed by the trampoline code.
* Changed boot to call doshutdownhooks and to store
machine state in case of a panic.
* Changed setregs to clear the fpu registers.
* Recoded low_level_init. It's now called init532.
* cpu_reset: New function, resets the machine.
trap.c * Pulled over from i386/i386/trap.c.
* Added support for lazy saved/restored fpu state.
vm_machdep.c * Removed kstack double mapping by pulling over alot
of code from i386/i386/vm_machdep.c.
* Added support for lazy saved/restored fpu state.
* Moved freeing of process resources from cpu_wait
to cpu_exit.
* Pulled over cpu_coredump, pagemove, vmapbuf and
vunmapbuf from i386/i386/vm_machdep.c.
pmap.c * Pulled over from i386/i386/pmap.c.
genassym.c * Removed old and unused definitions, added new ones.
sys_machdep.c * Moved sys_sysarch from machdep.c to sys_machdep.c.
process_machdep.c * Changed to work without ktack double mapping.
* Changed to work with lazy saved/restored fpu state.
Rename the ioctl asic register and slot macros from ASIC_<xxx> to
IOASIC_<xxx>, to be compatible with the machine-indpendent names in
sys/dev/tc/ioasicvar.h. The pmax code still uses
sys/arch/pmax/pmax/asic.h, as some of the registers and offsets
defined there are not yet defined in sys/dev/tc/ioasicvar.h.
Rename the ioctl asic base-address pointer from `asic_base' to `ioasic_base'.
independent TC support in sys/dev/tc/tc.c and sys/dev/tc/tcvar.h:
* Change the tc autoconfiguration tables to use a struct tc_attach_args
instead of the ad-hoc structure.
* Change all pmax device drivers to use a `struct confargs' that's
assignment-compatible with sys/dev/tc/tcvar.h `struct tcdev_attach_args'.
Devices that can be present on a TC or as ioctl asic/mainbus builtins
use the same `struct confargs'.
* Eliminate the `BUS_CVTADDR()' macros which the pmax port inherited from
an old, now-obsolete sys/arch/alpha snapshot.
* Update the comments and debugging code in interrupt handlers to
be consistent with the machine-independent TC support.
Other commits that overlap the same source files include: re-enabling
clock-tick interrupts earlier, and counting hardclock ticks for vmstat -i.
independent TC support in sys/dev/tc/tc.c and sys/dev/tc/tcvar.h:
* Change the tc autoconfiguration tables to use a struct tc_attach_args
instead of the ad-hoc structure.
* Change all pmax device drivers to use a `struct confargs' that's
assignment-compatible with sys/dev/tc/tcvar.h `struct tcdev_attach_args'.
Devices that can be present on a TC or as ioctl asic/mainbus builtins
use the same `struct confargs'.
* Eliminate the `BUS_CVTADDR()' macros which the pmax port inherited from
an old, now-obsolete sys/arch/alpha snapshot.
* Update the comments and debugging code in interrupt handlers to
be consistent with the machine-independent TC support.
Other commits that overlap the same source files include: re-enabling
clock-tick interrupts earlier, and counting hardclock ticks for vmstat -i.