Commit Graph

797 Commits

Author SHA1 Message Date
thorpej 365324ec10 - Convert these drivers to new-style autoconfiguration. Old-style
configuration is no longer supported.
- Use a much more obvious HP-IB job queueing scheme.
1997-01-30 09:06:51 +00:00
thorpej d49c71cb8a - Use indicies, rather than pointer arithmetic, to track DMA chain
segments.
- Use a much more obvious DMA job queueing scheme.
- Fixup some debugging code.
1997-01-30 09:04:33 +00:00
thorpej 7bfe4e11c4 Garbage-collect old-style autoconfiguration glue. 1997-01-30 09:00:21 +00:00
thorpej 743140bb51 Garbage-collect old-style autoconfiguration code. Adopt boot device
detection code to new-style autoconfiguration.
1997-01-30 08:59:29 +00:00
hpeyerl 56542666eb fix an *old* booboo where the dma queue wasn't being set in unexpected
case.  Found, fixed, and dictated by jason. (thorpe)
1997-01-26 18:04:10 +00:00
hpeyerl 8cc55c80b6 ::->: :-) 1997-01-26 17:55:52 +00:00
scottr 1085290516 Remove obsolete timezone specification 1997-01-20 16:55:32 +00:00
thorpej 112e338d6b Fix botch in PA calculation for DIO-II devices. Bug noticed and fix
provided by Klaus Klein <kleink@layla.inka.de>, PR #3097.
1997-01-12 21:27:26 +00:00
scottr cc061d0a98 Normally, iteon() returns an int. If NITE == 0, define iteon() to be 0.
Closes PR 3091.
1997-01-10 00:07:27 +00:00
scottr b917ce3294 Bracket kernel structs with #ifdef _KERNEL so that bootblocks will once
again build.
1997-01-09 01:07:59 +00:00
mrg c71a371532 use pseudo-device ipfilter, not ipl. 1997-01-07 11:35:01 +00:00
thorpej c56e780e4f Bring some sanity into my frazzled existence:
- Always ensure that RAW_PART ("c") can be opened.
- Disallow unused or non-existent partitions from being opened.
- Don't do bounds checking or partition translation on RAW_PART.
This is consistent with other disk drivers in the NetBSD source tree,
and fixes a condition where the user could not fix a corrupted disklabel
due to a bogus offset for partition "c".
1997-01-07 09:29:30 +00:00
thorpej 32dda9a886 Kludge newvers rule, so that it works with old and new config. 1997-01-06 08:49:30 +00:00
thorpej c26a11ab21 Add PFIL_HOOKS and ipl pseudo-device. 1997-01-06 08:48:36 +00:00
thorpej 7e3b804ce5 Add ipl pseudo-device. 1997-01-06 08:47:43 +00:00
thorpej 246654663f Add "ipl" device at cdev major 18. 1997-01-05 21:29:49 +00:00
thorpej f77141521c Oops, build dio.o in the old config case, too. Pointed out by
Dave Carrel <carrel@cisco.com>.
1997-01-05 04:41:48 +00:00
thorpej e2c6ed87ec Fix several semantic bugs:
- Always allow RAW_PART to be opened, regardless of the partition table.
- Never do partition translation on RAW_PART; it's always offset 0.
- Always make sure the disklabel is read from RAW_PART.
- Make *strategy() return values consistent.

