Commit Graph

14453 Commits

Author SHA1 Message Date
thorpej 7819cad7ec Implement pmap_deactivate() (a noop in this pmap) and clean up
pmap_activate() a little.
1998-03-22 23:12:15 +00:00
pk 279df61dbe Fill in the pointers the MI back-end expects correctly.
Add comment and diagram explaining the memory layout (to be revisited..).
1998-03-22 22:12:52 +00:00
pk 405ec57e9f Lift the tilde a bit. 1998-03-22 20:24:05 +00:00
mark 0c7f9767f4 Replace eh0 and em0 devices with ne* device. 1998-03-22 18:33:28 +00:00
mark f8fabd927a Use netslot_ea() function to obtain the machine ethernet address of the
netslot interface.
1998-03-22 18:30:04 +00:00
drochner db80fc3242 The "pckbd" attribute of pc/vt is now "pckbcport".
Use the real console driver name here to make more obvious where
pms and spkr attach to.
1998-03-22 18:18:45 +00:00
is 456d2a7c07 Add bus_space_subregion(). 1998-03-22 17:58:01 +00:00
drochner 4682d49cf1 tell drivers that this port knows about the new wscons code
(and generates the NWSCONS etc include files)
1998-03-22 17:53:23 +00:00
drochner f321f0c731 add entries for the new wscons stuff 1998-03-22 17:50:12 +00:00
drochner d4d8012d51 Export pcconskbd_cnattach() - it is used if pccons attaches to the MI
keyboard controller driver.
1998-03-22 17:49:00 +00:00
drochner c4a9c8a96e Allow to use pccons with the new MI keyboard controller driver.
This is more or less for testing (it doesn't contribute to the beauty
of the code).
1998-03-22 17:40:08 +00:00
is 6e806b8115 This is no longer DraCo-specific (and hasn't been for a long time). 1998-03-22 17:16:33 +00:00
drochner a773a26ab1 Allow to attach the mouse driver to the new MI keyboard controller driver.
This should allow to use old X servers which depend on the old mouse
interface to work in the future.
XXX There can be only one attachment - either to an old console driver
or to the new pckbc driver - be configured.
1998-03-22 16:48:51 +00:00
drochner e6244ecd3a allow use of new wscons code:
-rename the "pckbd" internal attribute to pckbcport, it conflicts with the
 real pckbd device in dev/pckbc
-add attachments of pccons and pms to the new mi keyboard controller
 driver (more or less for testing)
-include the new "files.wscons" and "files.pckbc"
-add declarations for VGA - must be done here for now to avoid conflicts
 with alpha's private VGA driver
1998-03-22 16:14:39 +00:00
drochner 528890f3ab Allow to use the new VGA and keyboard controller drivers as console:
-allow to bus_space_map() for the memory hole in early startup
-add calls to the new XXX_cnattach() functions to consinit()
-add a "pckbc_machdep_cnattach()" dispatch function to allow the
 combination of old console driver - new keyboard controller driver
1998-03-22 16:04:31 +00:00
drochner 06471a2eed switch to non-BROKEN_INDIRECT_CONFIG 1998-03-22 12:52:03 +00:00
jonathan 70f1f1a099 use dev/dec/lk201.h, fold back DELAY() changes from pmax lk201.c rev 1.7. 1998-03-22 09:37:47 +00:00
jonathan 9a8dbd75df Clone lk20.h (keycode definitions) to /sys/dev/dec.
Update source pmax files accordingly.
cvs remove old pmax/dev/lk201.h.
1998-03-22 09:27:07 +00:00
jonathan d3d99a28c9 Update #ifdef'ed-out changes from pmax :
* Add more #ifdef pmax/#endif, #ifdef alpha/#endif where appropriate.
    Config and heade files need more work (or replacement)
  change TK_NOTYET to HAVE_RCONS
  change commented-out /* && cn_tab.cn_screen */ to && raster_console()
  * Add DDB hooks.
  * Note where Alpha console ignores carrier on consoles.
  * Add pmax-derived console tty-size code inside HAVE_RCONS
  * Fold in gross pmax rcons-input hooks, inside HAVE_RCONS

Untested, but whitespace/ifdef only,  cross-compiles OK,
preprocessing shows no significat differences (famous last words)
1998-03-22 08:24:52 +00:00
jonathan e1cc91fde3 Elimiate whitespace KNF botches due to emacs/X cut-and-paste. 1998-03-22 07:56:28 +00:00
thorpej a5260cbda0 Use atomic set/clear bits in pmap_activate()/pmap_deactivate(). 1998-03-22 07:27:54 +00:00
thorpej fcfe2f1539 Implement a set of `atomic' (using load-locked and store-conditional)
operations.  Initial set includes:

alpha_atomic_setbits_q()	set bits in a quad
alpha_atomic_clearbits_q()	clear bits in a quad
1998-03-22 07:26:32 +00:00
jonathan 456c5d02c4 oops, forgot more whitespace changs and alpha_mb() -> tc_mb(). 1998-03-22 07:25:40 +00:00
jonathan 5cfab7fb5b Whitespace, cosmetic changes against alpha/tc/scc.c 1.40. 1998-03-22 07:15:20 +00:00
jonathan 6e3073d769 More tty dialin/dialout changes (t_wopen).
NB: dtop is a keyboard/mouse bus and doesn't support dialout.
1998-03-22 07:04:13 +00:00
mhitch a10657ae4f Set the PID before setting up the wired TLB entries for proc0. The
mips3_HitFlushDCache() fails with a TLB miss otherwise.
1998-03-22 06:31:40 +00:00
thorpej 9db8ae93c8 - The pmap now includes support for ASNs. We no longer need to flush
the TLB and I-cache in the SWITCH_CONTEXT macro.
- Right after switching to proc0's newly-created context at startup time,
  flush the TLB and I-cache; this is the only place where it's not done
  automatically.
- Fix a nasty bug in a critical section of cpu_switch(); change the
  pmap_activate -> SWITCH_CONTEXT -> pmap_deactivate sequence to
  pmap_deactivate -> pmap_activate -> SWITCH_CONTEXT.  This prevents
  erroneously marking a pmap inactive if switching to a process that
  shares it's address space (and thus its pmap) with the oldproc!  Noticed
  by Chris Demetriou.
1998-03-22 05:46:02 +00:00
thorpej c0cc1ed476 Implement support for Address Space Numbers, greatly reducing the number
of TLB and I-cache flushes, significantly speeding up context switches.

Once again, many thanks to Chris Demetriou and Ross Harvey for code
review and debugging assistance!
1998-03-22 05:41:37 +00:00
thorpej a8d86e5a7c Replace PMAP_ASNGEN_INVALID with PMAP_ASN_RESERVED. 1998-03-22 05:39:50 +00:00
mjacob 86b6520e41 more TS_WOPEN to tp->t_wopen changes 1998-03-21 23:36:19 +00:00
mycroft 0dae91d9af Eliminate uses of TS_WOPEN in hard-wired devices. 1998-03-21 22:52:59 +00:00
pk e6a2630760 Direct the Sbus bus map function through the bus tag. 1998-03-21 22:03:33 +00:00
mjacob 34f87569b9 add some error defintions 1998-03-21 22:02:42 +00:00
mark 46f5fd743a Add a call to vm_set_page_size() in pmap_bootstrap(). 1998-03-21 21:42:02 +00:00
gwr 9c160cc541 Deal with missing P4 register on old 3/60 machines. 1998-03-21 21:40:45 +00:00
mark 5fb8156c1c Replace the em and eh drivers with an attachment to the ne driver. 1998-03-21 21:39:16 +00:00
gwr 24903a0744 Deal with missing P4 register on old Sun3/60 machines. 1998-03-21 21:38:24 +00:00
mark b8bbd98f2a This file is no longer needed now etherM driver is just an attachment
to the MI NE2000 driver.
1998-03-21 21:38:01 +00:00
mark 6aad6c26fd This driver has been replaced with a podulebus attachment to the MI
NE2000 driver.
1998-03-21 21:36:37 +00:00
mark 5241ea94ce Initial commit of podulebus attachments to the MI NE2000 driver for
etherH and etherM netslot interfaces.
1998-03-21 21:35:20 +00:00
mark a9dd30a5e0 Prototype netslot_ea() and podule_read(). 1998-03-21 21:30:29 +00:00
mark 3fbeab8ca4 Report podules that have been disabled by boottime options.
Provide a function netslot_ea() to return the ethernet address of the
RiscPC network slot.
1998-03-21 21:30:07 +00:00
pk f4410cf7a3 Account for changed bus attachment scheme. 1998-03-21 20:34:58 +00:00
pk 090d9364af Implement bus mapping and interrupt-establish functions. 1998-03-21 20:33:31 +00:00
pk 681b358c19 Account for bus_space(9)-style bus attachment scheme. 1998-03-21 20:30:49 +00:00
pk 232fa45996 Add bus tags to softc. 1998-03-21 20:29:57 +00:00
pk a21d934940 Add bus tags.
Add interrupt chaining facility (currently used for `le'; the `esp'
device should follow).
1998-03-21 20:28:44 +00:00
pk 087da728f2 Add bus tags to softc. 1998-03-21 20:25:12 +00:00
pk c99d62cc8a Account for changed bus attachment scheme. 1998-03-21 20:23:38 +00:00
pk be7f5a7031 Switch to a bus_space(9)-based device attachment scheme.
The dma & lebuffer devices behave like busses to accommodate the
OBP layout. For practical purposes, they are implemented as
Sbus "extensions".
1998-03-21 20:23:09 +00:00
pk 69fe6f242f Account for changed bus attachment scheme. 1998-03-21 20:11:30 +00:00
pk 165120cfaf Sbus attach arguments and map function prototypes go here. 1998-03-21 20:10:07 +00:00
pk 77f499595c Switch to a bus_space(9)-based device attachment scheme.
- device attachment arguments contain bus-specific
	  address and interrupt levels.

	- devices must call back on bus map functions to get their
	  addresses and interrupt levels translated properly.

	- sun4m's obio bus is treated like an Sbus slot.

	- the sun4-style obio bus has its own attach arguments
	  and map functions.
