Commit Graph

2109 Commits

Author SHA1 Message Date
mrg d1f3239be8 bump size of miniroot 1999-01-10 13:40:30 +00:00
thorpej e598335d1c Garbage-collect `mbutl'. 1999-01-09 22:10:12 +00:00
augustss fc5f9ee81d Add -Wpointer-arith warning since `void *' arithmetic is not ANSI C. 1999-01-08 19:26:12 +00:00
pk 9d4c26b2c1 * hypersparc support:
get cache size from PROM info like the others
	reset the cache type bits before setting our desired values
* smp cache flushing:
	protect the cpu message bits with splhigh().
1999-01-08 10:15:10 +00:00
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