This fixes a condition where a bogus partition table could be written
to the disk from SYS_INST, and the user had no way to rewrite with
a correct partition table, since RAW_PART would be invalid.
1996-12-21 21:34:40 +00:00
thorpej 0d58626f72 This wasn't just a spelling error... I invented a whole new word! 1996-12-21 21:23:43 +00:00
thorpej c0c07cd30e Always use `SLOWSCSI'. Some devices need a long delay between phase
changes, apparently.  This is reported to work around some odd failures
people were seeing during first-time installation onto a SCSI disk.
1996-12-17 09:21:42 +00:00
thorpej 7373a43fcf Generate initial copies of these files. 1996-12-17 09:01:24 +00:00
thorpej 838edf78fd Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there.  SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option.  If that
option is not present, an old config kernel will be built.  Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
1996-12-17 08:40:56 +00:00
thorpej 7b4ca2ebe5 Kill __BROKEN_INDIRECT_CONFIG 1996-12-17 08:11:50 +00:00
thorpej 9a8786f719 Clean up cpu_startup() a bit:
- move data structure allocation into a new function, allocsys(), like
  the i386 port.
- garbage-collect the BUFFERS_UNMANAGED code.
1996-12-11 16:49:23 +00:00
thorpej f82a494e0f Fix typo in comment. 1996-12-11 09:10:38 +00:00
thorpej 66cbbf68ff Copyright assigned to The NetBSD Foundation. 1996-12-09 17:35:24 +00:00
thorpej 5dc95f5908 Garbage-collect DMAINTLVL; it's not needed any more. 1996-12-09 06:18:13 +00:00
thorpej 49471d5fd5 Sync with reality. 1996-12-09 03:56:01 +00:00
thorpej 01667974d0 isrlink() now returns a cookie. We're not interested in the cookie, so
cast to (void).

Call dmacomputeipl() after we've hooked up our interrupt handler.
1996-12-09 03:16:26 +00:00
thorpej 648a1b19ae isrlink() now returns a cookie. We're not interested in the cookie, so
cast to (void).
1996-12-09 03:14:06 +00:00
thorpej 0d6571ba4d Defer hooking up the DMA controller interrupt. Add a new funciton,
dmacomputeipl(), which is called by drivers which use DMA once they've
hooked up their interrupts.  This new function computes the appropriate
ipl to use for the DMA controller and (re-)establishes it's interrupt.
1996-12-09 03:09:51 +00:00
thorpej 75a37ecc60 Print the interrupt levels for bio, net, and tty computed during
autoconfiguration.
1996-12-09 03:07:11 +00:00
thorpej ce7ecde8a3 Dynamically compute the PSL value for spl{bio,net,tty,imp}() calls. 1996-12-09 03:04:46 +00:00
thorpej c36215249a Add EXEC_SCRIPT (I don't even want to know how I forgot it before...) 1996-12-09 01:53:30 +00:00
thorpej b5c8aff18b In setroot(), fix mishandling of the `config netbsd root on nfs' case
that caused a NULL pointer dereference.
1996-12-07 19:00:46 +00:00
cgd 96acdadef7 First step inn removing config_scan() and the hacks that gave devices
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.
1996-12-05 00:13:47 +00:00
jonathan 4c1d96de78 * Replace explicit -O2 in CFLAGS with COPTS macro. Default COPTS?= -O2.
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.
1996-12-01 06:12:25 +00:00
cgd 8a3333b2a9 Fix an inconsistency that came in with Lite: setrq() was renamed to
setrunqueue(), but remrq() was never renamed.  Rename remrq() to
remrunqueue().
1996-11-06 20:19:19 +00:00
hpeyerl 05fe4c93dc Force some drive mappings for reasons I won't get into. 1996-10-21 16:43:05 +00:00
thorpej 43ba106ec2 Remove declaration for now-gone function. 1996-10-20 23:47:40 +00:00
thorpej af8d8d2a56 Arrange this file into sections (configure(), root device goo, console goo,
old-config goo).  Place old-config goo at the end so that it's easy to
#ifdef our or delete (muahahah!).

