Commit Graph

2155 Commits

Author SHA1 Message Date
mrg
12d0e6e8f7 move sparc{,64} installboot.8 back to src/share, to avoid splitting sources for users who dont get everything. 1998-12-22 02:34:09 +00:00
pk
fc6df8006b Make sure we don't spuriously detect more than one boot device (as the
previous patch but extended to all devices).
1998-12-21 11:25:39 +00:00
drochner
52c16cf83a get "opt_compat_svr4.h" out of <sys/conf.h> 1998-12-18 16:55:39 +00:00
kleink
fec2cc52f3 T_SVR4_GETHRESTIME returns a nanosecond quantity in %o1. 1998-12-17 22:26:02 +00:00
christos
9a2a015957 1000000000 nsec != 2^31 nsec (from kleink) 1998-12-15 16:06:15 +00:00
kleink
342b5e5134 Also need to initialize the queue length of a newly allocated fpstate. 1998-12-14 16:18:46 +00:00
mrg
f3e2980d41 note thta installboot.8 is built in share/man. move installboot.8 back to the same place the sources are, just build it in an MI location. 1998-12-11 12:18:46 +00:00
mjacob
c2e84d0cde What was missing here is the mapping between our booting SCSI bus number
and the parent (hba) path from which we booted from. As a temp fix,
we'll only go with the first match to set altbootdev- not additional matches.
The problem was further exacerbated by the fact that cnpoll doesn't seem
to work on serial consoles.
1998-12-05 21:05:44 +00:00
pk
5d9f86821c Add a device_register() function to determine the boot device.
Use it in addition to the old method for a while, so we can take note
of any glitches easilier.
1998-12-03 23:49:58 +00:00
thorpej
da572a137f Argh, fix the ANSI CPP version of the a.out WARN_REFERENCES(). 1998-12-02 21:16:46 +00:00
thorpej
a6f7e0c05a Implement WARN_REFERENCES(). 1998-12-02 00:58:42 +00:00
mycroft
34a1fe3ee3 Fix bogus asm statements; tmp1 and tmp2 need to be outputs rather than inputs. 1998-11-29 10:37:08 +00:00
pk
2e89e9144b Turn a bunch of bus_space_*() macros into in-line functions mostly to avoid
variable aliasing.
1998-11-26 23:50:52 +00:00
pk
c918193752 Add splserial(). 1998-11-26 22:53:13 +00:00
mycroft
8df55592be Minor changes; indentation for delay slots and NOTREACHED comments. 1998-11-26 22:36:43 +00:00
mycroft
90a44dd270 Clean up kcopy() some more:
* Return EFAULT, not -1.
* Rearrange some instructions for better parallelism.
1998-11-26 22:30:31 +00:00
pk
79bf04ce4f kcopy() must restore pcb_onfault handler. Pointed out by Charles Hannum. 1998-11-26 22:17:33 +00:00
hwr
59acb69be1 Add (commented out) 'gre' pseudo device line. Feedback is welcome.
Inspired by Klaus Klein.
1998-11-25 20:30:44 +00:00
pk
b34cd5fdf0 Add IPL_SERIAL 1998-11-25 19:33:02 +00:00
pk
701d8366f0 Define `interrupt priority levels'.
XXX - for now, these arbitrary identifiers; NO INTERPRETATION IS DEFINED YET
1998-11-22 23:53:24 +00:00
pk
cecf78e09d Connect the PCMCIA bus. 1998-11-22 23:36:42 +00:00
pk
e40c5c3c20 Add busses: PCMCIA, MII, ATA 1998-11-22 23:22:26 +00:00
pk
bc98f448b8 Turn the passed tag into "used" arguments. 1998-11-22 21:52:24 +00:00
thorpej
5f0577babc Adapt to the new scsipi_adapter interface. 1998-11-19 21:43:00 +00:00
mrg
db3051d720 fix problems in many d_mmap routines:
- returned EOPNOTSUPP rather than -1.
	- no check for negative offset.
many of these fix potential security problems in these drivers.


XXX XXX XXX
the d_mmap cdev routine should be changed to have a prototype like:
	paddr_t (*d_mmap) __P((dev_t, off_t, int));

by someone!
1998-11-19 15:38:20 +00:00
pk
dee948f2d9 Increase the delay after touching the IOMMU control register by another
three no-ops (empirically verified by Robert Elz).
1998-11-18 12:07:47 +00:00
oster
cf5710c839 Added a (commented out) configuration line for the RAIDframe device driver. 1998-11-16 16:44:55 +00:00
oster
c74d32c5fc Updating of bdev's and cdev's to support RAIDframe. 1998-11-13 04:47:03 +00:00
ws
99d394c267 Typo 1998-11-12 14:00:06 +00:00
thorpej
cabecee13c Changes to support fork_kthread():
- cpu_set_kpc() now takes void *arg third argument, passed to the
  entry point.
- cpu_fork() allows parent to be non-curproc iff parent is proc0.
  When forking non-curproc, assume its state has already been saved.
- Adjust various pieces of machine-dependent code to account of all of this.
1998-11-11 06:43:49 +00:00
chs
61458d7dfa LOCKDEBUG enhancements for non-MP:
keep a list of locked locks.
use this to print where the lock was locked
when we either go to sleep with a lock held
or try to free a locked lock.
1998-11-04 06:19:55 +00:00
pk
9eb94a0c03 Must protect user-land from cpuvar.h; noticed by Juergen Hannken-Illjes. 1998-10-26 08:16:08 +00:00
pk
f3c1682c65 No need for `#ifdef SUN4M' protection. 1998-10-26 08:12:15 +00:00
pk
de51cf3531 Define and use CPU pause/resume IPI messages (until such times that I know
what the prom supplied versions actually do).
1998-10-24 08:12:55 +00:00
pk
c85c920d03 Duh.. condition codes are not preserved when writing directly into %psr.
Also, we need to deal with bus latency when turning off bits in the
interrupt status register.
1998-10-24 08:04:07 +00:00
pk
890e54bee0 Pull in cpuvar.h to get definition of `curproc'. 1998-10-21 07:11:47 +00:00
tron
b296275bb4 Defopt SYSVMSG, SYSVSEM and SYSVSHM. 1998-10-19 22:09:13 +00:00
pk
f0529fccf5 Maintain a current process (`curproc') a per CPU. 1998-10-19 11:56:43 +00:00
christos
09285b1171 PR/6311: By me... There was a bug unloading the dmamap:
addr = map->dm_segs[0].ds_addr & ~PGOFSET;
	len = map->dm_segs[0].ds_len;
	len = ((addr & PGOFSET) + len + PGOFSET) & ~PGOFSET;
	addr &= ~PGOFSET;

