* Add new sysctl "machdep.ieee_disable". This can be used to disable the
in kernel ieee trap handler. Then a usermode version of the code can be
used for debugging. Thank's to Ian Dall for this suggestion.
lpt{open,close,write,ioctl} prototypes.
* Remove the cdev_decl(lpt). We get it from machine/conf.h.
* Add and use LPTSOFTC.
* Use level triggered interrupts (seems to work with less spurious interrupts).
* Do not use NLPT. Use lpt_cd.cd_ndevs to get the number of lpt devices.
* ether_ifattach now needs the ethernet address of the device. Supply a
dummy address.
* Include arp.h instead of ether.h.
* Remove softnet prototype. It is in cpu.h now.
* Remove calls to intr_init and intr_establish for softclock and softnet.
This is done in the mainbus attach routine now.
* Remove impintr. This seems to be dead.
* Add natmintr :-)
* Use machine/conf.h not sys/conf.h to get the prototypes for the
scn cdev functions.
* Include <sys/kgdb.h> to get prototypes for kgdb_connect and kgdb_attach.
* Add missing prototypes for some functions.
* Make ddb work before the console was opend. Thank's to Ian Dall
for this change. His comment:
Also, ddb doesn't work if a break is set before the console
is opened. That is because DTR and RTS are not asserted. It
would probably work if the console is wired to ingnore DTR
or RTS. The change below is probably not very correct.
Proabably the state of DTR and RTS should be saved and DTR
and RTS asserted on the start of a polled serial input and
the saved values restored on exiting polled input
* Remove unused function scn_ei.
* Add prototype for ncr_ready.
* Add ncr_wait_not_req function from Ian Dall:
The ncr_wait_not_req business is to avoid a potential race.
When the pseudo DMA finishes, the target may not have
lowered REQ yet. If we just charge ahead, we eventually test
for phase when REQ is high. However, if REQ has not yet gone
low for the last byte transferred, this will be the wrong
phase. This is taken from the dp8490 application notes. The
last ACK is not deasserted until the dma is completed.
Deasserting the last ACK should be delayed until the last
REQ is deasserted. I am not sure if there are ever devices
this slow, but I believe the code is "more correct".
* Add missing prototypes.
* Move over softnet() from intr.c.
* Establish softnet and softclock interrupts in init532.
* Misc cleanup to get it compiled with the new CWARNFLAGS.
of the ICU in clock_attach.
* Pull over (and reformat) rtc_rw from mem.c.
* Convert the rtc driver to use /sys/dev/clock_subr.c (partially by
stealing code from the sun3 port).
Some of the stuff (e.g., rarpd, bootpd, dhcpd etc., libsa) still will
only support Ethernet. Tcpdump itself should be ok, but libpcap needs
lot of work.
For the detailed change history, look at the commit log entries for
the is-newarp branch.
* Uses Counter/Timer dynamicly for rate generation; You can
have both 19200 and 38400 on one duart, and 57600 on another!
* Improved scninfo program to dump driver internal information.
implemented counters for parity err, framing err, break
* Delays changes until transmitter idle to avoid "glitches"
* Cleaned up scn_softc member names
* Untested support for sc26c92 (I don't yet have any to test with);
+ Will use alternate rate tables (include 115.2kbps and 230.4kbps)
+ Will raise FIFO rx interrupt threshold and watchdog timer
at higher rates.
+ Unknown (to me) how fast pc532 MC145406 driver chips can go
NOTE: It seems like it may be a BAD idea to use a sc26c92 as
a console port for now; the PROM doesn't know to reset the
chip back to scn2692 mode!!
interrupt handlers. Due to this
- DIAGNOSTIC kernels would panic
- check_sir would run with the interrupt registered last blocked
Credits for finding and fixing this go to Ian Dall.
* Define RECOVER to something faster.
* Check for a valid softc in scnsoft. When there is
a "hole" (e.g. you have scn0,scn1, scn4, scn5) the
old code would panic. Thank's to Phil Budne for
finding and fixing this bug.
* Add (commented out) type and asmtype commands. asmtype will
be used to define the gcc constraint used to emit constants
and type will be used to define the type the constant should
get casted to before passing it to printf.
* Added LKM, PFIL_HOOKS and NFSSERVER options.
* Added four ccd devices.
* Removed PLIP and NO_INLINE_SPLX options.
* Removed MFS, MSDOSFS, CD9660, FDESK, KERNFS and PROCFS filesystems
because they all are lkmable.
Eliminate obsolete global kernel variable "struct timezone tz"
Add RTC_OFFSET option
Add global kernel variable rtc_offset, which is initialized by
RTC_OFFSET at kernel compile time.
on i386, x68k, mac68k, pc532 and arm32, RTC_OFFSET indicates how many
minutes west (east) of GMT the hardware RTC runs. Defaults to 0.
Places where tz variable was used to indicate this in the past have
been replaced with rtc_offset.
Add sysctl interface to rtc_offset.
Kill obsolete DST_* macros in sys/time.h
gettimeofday now always returns zeroed timezone if zone is requested.
settimeofday now ignores and logs attempts to set non-existant kernel
timezone.
* Add IPL_HIGH. Alias IPL_HIGH to IPL_RTTY
* Define splrtty (used by the scn driver).
* Add iv_level and iv_mask to struct iv. These define the IPL at
which the handler should run.
* intr_establish now takes *two* ipls. One at which the handler should run,
and one in which the interrupt should get blocked.
* Define SCN_RING_HIWAT and add sc_rbhiwat to scn_softc. When the
ringbuffer gets full up to this mark, rts gets asserted (Ian Dall).
* Add sc_rx_blocked to scn_softc. This is used to tell scnsoft that
rxinterrupts are blocked (Ian Dall).
* intr_establish now takes *two* ipls. One at which the handler should run,
and one in which the interrupt should get blocked.
All the following changes were provided by Ian Dall:
* Remove SCN_HSOFT. Now that the pc532's software interrupt system is running
from int14, this won't work anymore.
* Add code to detect uart type (SCN2681, SCC2692 or SCC26C92).
* Cleanup my RECOVER mess. Thank's to Ian Dall for reading the datasheet
and removing all the unnecessary RECOVERs.
* Cleanup scnrxintr.
* Implement scnhiwflow.
* Do not use automatic RTS. This and scnhiflow and some changes to the
interrupt system suggested by Ian fix the scn overrun problem at 57600
baud.
* intr_establish now takes *two* ipls. One at which the handler should run,
and one in which the interrupt should get blocked.
* Make transfersize configurable for input and output. Default the input
transfersize to 128 bytes. That way interrupts won't be disabled for more
then about 128us-256us for slow targets. This is necessary to prevent scn
fifo overruns. Cleanup the pdma code. Thank's to Ian Dall for these
changes.
* Make it work on 30mhz machines.
* Configure MSDOSFS, CD9660, KERNFS, NFSCLIENT and INET.
* Configure SCSI-cds, slip and ppp.
* Update for mi ramdisk driver.
* Initialize iv_level for all interrupts.
* Protect the call to the sir-handler with splraise.
* intr_establish now takes *two* ipls. One at which the handler should run,
and one in which the interrupt should get blocked.
* Compute iv_mask for all interrupts in intr_establish.
on indirect-config busses a (permanent) softc that they could share
between 'match' and 'attach' routines:
Define __BROKEN_INDIRECT_CONFIG so that old autoconfiguration
interfaces are used, until drivers are converted to use the new
interfaces (actually, converted back to use the _older_ interfaces)
which prohibit indirect configuration devices from receiving a softc
in their match routine that they can share with their attach routine.
Lets users over-ride with makeoptions COPTS="..." in kernel config files.
Leave `mandatory' flags (like -msoft-float which on m68k enforces no
FP in kernel) in CFLAGS.
* Support for the new softint mechanism. Softints are now requested by
triggering an unused ICU hardware interrupt. The idea for this was
contributed by Phil Budne.
* Real probe code added.
* Duart info is now allocated only for devices that are present.
* Added IO-Recovery delays for 30mhz systems.
* Removed a few potential NULL-pointer references.
* Only FFS is needed for the install kernel.
* Configure the console to 8N1 (that's what the pc532's rom monitor uses).
* The install kernel doesn't need to know about CDROM drives.
* Use the new mi ramdisk.
* New patchable variable maxphysmem to limit physical memory.
That's useful to simulate small machines for testing install
kernels.
* Make debugging crashdumps with gdb -k work.
* microtime is moved to clock.c.
* Reserve memory for symbol table when ddb is configured.
* Move checks for RB_KDB into consinit.
* Fix a typo in delay().
* Disable generation of profiling prologue for proc_trampoline,
sigcode, idle, handle_trap, flush_icache, svc and interrupt.
* A few tweaks to make kgdb and ddb work nicer.
* Support for bpf added.
* Don't duplicate code, use ether_ifattach instead.
* Recode plipreceive and pliptransmit in assembler.
This improves performance from 40 kbyte/s to 50 kbyte/s
between a 30mhz pc532 and a 25mhz i386.
multi-channel driver), or to SCSI_CHANNEL_ONLY_ONE if a
single-channel driver.
(2) use scsiprint() rather than a locally-defined autoconfig print
function, and kill any locally-defined print function.
a char *, because that's what was really intended, and because
if the print function modifies the string, various things could become
unhappy (so the string should _not_ be modified).
* Make S expand to an absolute path at compile time.
* Use `-S' rather than `-x' to remove debugging symbols.
* Garbage collect unused variables.
* Reverse a handful of port-specific changes that do not correspond to
the common build model and are not needed.
a boot string for firmware that can do this, such as the SPARC and
the sun3 models. It is currently silently ignored on all other
hardware now, however. The MD function "boot()" has been changed to
also take a char *.
device and a printable "external name" (name + unit number), thus eliminating
if_name and if_unit. Updated interface to (*if_watchdog)() and (*if_start)()
to take a struct ifnet *, rather than a unit number.
- split softc size and match/attach out from cfdriver into
a new struct cfattach.
- new "attach" directive for files.*. May specify the name of
the cfattach structure, so that devices may be easily attached
to parents with different autoconfiguration semantics.
execpt without quotes. meant to be __CONCAT()ted for easy #includes
of machine-dependent headers for MI code (e.g. for the MI ISA/EISA/PCI/TC
bus code).
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.
- New metrics handling. Metrics are now kept in the new
`struct disk'. Busy time is now stored as a timeval, and
transfer count in bytes.
- Storage for disklabels is now dynamically allocated, so that
the size of the disk structure is not machine-dependent.
- Several new functions for attaching and detaching disks, and
handling metrics calculation.
Old-style instrumentation is still supported in drivers that did it before.
However, old-style instrumentation is being deprecated, and will go away
once the userland utilities are updated for the new framework.
For usage and architectural details, see the forthcoming disk(9) manual
page.