Garbage collect a couple of unused functions.
1996-10-20 23:46:06 +00:00
thorpej bbdd41a2a7 Back out last change, and add a comment about what should happen.
(*grumble* will teach me to do a `make clean' next time.)
1996-10-20 23:23:28 +00:00
thorpej 7133ecf2ca Don't need to mark 0-NBPG as VM_PROT_NONE in kernel_map anymore; the
first entry is now properly setup in kmem_init().
1996-10-19 21:11:32 +00:00
thorpej 7958973110 Set VM_MIN_KERNEL_ADDRESS to NBPG. This is a better way of getting
the kernel_map to treat page 0 properly.
1996-10-19 21:07:42 +00:00
thorpej cf9b36ab1d Set up a kernel_map entry for the text segment with protection of
VM_PROT_READ|VM_PROT_EXECUTE.  The previous default (VM_PROT_ALL)
would cause the following scenario:
	- someone attempts to write kernel text (my test was writing
	  to an offset of /dev/kmem which was known to be in the text
	  segment, while in single-user mode).
	- enter trap() with MMU fault (because of RO pte).
	- trap() calls vm_fault(), which looks up vm_map_entry for
	  fauling address.
	- vm_fault interprets write fault and VM_PROT_WRITE (in VM_PROT_ALL)
	  as COW; new page allocated, data copied to new page, new page
	  mapped in at trunc_page(<faulting va>).
	- wow, look at the fireworks!
Fixes two potential symptoms:
	- kernacc() returns TRUE when checking for permission to write
	  an offset in kernel text, which is bogus, since the text has
	  been mapped RO by pmap_bootstrap().
	- Handling of a stray pointer that attempted to scribble into
	  kernel text would not be executed properly.
1996-10-19 08:51:33 +00:00
thorpej 6126eea479 Tell the `upper half' of the VM system that page 0 isn't mapped. If we
don't do this, kernacc() will bogusly return TRUE for page 0, causing a
NULL pointer dereference in uiomove() when reading /dev/kmem.

Thanks to Scott Reynolds for noticing the problem.
1996-10-18 08:57:14 +00:00
thorpej 150c33e60b Use ${INSTALL}. 1996-10-18 05:55:26 +00:00
thorpej 9f1ba5739f Don't need "options GENERIC" anymore. 1996-10-15 22:01:53 +00:00
thorpej 608efe383e Use the hp300 version of db_memrw.c (forgot to commit this change the
other day).
1996-10-15 22:00:31 +00:00
thorpej d2daeab10d Garbage collect the "kernel jump to zero" stuff. VA 0 is now invalid,
so the kernel will fault if the PC gets trashed like that.
1996-10-14 22:11:16 +00:00
thorpej ac35089824 Couple of small changes:
- Fix up usage of MBD_ISPID().
- Ensure that we never deal with a NULL proc, and if our proc has
  no pcb, punt.  Suggested by Gordon Ross.
- Eliminate some redundant NULL pointer checks in the T_MMUFLT cases;
  proc0.p_addr is now initialized early, and we make a single test
  for sanity at the top of trap() now.
1996-10-14 20:06:31 +00:00
thorpej a72edba413 Couple more small changes:
- Initialize proc0.p_addr just after setting up the kernel stack, to avoid
  getting NULL pointers in trap().  Change suggested by Gordon Ross.
- Panic if main() returns.
- Tidy up a couple of comments.
1996-10-14 20:02:48 +00:00
thorpej ffc4c833ea Be careful not to deref bad pointers in the MMU fault handler! (yow!) 1996-10-14 08:07:23 +00:00
thorpej 7744dc270c Couple of small changes to how kernel is mapped:
- kernel text is now always read-only.
- page 0 is invalid.
1996-10-14 08:05:37 +00:00
thorpej 4fa7362d31 Add a db_memrw.c that understands how to write to read-only kernel text
(remaps page read/write/cache-inhibit, does write, restores previous
mapping).  Kernel text no longer needs to be read/write with DDB/KGDB
is in the kernel.

Based on a similar module written for the Sun3 port by Gordon Ross,
and modified somewhat by me.
1996-10-14 08:02:27 +00:00
thorpej 5b66e34d14 A few small changes:
- Offset kernel text one page.  Stash the PA of this offset page for
  use later.
- Add a few comments.
- Free up some registers earlier in the initialization process.
- Use a `prototc' to set the Translation Control register, rather
  than relying on a2 pointing just past the MMU trampoline in the
  high page.  (Suggested by Charles Hannum.)
- Set VBR to the kernel vector table just before turning on the MMU.
- Just before rebooting, set VBR to 0, which is what the BOOTROM expects
  it to be.
1996-10-14 07:58:54 +00:00
thorpej 27f386f5b2 Garbage collect some now unneeded code, and declare the punit device
driver entry point switch.
1996-10-14 07:34:48 +00:00
thorpej 415248a4f2 Move the machdep_start() code into machdep.c. No need for different
versions of this function anymore, now that we have a sane kernel setroot().
1996-10-14 07:33:43 +00:00
thorpej 18c2b0460a Garbage collect some hackish code that was needed when we had a lame
kernel setroot().  The device type for network boot is set like any
other device now.  Also, call the punit entry point for device drivers
to properly set `bootdev'.
1996-10-14 07:31:47 +00:00
thorpej 9ff0348a49 Implement ctpunit(), a "set physical unit" entry point. 1996-10-14 07:29:57 +00:00
thorpej 9d51a5dcf7 Add a standalone driver entry point that sets the physical unit (HP-IB's
equivalent of a LUN) in `bootdev'.  This is needed to properly detect the
boot device if booted from the tape unit of an HP-IB disk/tape combo.
1996-10-14 07:29:15 +00:00
thorpej 84da57f13b Clean up the code that sets `bootdev' based on information provided
by the BOOTROM.  Also, give network devices the attention they deserve.
1996-10-14 07:26:06 +00:00
thorpej 23640d012f New root device detect/set code, lifted mostly from NetBSD/alpha.
The "options GENERIC" entry in kernel config files is not longer necessary
for "swap generic" kernels.  Uses new config constructs which work with
some glue in an old config environment.  This code will support new config
with minimal changes.
1996-10-14 07:20:26 +00:00
thorpej 8acf9f0215 Set the device class on non-dull devices. This is a transitional thing. 1996-10-14 07:14:11 +00:00
thorpej 7d13691de1 Add some new config glue to the legacy hp300 device structures. This is
a transitional thing.
1996-10-14 07:11:50 +00:00
thorpej 01d74572dd Default the HIL keyboard to "US ASCII". This should fix a bug where
an unrecognized keyboard produced garbage on keypresses in the kernel,
but worked in the boot program (which has this default).  The bug is
that the keymap pointers are unitialized.
1996-10-14 07:09:41 +00:00
thorpej 7ee4744ed2 Need to include <sys/exec.h>. 1996-10-14 06:51:50 +00:00
christos ad67e04154 backout previous kprintf change 1996-10-13 16:50:51 +00:00
christos 30b3cc3d09 backout previous kprintf changes 1996-10-13 03:14:05 +00:00
christos 60dd5ceebe printf -> kprintf, sprintf -> ksprintf 1996-10-11 00:06:28 +00:00
cgd e36e19cf1e repoint at shared aout_machdep.h, not exec.h 1996-10-08 13:07:26 +00:00
cgd 472889f8e4 moved to aout_machdep.h (via repository copy) 1996-10-08 12:57:37 +00:00
thorpej eeef0d1784 Prototypes for functions in locore.s and machdep.c (oops, forgot to
check this in the other day...)
1996-10-07 06:29:30 +00:00
thorpej 24d2e8ec5f Sanity sweep. 1996-10-07 04:45:41 +00:00
thorpej a2f9031d2f Add support for copying the miniroot from HP-IB cartridge tape. 1996-10-07 04:45:10 +00:00
thorpej bc504916f3 Garbage-collect some sun3-specific stuff, add some debugging code,
and KNF.
1996-10-06 19:07:53 +00:00
thorpej 61a0ffca58 Fixup (unused) netstrategy() routine's calling convention (just returns
EIO).  Garbage collect unused netioctl() - conf.c redirects netioctl()
to noioctl().
1996-10-06 19:07:00 +00:00
thorpej a3c29be5e0 Fixup ctstrategy() calling convention. The standalone ct driver
works again.
1996-10-06 19:05:27 +00:00
mycroft 6ea58d5fae Serial console changes:
* Enable FIFO with trigger level 1.
* Set DTR and RTS so terminals are happy.
* Do not set IEN.
1996-10-06 01:42:45 +00:00
thorpej 67cd067f25 Nuke __BDEVSW_DUMP_OLD_TYPE. 1996-10-06 00:15:31 +00:00
thorpej 39cbdb7e9f Fix kernel crash dumps. Still uses the old format for now. 1996-10-06 00:14:12 +00:00
thorpej d01962702f General cleanup:
- make a prototyping sweep
	- do some garbage collection
	- always print the status of enabling memory parity checking