Notice that the & ~PGOFSET in the first line should be gone. This fixes
the newfs large disk panic.
1998-10-18 16:02:34 +00:00
pk
0bf09a4ae7 Drop cpuinfo's `L1_ptps'; instead keep a per CPU segment (level 2) page
table descriptor that is used to patch up a region (level 1) page table
associated with a user pmap at context switch time.
1998-10-16 22:39:17 +00:00
drochner
2468738337 change handling of libkern:
-sys/lib/libkern builds as library per default (as it was documented all
 the time)
-ports able to LKM set "KERN_AS=obj" explicitely in their Makefiles
 (for now; should depend on actual "option LKM" or -better- functions
 included for LKM use should be pulled in by a stub)
-always link libcompat before libkern - libkern stuff can be referred to
 by libcompat, but not the other way
1998-10-15 18:37:13 +00:00
pk
fd966585a1 Turn on the counter at each CPU (we fear nothing..) 1998-10-14 14:53:36 +00:00
pk
afcfa7d7fa Let all CPUs spin at spl0. 1998-10-14 14:47:20 +00:00
pk
631a48776f Don't allocate two stacks per CPU.
Minor attach-time message change.
1998-10-14 14:22:18 +00:00
pk
e6c0a03f90 `ncpu != 0' doesn't make much sense when deciding what CP info to print. 1998-10-13 21:08:48 +00:00
pk
bf7ace9074 CLKF_INTR() needs to have a MULTIPROCESSOR version. 1998-10-13 20:53:02 +00:00
pk
802248ee1c We use MULTIPROCESSOR explicitly here, so pull in "opt_multiprocessor.h". 1998-10-13 13:37:14 +00:00
pk
14a3acbd47 srmmu_cache_flush(): handle small (< NBPG) ranges more efficiently. 1998-10-13 13:34:06 +00:00
pk
1e0064d5d6 EINTSTACK => EINTSTACKP 1998-10-13 12:05:44 +00:00
pk
d5e94d4fb2 Add missing `return'. 1998-10-13 11:33:36 +00:00
pk
8511a94f26 Oops, USPACE does not in 13 bits.. repair and save one instruction
in a non-SMP kernel.
1998-10-12 22:05:17 +00:00
pk
c27a8760b7 In switchexit(), switch to the current CPU's idle u.area. 1998-10-12 21:51:54 +00:00
pk
dff4866141 Add offset of `cpuinfo.idle_u'. 1998-10-12 21:50:22 +00:00
pk
5d124ce774 Move around a few PTE-manipulating macros. 1998-10-12 21:17:28 +00:00
pk
83b671e23d Make `cpcb' (current u.area) a per-CPU variable.
Brace some MP-only code with `#ifdef MULTIPROCESSOR'.
1998-10-12 20:56:48 +00:00
pk
6791d7f713 Make `_cpcb' (pointer to current user area) a per-CPU variable.
This cpuinfo field is initialized here in locore before calling bootstrap(),
since it must be valid before entering the window overflow/underflow handlers.

