Commit Graph

1310 Commits

Author SHA1 Message Date
pk e38b52a46b Thinko. 1997-03-21 16:29:34 +00:00
pk 1bc742e6dd cypress_cache_enable: clear bits explicitly before setting. 1997-03-21 15:35:51 +00:00
pk d584dba41d Use `setpgt4m()' in some more places. 1997-03-21 15:19:29 +00:00
pk 3a7c1b8d57 viking: flush cache before enabling MMU. 1997-03-21 14:30:19 +00:00
pk e221d20b5b Compute a cache attribute correctlier. 1997-03-21 08:39:40 +00:00
pk cb8601ae21 In viking_pcache_flush(), use a "flash flush" during boot-strapping. 1997-03-21 01:49:03 +00:00
pk 28350d7d18 Set pcache_flush_line function pointer for correct cache configuration. 1997-03-21 01:47:15 +00:00
pk 31f3ff5346 Store cache associativities in the `cacheinfo' structure, and use it
in computing the cache "alias distance" and in the viking cache line
flush function.
1997-03-21 01:32:15 +00:00
pk d79f5b1733 Add declaration. 1997-03-20 23:57:30 +00:00
pk 5704efd375 Replace many setpte4m() calls with a simpler helper function because
the address of the desired PTE location is readily available in the
callers context (setpte4m() retraces the entire 3-level structure
to arrive at the PTE location).

Also, in many cases we can do away with the distinction between pmaps
that have or have not allocated a context. This is really only useful
in cases where we're interested in the REF or MOD bits which can differ
in the TLB version of a PTE.  By doing this, we avoid getpte()'s which
in many cases instruct the MMU to start a table walk only to find out
that there's nothing there after going 2/3 of the way, or waste a TLB
entry because of TLB flushing soon after getpte() completes.