Still some more to do.
1996-10-05 09:22:47 +00:00
thorpej 84b3384afb Check for internal HP-IB in SYSFLAG much earlier (i.e. before the MMU
is turned on).
1996-10-05 09:19:58 +00:00
thorpej f52b60c3a0 Prototype ledcontrol(). 1996-10-05 09:18:22 +00:00
thorpej 2ec75a3c3c Cast a volatile pointer to caddr_t for a call to badbaddr(). 1996-10-05 09:17:38 +00:00
thorpej a6a1f78d0c Handle kernel trace traps and breakpoints like the Sun3 port:
- Only pass user trace traps and breakpoints on to trap().
	  Gets rid of some hair in the trace/breakpoint trap cases.
	- Before entering the debugger, switch to a temporary
	  stack so that the debugger can alter the stack pointer.
	- Add glue for KGDB (still not complete).
Some other minor cleanup:
	- Protect against some bad pointer derefs.
	- Be more a little more verbose when a fatal trap
	  occurs to aid debugging.
1996-10-05 07:24:10 +00:00
thorpej 8499e0131e Handle kernel trace traps and breakpoints like the Sun3 port:
- Only pass user trace traps and breakpoints on to trap().
	- Before entering the debugger, switch to a temporary
	  stack so that the debugger can alter the stack pointer.
	- Add glue for KGDB (still not complete).