Fix miscalculation in the MULTIPROCESSOR version of INTR_SETUP().
1998-10-12 14:39:10 +00:00
pk
523892012a `cpcb' (pointer to current u.area) is now a per-CPU variable. 1998-10-12 14:32:14 +00:00
pk
fbbc2eeedd `cpuinfo' is now cleared in locore. 1998-10-12 14:15:13 +00:00
pk
6fc7a5b45a Define `sizeof(struct cpu_info)'. 1998-10-12 14:03:22 +00:00
pk
1fb4827a72 Take care of a MID not present when matching timer register sets. 1998-10-12 12:28:26 +00:00
chuck
8bef431273 remove unused share map code from UVM:
- update calls to uvm_unmap_remove/uvm_unmap (mainonly boolean arg
        has been removed)
1998-10-11 23:20:59 +00:00
pk
b9d844a520 Allocate a private PCB, kernel stack and interrupt stack for each processor.
As a result, the stack setup code in locore.s changes slightly in
the MULTIPROCESSOR case. Also, make the stack redzone barrier (for
debugging only) a per-CPU entity.
1998-10-11 14:46:45 +00:00
thorpej
908cdfe4e3 Add scsibus entry points to the cdevsw[]. 1998-10-10 02:00:49 +00:00
thorpej
29d472f53d Garbage-collect the open_target_lu and close_target_lu entry points from
struct scsipi_adapter; they were not used.

Add a scsipi_ioctl entry point to struct scsipi_adapter.  This will be
used to issue ioctl commands to the host adapters.

Inspired by PR #6090, from Matt Jacob.
1998-10-10 00:28:28 +00:00
pk
5422d07da0 Construct a `flush_cache_all()' for Cypress CPUs. 1998-10-09 10:48:14 +00:00
pk
024e5f4c9a More `#if defined(MULTIPROCESSOR)'s. 1998-10-09 10:08:52 +00:00
pk
57a688f81e Init a variable. 1998-10-09 08:01:33 +00:00
pk
312385da0a Define SMP versions of some cache flush methods. 1998-10-08 22:27:32 +00:00
pk
41d031837e Define a message structure of inter-processor communication. 1998-10-08 22:25:42 +00:00
pk
f3c4a67a7f Adapt to changes to the cpus[] array. 1998-10-08 22:23:44 +00:00
pk
34ad8e5fb7 Find out about the number of CPUs in the system before starting device
configuration, so we can build a cpus[] array without "holes".
1998-10-08 22:14:44 +00:00
pk
a61ee50b27 Move [gs]etcontext and [gs]etpte() to pte.h 1998-10-08 21:49:12 +00:00
pk
e6bbfcc58a Move [gs]etcontext() and [gs]etpte() to pte.h 1998-10-08 21:47:34 +00:00
thorpej
d681cf055a configure() prototype is in <sys/device.h> 1998-10-06 20:50:15 +00:00
pk
2727683a09 more DIAGNOSTIC sanity checks 1998-10-06 19:24:03 +00:00
thorpej
0729240c88 Move the "XXX re-zero proc0 user area" to the end of configure(), before
interrupts are enabled.
1998-10-06 18:58:09 +00:00
thorpej
5006dbf868 cpu_set_kpc() prototype is already in <sys/systm.h>. 1998-10-05 22:11:15 +00:00
pk
40beab6ad6 If a lock is held do not spin in a read/write loop but just read the lock
until it is released. This is easier on the bus cache coherency logic.
1998-10-05 19:58:19 +00:00
christos
550ee6b308 rename getprop routine to avoid conflict with the one in bsd_openprom.h 1998-10-05 07:13:07 +00:00
christos
0bf5ff6ade make this compile with DIAGNOSTIC again. 1998-10-01 21:26:55 +00:00
thorpej
c5b8d42e66 Need 14 longs for jmp_buf now (sigcontext has 128-bit signal mask at the
end).
1998-10-01 03:28:11 +00:00
pk
f382e91b5e Add a field to identify the processor that has a process' FPU context. 1998-09-30 18:40:58 +00:00
pk
4826aac9cf Make the current FPU owner (`fpproc') a per-CPU entity. Unresolved issue
as yet: lazy FPU context switching may require co-operation from other
CPUs.
1998-09-30 18:38:57 +00:00
pk
8c29324cc7 Kernel configuration with multi-processor support. 1998-09-27 15:10:25 +00:00
pk
0a090af2c7 Add `ldstub()'. 1998-09-27 14:32:14 +00:00
pk
e6ce8bcfc7 sparc spin lock functions. 1998-09-27 14:31:18 +00:00
pk
0a1a6fb7e0 This file is no longer used 1998-09-26 20:51:45 +00:00
pk
166c2a5fa5 fix typo 1998-09-26 20:15:59 +00:00
pk
9f352b7e15 Stop all other CPUs upon entering a debugger. 1998-09-26 20:14:48 +00:00
pk
01e64c640c Implement mp_pause_cpus() and mp_resume_cpus(): pause and resume all
CPUs except the one running this code.
1998-09-26 20:13:56 +00:00
pk
6ad3a051e8 mp_{pause,resume,halt}_cpu() prototypes. 1998-09-26 20:12:06 +00:00
pk
8ddcd514a6 Use CPU start function in obp.c 1998-09-26 19:09:56 +00:00
pk
fe1cf94b9f Add wrappers for PROM's CPU start/stop functions. 1998-09-26 19:08:09 +00:00
pk
a89a10c394 Add file obp.c 1998-09-26 19:06:47 +00:00
pk
43c1cb852c Move PROM interface prototypes into openprom.h
Use the `openprom_addr' structure for passing around physical addresses.
1998-09-26 18:20:19 +00:00
pk
09a4cf6caa Move PROM interface routines into their own file. 1998-09-26 18:15:34 +00:00
pk
eb8de83739 eccmemctl' inadvertently got into the mandatory' list. 1998-09-25 11:40:16 +00:00
pk
27569e4050 Initialize pointer to the boot CPU's interrupt register. 1998-09-24 20:38:43 +00:00
pk
831354d6de Add `intreg' cpuinfo offset. 1998-09-24 20:37:17 +00:00
pk
58ab38cb69 Use per-CPU interrupt status register. 1998-09-23 11:07:28 +00:00
pk
9eca565a37 Make cgsix_sbus & cgsix_obio dependent on their respective attribute.s 1998-09-23 08:49:46 +00:00
pk
d6746389a4 The nmi_* routines are sun4m-only. 1998-09-23 08:44:51 +00:00
pk
aa1cf01930 Express per-processor interrupt registers in a C structure as well. 1998-09-22 13:42:26 +00:00
pk
bd37118769 Dup header. 1998-09-22 13:41:03 +00:00
pk
eca50c1c33 Flush cache after diddling with trap vectors. 1998-09-22 13:40:08 +00:00
pk
1186ba5102 Introduce a `flush entire cache' method. 1998-09-22 13:39:19 +00:00
pk
5afb0e8bcb Keep the per-processor interrupt status in the cpuinfo structure.
For now, map them to the fixed virtual addresses set up early in autoconf.c
1998-09-22 13:08:44 +00:00
chs
c945760779 sign-extend some operand types which need it. 1998-09-22 05:40:14 +00:00
pk
709360e3ce Fill the `bpp' slot. 1998-09-21 21:13:51 +00:00
pk
20f2898a0c Merge sun4 and sun4c version of memerr() again. 1998-09-21 10:32:00 +00:00
pk
af19654e85 We no longer need to access memerr() through a function pointer.
GC `cpumod' and `mmumod'.
1998-09-21 10:30:41 +00:00
pk
c3b26811ac We no longer need to access memerr() through a function pointer. 1998-09-21 10:29:20 +00:00
pk
ec34e18063 Don't map sbus `registers' on sun4c (i.e. sbus @ mainbus); it's almost
certainly not the control space we want..
1998-09-20 20:08:52 +00:00
pk
7a147080b8 Async arguments are no longer passed to the memory fault handler. 1998-09-20 20:01:15 +00:00
pk
4bf750b7df Add sun4m NMI handlers. 1998-09-20 20:00:09 +00:00
pk
d0d9bb7669 Dedicate a pair of entry points to handling sun4m level 15 (NMI) interrupts.
Hardware NMIs are generated on various fault conditions that take place
asynchronously to the instruction stream. Software NMIs are going to be used
for inter-processor communications.