1998-03-21 19:55:31 +00:00
pk 73f387899e #define several register bank offsets, so we don't need to refer to
structure fields.
1998-03-21 19:45:45 +00:00
pk 61365a8b8e Add bus tags to softc. 1998-03-21 19:43:17 +00:00
pk 83cec33afc Split the fb_setsize() utility in two separate functions: one to be
used by OBP machines and another one for sun4/eeprom machines.
1998-03-21 19:42:00 +00:00
pk 66190b4b99 Remove old `confargs' structure which is no longer used; extract the
structures representing the ROM properties.
Also, define the `mainbus' and `obio' attach arguments here.
1998-03-21 19:36:27 +00:00
pk 9e69994eaa Add `interrupt establish' and ` device mmap' methods and macros to
match to the bus tag structure.
1998-03-21 19:31:27 +00:00
pk 9c3abc26a4 Add RCS-Id & copyright. 1998-03-21 12:29:29 +00:00
pk 71fc7f093d The iommu "bus" now presents its own attach arguments to its children. 1998-03-21 12:21:18 +00:00
pk d19772ea9e Transform `mainbus' attach code to use its own attach arguments.
Add a couple rom-property helper functions; some overlapping functionality
with existing function, but hold on to the latter for just a while.
1998-03-21 12:18:25 +00:00
pk 8d63cb6db8 Remove incorrect address validity check in two `#if DEBUG' sections. 1998-03-21 11:32:43 +00:00
pk 1ccb578b36 We can't currently attach `audioamd' at `obio'. 1998-03-21 11:15:25 +00:00
pk 04730ad038 Declare separate bus attachments for devices that can occur on multiple busses. 1998-03-21 11:12:56 +00:00
ragge cad3cb3894 ubasetup() must be non-static. (used by QDSS) 1998-03-21 10:24:29 +00:00
ragge cf02ad2bc9 Add support for QDSS graphic console. Code originated from 4.4BSD,
ported to NetBSD by Boris Gjenero <bgjenero@undergrad.math.uwaterloo.ca>
1998-03-21 10:02:39 +00:00
scottr 2f2b4dae56 Optimize some cycles out of the clock interrupt handler when
USE_LEDS is defined.
1998-03-21 08:05:37 +00:00
scottr 727b8bc7ac Charles Hannum pointed out that if a clock interrupt was posted while
we were in ledcontrol(), the heartbeat twinkler would just punt on
updating the LED even though it had already updated the status.  (This
was broken in v1.73 of locore.s).

Rather than resurrect the old code, simplify ledcontrol() and don't
bother with mutual exclusion.  As mentioned by the comments describing
this function, we really don't need to be that precise.  We do, however,
want to guarantee instructions that modify the status variable directly,
so the function is now primarily inline assembly.
1998-03-21 07:45:59 +00:00
mycroft 2ada4b4af1 Replace TS_WOPEN with t_wopen, per mail on tech-kern. 1998-03-21 04:02:47 +00:00
thorpej 66d8f5b544 sync systypes w/ <machine/rpb.h> 1998-03-20 21:48:21 +00:00
thorpej 63c73f94e3 Add a few more systypes. 1998-03-20 21:48:03 +00:00
mycroft 919340aaa5 In npxdna(), if there was an exception state in the FPU but npxproc was
null, the frstor would fault on a PPro.  I'm pretty sure this is not
how the chip is supposed to behave, but it's easy enough to do a fninit
to throw away the exception state.
Also, some other minor changes to the documentation.
1998-03-20 20:15:14 +00:00
phil 3b25c8611a sync to current state. 1998-03-20 19:15:18 +00:00
ragge 52defbf438 Use rom routines on MicroVAX II, so that the QDSS/QVSS display will
be used if present. Fix provided by Boris Gjenero.
1998-03-20 16:36:20 +00:00
matthias 525ebe8083 prepare for PMAP_NEW. 1998-03-19 22:10:21 +00:00
matthias ff58f2dd3a update to my current configuration 1998-03-19 22:09:24 +00:00
thorpej 0f95ffdc1d Nuke swpctxt(); it's only used by the Mach pmap, which we will only ever
use for reference.
1998-03-19 06:44:25 +00:00
thorpej 003c50d1d5 Add a macro to invalidate the TLB for a given pmap/va pair. TLB
invalidation algorithm:

	if (old mapping had PG_ASM set || pmap is active) {
		TIBS(va);
		if (also sync I-stream)
			imb();
	}

The check for "old mapping had PG_ASM" will get all kernel mappings (since
kernel mappings always have PG_ASM set).

This allows us to remove the bogus check for the kernel pmap in
active_pmap() - do so.

Use the new TLB invalidation macro whenever such action is needed.
1998-03-18 23:55:25 +00:00
thorpej 15adb17803 Eliminate the last argument from pmap_remove_mapping(); it makes its own
decisions about TLB invalidation.
1998-03-18 23:11:44 +00:00
thorpej 7ee4af11a7 Change active_pmap() to use the CPU mask (XXX and check for kernel pmap
as well, until some other changes are made).  Nuke active_user_pmap(),
and change the places that used it to use active_pmap() instead (as well
as make some DIAGNOSTIC consistency checks).
1998-03-18 22:50:50 +00:00
is ddc5b81d4f 68060 has 8k + 8k caches. 1998-03-18 22:19:40 +00:00
thorpej 605472f676 Optimize out a TLB invalidation in a common case of pmap_enter(): if
the PTE was previously invalid, no TLB invalidation is necessary because:

	(1) when a PTE is invalidated, its entry is flushed from the
	    TLB

	(2) the PALcode won't install an invalid PTE into the TLB.
1998-03-18 22:13:58 +00:00
matthias e14a1c1120 Switch the pc532 to MACHINE_NEW_NONCONTIG and add machine specific bits
for UVM. All of this was mostly done by stealing code from the i386 port.
Prepare for stealing pmap.new.c as well.
1998-03-18 21:59:38 +00:00
thorpej cfdf9a95ad Keep track of which CPUs are using a pmap by setting/clearing bits
in the pmap's CPU mask in pmap_activate()/pmap_deactivate().
1998-03-18 21:57:03 +00:00
matthias 214f303d0e Import from i386 because it contains a nice explanation of our MMU. 1998-03-18 21:52:02 +00:00
thorpej 43614761e3 In cpu_exit() deactivate the address space before freeing the vmspace
structure.  We will continue to run on this context (which is the
global Lev1map at this point) right up until we switch to proc0's
context in switch_exit().
1998-03-18 20:38:07 +00:00
thorpej 87eb2cfded Don't call pmap_deactivate() if we jumped into the middle of cpu_switch()
from switch_exit(), since by this time, the vmspace will have already
been deactivated and freed.
1998-03-18 20:36:13 +00:00
thorpej b637a998f4 Add ASN housekeeping and a CPU mask to the pmap. 1998-03-18 19:39:23 +00:00
thorpej 961a955498 Move the "are we active" macros out of the header file. 1998-03-18 19:27:46 +00:00
thorpej d37acae24c Add a DIAGNOSTIC checks for the kernel pmap in pmap_create_lev1map()
and pmap_destroy_lev1map().  Correct a comment in another DIAGNOSTIC
panic.
1998-03-18 19:21:50 +00:00
thorpej 06b49b8f3e Change a couple of assert()s to DIAGNOSTIC panics. 1998-03-18 19:12:57 +00:00
thorpej 438599b408 Correct a comment in pmap_bootstrap(). 1998-03-18 19:04:42 +00:00
thorpej 56e004c995 Pass the max ASN from the HWRPB to pmap_boostrap(). 1998-03-18 19:02:49 +00:00
thorpej 426d2953f5 Add a macro to test if PG_ASM (Address Space Match) is set in a PTE. 1998-03-18 19:00:15 +00:00
bouyer 9f50fca1fd Add commented out "options FFS_EI" 1998-03-18 16:34:41 +00:00
thorpej 63dfa5e1a1 Minor cosmetic cleanup; no functional change. 1998-03-18 07:18:50 +00:00
thorpej 86d534a7d9 - Make MACHINE_NEW_NONCONTIG non-optional.
- Maintain two copies of the number and size of physical memory segments.
  One copy, mem_clusters[], contains _all_ of physical RAM, for crash dumps.
  The other copy, phys_seg_list[], starts out with all of physical RAM (and
  is used to initialize mem_clusters[]), but is adjusted to be the memory
  actually managed by the VM system.
- Fix computation of physmem; when support for MACHINE_NEW_NONCONTIG was
  added, physmem was accidentally changed to not take into account the memory
  located before the kernel, or the memory taken up by the kernel itself.
1998-03-18 07:16:10 +00:00
thorpej 02fa4134dc - Make MACHINE_NEW_NONCONTIG non-optional.
- G/C some things left over from the old noncontig code.
1998-03-18 07:12:49 +00:00
thorpej c718c9e278 - Make MACHINE_NEW_NONCONTIG non-optional.
- Make initialization of the message buffer a little less magic-looking.
- Maintain two copies of the number and size of physical memory segments.
  One copy, mem_clusters[], contains _all_ of physical RAM, for crash dumps.
  The other copy, phys_seg_list[], starts out with all of physical RAM (and
  is used to initialize mem_clusters[]), but is adjusted to be the memory
  actually managed by the VM system.
- Fix crash dumps with regard to multiple memory segments.
1998-03-18 07:11:22 +00:00
thorpej c0cfbf8d7d Make MACHINE_NEW_NONCONTIG non-optional. 1998-03-18 07:07:11 +00:00