In addition, there's a hook to flush the cache line corresponding to
the (kernel virtual) location of a PTE entry when it gets altered.
1997-03-20 23:48:37 +00:00
pk 6cea599cbf Add hook for flushing a single cache line. 1997-03-20 23:26:23 +00:00
pk 63c1c6ab1c Remove a bunch of no-ops. 1997-03-20 21:44:21 +00:00
pk 5718c246fd Define various no-op functions. 1997-03-20 21:16:20 +00:00
pk 7cf0d72881 Add a `no-op' function that the compiler can not touch. 1997-03-20 21:10:31 +00:00
mycroft 7a55cafeeb Implement set_format. 1997-03-20 16:51:38 +00:00
thorpej 9018eb5208 Use if_media to select media (or autoselect rules) on the Sun4m. 1997-03-17 03:24:26 +00:00
pk a372844a7a Add fix_align() and emulinstr() prototypes. 1997-03-15 22:25:15 +00:00
pk 27b2f0ec7c Fix a `new-ARP' pasto. 1997-03-15 22:13:55 +00:00
pk cc87278540 Remove trailing comma in enum definition. 1997-03-15 20:54:10 +00:00
pk ad1f2b7812 Remove call to mmu_pagein4m(), which is of little use. 1997-03-15 20:31:33 +00:00
pk f8918b9be9 Simplify `4m' versions of pmapbootstrap() and mmu_reservemon():
allocate and initialize all kernel page tables before looking at the
PROM maps, which allows mmu_reservemon4m() to simply walk the PROM tables
without having to allocate bits and pieces of our own kernel tables.

Slightly optimize getcontext() macros in mutli-arch kernels.

Remove un-needed `4m' version of mmu_pagein().
1997-03-15 20:24:09 +00:00
is 07b064e02e New ARP system, supports IPv4 over any hardware link.
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.
1997-03-15 18:09:08 +00:00
christos 4b697aa304 add emul.c 1997-03-15 02:36:00 +00:00
christos 358f6940ee - fix return value in case we failed to write to the destination register.
- pretty-print registers.
1997-03-15 00:39:51 +00:00
christos 2c62945461 - move instruction emulation and alignment fixing to emul.c
- add sparc-v8 {s,u}{mul,div}{cc,} instruction emulation
1997-03-14 23:57:58 +00:00
christos d9d8878ed1 Asi instruction struct was missing the immediate bit! 1997-03-14 23:54:07 +00:00
mycroft cbbcf185ae Put the genassym.sh output in a temp file, and mv -f it, in case
it fails spectacularly and doesn't clean up.
1997-03-14 23:23:45 +00:00
cjs ca5f101ba7 Remove code that stops transfers of >63K. The Sun 4 doesn't have this
limitation, and minphys() is supposed to catch this on other architectures.
1997-03-14 19:57:20 +00:00
pk 8a5abffaf5 Add some instrumentation to keep track of PMEG allocation.
Enabled #if DIAGNOSTIC.
1997-03-14 14:28:45 +00:00
cgd e36a5ca4de change microcode array definitions from "unsigned short" to the more
correct u_int16_t, and remove bogus casts that the old definition
required.
1997-03-13 04:07:44 +00:00
mycroft 919efaeb60 Make the microcode table const. 1997-03-13 03:33:03 +00:00
mycroft ac3b8b13b7 Don't share the silence block between devices. Make silence filling work for
more encodings, and make it device-independent.  From Lennart Augustsson, in
PR kern/3305.
1997-03-13 02:19:32 +00:00
cgd 96153388c0 add in the 'isp' device, for Qlogic ISP 1020-based Sbus SCSI board support 1997-03-13 00:46:13 +00:00
pk 9ceaaf3e7b Turn off "cache pagetables bit" on non-MXCC modules. 1997-03-12 22:52:19 +00:00
mycroft b8d7e3deab No longer needed. 1997-03-12 22:40:07 +00:00
cgd cf26d31ad2 NetBSD RCS ID tweaks, a few comment block tweaks. Also, make copyright
notices consistent (per Matt Jacob).
1997-03-12 21:06:41 +00:00
cgd 099e30a322 ISP 10x0 driver from Matthew Jacob of NASA Ames Research Center.
(March 12, 1997 version).
1997-03-12 20:44:50 +00:00
pk 8e4a126035 Use `mcxx' from cpuinfo instead of re-consulting the MMU registers 1997-03-12 15:44:28 +00:00
christos 0d71b22d50 Use genassym.cf 1997-03-12 15:17:13 +00:00
christos 3e35754576 Added genassym.cf 1997-03-12 15:16:35 +00:00
pk 6e3c9f3b59 Make sure to disable interrupts in the Interrupt Enable register as soon
as we've mapped it.
1997-03-12 11:04:35 +00:00
pk b197276005 Correct output from cpumatch_unknown() and add missing viking variant
to cpu table (noticed by Andrew Gillham).
1997-03-12 09:08:29 +00:00
cgd a0d3809966 specs for ISP 10x0 (isp) driver Sbus attachment. From Matt Jacob. 1997-03-12 06:43:25 +00:00
pk 92d853e309 4m memory fault traps: simplify fault address logic, since per-CPU
fault-status reading stubs pre-cook the arguments.

illegal instruction trap: catch iflush instructions that cause this trap
on some CPU/MMU combinations.
1997-03-11 01:20:25 +00:00
pk 01e424f233 Insert RCS Id. 1997-03-11 01:03:07 +00:00
pk abc39039f1 Move some parts of CP detection to cpu_attach() in cpu.c.
Call get_cpuinfo() for the boot CPU to collect the minimum information
to get the bootstrap rolling.
sun4/sun4c: the Interrupt Enable register is now mapped here after pmap
is initialized (was in locore).
Replace `cpumod' and `mmumod' with `cpuinfo.*' equivalents.
Allow more than one CPU to be configured in mainbus_attach().
1997-03-11 01:01:59 +00:00
pk 476ef3b431 Per-CPU information which is collected in cpu_attach().
Many things in here were imported from an earlier version from Aaron
Brown and are not yet used. This version has all the attributes of a
snapshot; more to come as addtional CPU/MMU details get implemented.
1997-03-11 00:55:24 +00:00
pk eb71a02a7f Re-write of CPU/MMU detection code.
Use a table driven classification based on CPU and MMU implementation/version
fields. Each CPU class or module defines a collection of routines that
implement CPU or MMU specific operations that can collect detailed setup
information.

All information is collected in a `cpu_softc' structure provided by the
auto-configuration code. However, in the interest of SMP support this
structure is located at a fixed virtual address identified by the
symbol `cpuinfo'. The `boot' CPU currently uses the the physical page(s) at
address 0x2000 for its cpuinfo. Consequently, the fixed virtual address
will be `KERNBASE+0x2000'.

The cache flush routines for several systems (sun4/4c vs. sun4m;
virtual vs. physical tags) have been factored out. Function pointers
to an appropriate set are located in `cpuinfo'. The former global
`cacheinfo' structure is now also a part of `cpuinfo'. Because of the
fixed virtual address of `cpuinfo' no extra performance penalties
are incurred by this move. In multi-architecture kernels, there's
no longer the need for run-time `cputyp' tests in this part of the system.
1997-03-11 00:44:00 +00:00
pk 8d2c03c810 Replace `cputyp' run-time tests by inserting multiple branches and NOPing
some at startup depending on architecture.

Use `get_faultstatus' field in `cpuinfo' (initialized in cpu.c) to branch
to CPU/MMU specific fault status reading stubs on memory fault traps.

Remove code top map the Interrupt Enable register on sun4/sun4c. Its VA
has moved to a high location and is now mapped in autoconf.c after
pmap has initialized. Note: this renders NMIs during bootstrap() fatal
(maybe loading %tbr should be deferred).
1997-03-11 00:09:29 +00:00
pk 7d6231865e Use cache flush routines provided in `cpuinfo'. 1997-03-10 23:55:40 +00:00