Get synchronous fault information separately from asynchronous fault
information. Do the former right after taking a memory fault trap and
store the values in temporary locations within the cpuinfo structure (XXX),
so we can unconditionally clear the sync fault status register after
MMU probe operations. This all is to work around a Hypersparc feature
which could lead to loss of fault information because of the fault
status register getting locked.
1998-09-20 19:54:48 +00:00
pk
cd8dfa6798 Account for changes in struct cpuinfo & locore 1998-09-20 19:39:18 +00:00
pk
4128057c52 Split memory fault status function into synchronous' and asynchronous'
versions.
1998-09-20 19:37:50 +00:00
pk
2734182a74 Re-arrange the sun4m cases a bit.
Entry points no longer have async arguments.
1998-09-20 19:34:16 +00:00
pk
c3e742adfb Format string for SI register. 1998-09-20 19:31:37 +00:00
pk
b6da06d637 Name fault registers more like they're referred to in various docs. 1998-09-20 19:29:10 +00:00
pk
a1a94bc5fc Use the expected name for the config attach structure. 1998-09-19 16:50:31 +00:00
pk
0a6347a24d Provide an error entry point like sbus and memory. 1998-09-19 16:45:43 +00:00
pk
812eb8c1da Add %b format strings. 1998-09-19 16:44:59 +00:00
pk
25d48215a2 Map Sbus control registers. 1998-09-19 15:49:50 +00:00
pk
8381b55bd7 Add a bunch of SBus control register definitions. 1998-09-19 15:48:55 +00:00
pk
1bcd9d3bbb Pass the children register space in the attach arguments. 1998-09-19 15:47:18 +00:00
pk
ced4225429 Add `eccmemctl' device. 1998-09-18 20:19:12 +00:00
pk
b3c7ebb7cd Handle ECC memory control found on a number of machines.
Also defines an entry point for memory errors reported by module interrupts.
1998-09-18 20:18:10 +00:00
pk
81d435b491 sigh.. put back non-garbage collectible `que' functions. 1998-09-18 08:07:08 +00:00
thorpej
dcb541531a Minor cosmetic change. 1998-09-17 02:33:06 +00:00
thorpej
c006c7c0da Sync w/ sendsig(). 1998-09-17 02:30:02 +00:00
thorpej
e5ea525b9f Slight brain'o in last. 1998-09-17 02:26:26 +00:00
thorpej
5bc9dafaee Minor cosmetic change to sendsig(). 1998-09-17 02:24:56 +00:00
pk
59e5588098 Map the per-CPU counter registers into each cpu info area. 1998-09-16 13:39:48 +00:00
pk
49b5114713 Make all cpu info structures accessible through an array `cpus[_MAXNCPUS]'. 1998-09-16 13:36:23 +00:00
pk
543070847c Can't afford a 1K buffer in the data segment. 1998-09-15 20:03:50 +00:00
pk
0ad1257add sub-arch protection. 1998-09-15 13:12:25 +00:00
pk
fb38024157 Use `swap' to install page-table entries which is recommended practice
for MP configurarions.
1998-09-14 22:45:36 +00:00
pk
1736bda754 Define `swap'. 1998-09-14 22:43:29 +00:00
pk
0a46abfd42 Collect redundant code into cpu_setup(). 1998-09-14 10:37:12 +00:00
pk
b1b69e4195 Fix cache bit confusion in pmap_alloc_cpu(). 1998-09-14 09:46:11 +00:00
pk
ff383dc20d Add compat_13_machdep.c 1998-09-13 20:34:34 +00:00
pk
190e4c429d Move compat_13 sigreturn() into its own file. 1998-09-13 20:33:33 +00:00
pk
82d2ea3a70 Remove left-over SUNOS_COMPAT line. 1998-09-13 20:24:15 +00:00
pk
9658554e18 Replace previous by something more complete. 1998-09-13 20:17:54 +00:00
pk
9d9f22fa79 Signal handling changes: sunos compat gets its own sendsig(); sunos
sigreturn() == compat_13_sigreturn().
1998-09-13 20:07:54 +00:00
mycroft
4e4f120db9 Update these for signal handling changes.
XXX Not tested yet.
1998-09-13 12:13:49 +00:00
pk
90054fd502 New sigcontext. 1998-09-13 11:41:02 +00:00
pk
ba67f63901 Sync function prototypes; remove unsed variables. 1998-09-13 11:34:04 +00:00