Clearly mark the MMU enable trampoline code.
1996-10-05 07:16:52 +00:00
thorpej 0ff075f6e7 Define FR_SIZE as sizeof(struct trapframe) 1996-10-05 07:11:44 +00:00
thorpej 2f9a90e967 Don't lower spl before calling main. For now, do it right before
calling hilinit().  Eventually, would like to enable them only after
autoconfiguration is finished.
1996-10-05 07:06:11 +00:00
thorpej 2793eb282e If console is on an ite, make sure the HIL is initialized enough for
the keyboard to work.  Fixes a bug where booting with `-d' worked
only on systems using a serial console.

While I'm here, eliminate some redundancy in the ite console intialization
code.
1996-10-05 05:22:04 +00:00
thorpej 5f728fb6de Garbage-collect some now-unused PANICBUTTON code. 1996-10-04 22:22:15 +00:00
thorpej 608fae21af Clean up handling of non-maskable interrupts. 1996-10-04 22:19:47 +00:00
thorpej 8672fd704e At the end of the delay calibration routine, explcitly reset the timer.
This fixes a critical bug where a clock interrupt would happen sometime
between the call to hp300_calibrate_delay() and when proc0 is initialized.
This ends up dereferencing a bad pointer in itimerdecr(), which scribbles
over the first page of kernel text, specifically vectors 46 and 47 (decimal).

To complicate matters, the way the bug manifested itself was different
depending on whether or not DDB was configured into the kernel.  When
DDB is in the kernel, kernel text is mapped read/write.  When DDB is not
in the kernel, kernel text is mapped read-only.  Note that the kernel
scribble happens early, typically before the console is initialized.

In the non-DDB case, the kernel will hang as soon as it's loaded because
the access causes a fault (before the console is initialized, so you
don't see the trap).

In the DDB case, the access does _not_ cause a fault.  However, the
mechanism used to enter the kernel debugger is to issue a "trap #15".
Conveniently, this is one of the corrupted vectors (47), thus rendering
DDB useless (it actually caused a recursive panic/trap loop).

This _WILL_ be in the first 1.2 official patch.
1996-10-04 08:55:04 +00:00
thorpej 9f287be633 Add EXEC_AOUT to all kernels. 1996-10-03 01:25:32 +00:00
thorpej 0cb6f5925c Correct an old comment; the 318, 319, and 330 _are_ tested (68020 w/ 68851).
(Read: I have a 319 :-)
1996-09-14 20:36:49 +00:00
thorpej 9476dabc1a Correct a somewhat confusing typo in a comment, pointed out by
Scott Reynolds.
1996-09-12 18:54:23 +00:00
thorpej be969d881e Update for poll(2) changes. 1996-09-12 01:22:58 +00:00
thorpej eae3f0bb96 When opening a disk for non-filesystem i/o, make sure we only return
an error condition when an error occurs.

Bug noticed by Terry Lambert <terry@lambert.org>.
1996-09-11 18:05:02 +00:00
thorpej 5704683922 - Pull in some interesting changes from the Amiga trap.c:
* SunOS glue

	* 68060 exception frame size definitions

	* 68060 fault detection macros

- Use `cputype' rather than `mmutype' where appropriate.

- Play the prototype game.

This file is much closer to being sharable by all m68k ports.
1996-09-11 00:44:24 +00:00
thorpej f36cec2dfc Define the CPU_* constants from <m68k/cpu.h> for assym.h 1996-09-11 00:32:16 +00:00