Commit Graph

588 Commits

Author SHA1 Message Date
mrg
ed15212269 myetheraddr(): don't lose badly when the clock hasn't been attached yet. 2000-06-09 05:27:40 +00:00
eeh
7539c8d1ce Turn on PCI MEM and DMA. 2000-06-08 23:03:17 +00:00
eeh
6c144faa4c Allow multiple drivers to share one interrupt vector. 2000-06-08 23:01:22 +00:00
eeh
1b31fdcbb7 Fix uninitialized variable bug. 2000-06-08 22:58:42 +00:00
eeh
1dfab2070a Override optimization for files that break gcc. 2000-06-08 21:25:18 +00:00
eeh
94ffeedb49 Allow for cacheable device maps (in case there's some RAM out there). 2000-06-08 17:59:32 +00:00
eeh
00e45ca869 Print all 64-bits of TTE data in db_pmap_kernel(). 2000-06-08 17:45:29 +00:00
eeh
6baca0c1ad Fixup signed/unsigned issues so 32-bit addresses are not sign extended. 2000-06-08 17:43:24 +00:00
eeh
860feb4e74 Fix ordering of sync operations depending on whether it's PRE- or POST-. 2000-06-08 17:41:46 +00:00
eeh
a273b333a3 Support large (>1 page) DVMA maps so UltraSPARC IIi will work. 2000-06-08 16:17:29 +00:00
eeh
08af61208e Fix DVMA base address calculations. 2000-06-08 15:23:44 +00:00
mrg
ee41ef7a04 ensure an ebus really does exist in ebus_match; fixes spurious attachments with the ebus on a hme pci card. 2000-06-08 06:52:25 +00:00
pk
9a8d03d6bd Add a couple of missing semi-colons. 2000-06-07 09:16:41 +00:00
soren
a9aa2abf94 defopt SYSCALL_DEBUG. 2000-06-06 18:52:30 +00:00
cgd
cffb580806 Implement the more flexiable `evcnt' interface as discussed (briefly) on
tech-kern and now documented in evcnt(9).
2000-06-04 19:14:14 +00:00
eeh
03228642f7 Use all 64 address bits in ld*a()/st*a() macros so physical device addresses
work.  (Also add some bus_space_*() debug hooks).
2000-06-02 22:56:32 +00:00
eeh
f2ab1eb70c db_stack_trace_cmd -> db_stack_trace_print 2000-06-02 15:38:32 +00:00
eeh
94084a33f8 New softintr interface. 2000-06-02 15:36:53 +00:00
cgd
47449a63d2 kill __P in these files. (I had to look at them anyway with an eye for
adding some protos... and adding them with __P seems wrong, but mixing
__P and not __P in the same file seems wrong too, so...)
2000-06-01 00:04:50 +00:00
thorpej
8c2d00aaeb Add a comment about needing to initialize p_cpu when multiple
processors are supported.
2000-05-31 05:09:14 +00:00
thorpej
e03e9e8086 Rather than starting init and creating kthreads by forking and then
doing a cpu_set_kpc(), just pass the entry point and argument all
the way down the fork path starting with fork1().  In order to
avoid special-casing the normal fork in every cpu_fork(), MI code
passes down child_return() and the child process pointer explicitly.

This fixes a race condition on multiprocessor systems; a CPU could
grab the newly created processes (which has been placed on a run queue)
before cpu_set_kpc() would be performed.
2000-05-28 05:48:59 +00:00
sommerfeld
40339b39f9 Reduce use of curproc in several places:
- Change ktrace interface to pass in the current process, rather than
p->p_tracep, since the various ktr* function need curproc anyway.

 - Add curproc as a parameter to mi_switch() since all callers had it
handy anyway.

 - Add a second proc argument for inferior() since callers all had
curproc handy.

Also, miscellaneous cleanups in ktrace:

 - ktrace now always uses file-based, rather than vnode-based I/O
(simplifies, increases type safety); eliminate KTRFLAG_FD & KTRFAC_FD.
Do non-blocking I/O, and yield a finite number of times when receiving
EWOULDBLOCK before giving up.

 - move code duplicated between sys_fktrace and sys_ktrace into ktrace_common.

 - simplify interface to ktrwrite()
2000-05-27 00:40:29 +00:00
eeh
907ed5fa81 Add `-D' flag to drop to the PROM before jumping to the kernel. 2000-05-26 22:59:51 +00:00
thorpej
a7d0570e67 First sweep at scheduler state cleanup. Collect MI scheduler
state into global and per-CPU scheduler state:

	- Global state: sched_qs (run queues), sched_whichqs (bitmap
	  of non-empty run queues), sched_slpque (sleep queues).
	  NOTE: These may collectively move into a struct schedstate
	  at some point in the future.

	- Per-CPU state, struct schedstate_percpu: spc_runtime
	  (time process on this CPU started running), spc_flags
	  (replaces struct proc's p_schedflags), and
	  spc_curpriority (usrpri of processes on this CPU).

	- Every platform must now supply a struct cpu_info and
	  a curcpu() macro.  Simplify existing cpu_info declarations
	  where appropriate.

	- All references to per-CPU scheduler state now made through
	  curcpu().  NOTE: this will likely be adjusted in the future
	  after further changes to struct proc are made.

Tested on i386 and Alpha.  Changes are mostly mechanical, but apologies
in advance if it doesn't compile on a particular platform.
2000-05-26 21:19:19 +00:00
thorpej
7d2fdbcb55 Don't set `runtime' here; it's done at the end of mi_switch().
cvS: ----------------------------------------------------------------------
2000-05-26 05:27:29 +00:00
jhawk
8e44b27348 Rename the machine-specific stack trace printing functions
from db_stack_trace_cmd() to db_stack_trace_print(),
and add an additional argument, a function pointer for an
output routine (i.e. printf() or db_printf()).

Add db_stack_trace_cmd() in db_command.[ch], calling
db_stack_trace_print() with db_printf() as the printer.

Move count==-1 special handling from db_stack_trace_print() [nee
db_stack_trace_cmd()] to db_stack_trace_cmd() [nascent here].

Again, I'm unable to test compilation on all affected platforms,
so advance apologies for potential brokenness.
2000-05-26 03:34:24 +00:00
thorpej
8964c35eca Introduce a new process state distinct from SRUN called SONPROC
which indicates that the process is actually running on a
processor.  Test against SONPROC as appropriate rather than
combinations of SRUN and curproc.  Update all context switch code
to properly set SONPROC when the process becomes the current
process on the CPU.
2000-05-26 00:36:42 +00:00
jhawk
f3528d725d Interface change: db_printsym() takes a third argument, pr, a function
pointer indicating how to print the symbol. This allows db_printsym()
to called in places where db_printf() is not an appropriate output
function.

While straightforward, apologies in advance if I've introduced any minor
syntax errors; I was unable to test compilation this on all the affected
platforms.
2000-05-25 19:57:30 +00:00
eeh
ca743bac9a Use the PCI function code to distinguish simba bus A from bus B instead
of the current hack.
2000-05-24 20:27:52 +00:00
eeh
c965d1deec If we have sparse PCI spaces we can run out of IO map space when mapping
PCI config space.  Since PCI config space is mostly used by PCI bus drivers,
we won't actually map it in.  Instead we use MMU bypass ASI accesses to read
and write PCI config space.
2000-05-24 20:24:58 +00:00
thorpej
1140468205 Use preempt(), not an open-coded equivalent (which won't be
equivalent for long).
2000-05-24 16:48:33 +00:00
eeh
8b4fa50a4d Need to be able to turn off pcons. 2000-05-23 05:11:28 +00:00
eeh
62d33e59ff Align things pessimistically so a 64-bit kernel will accept symbols from a 32-bit loader. 2000-05-22 19:15:33 +00:00
mrg
296eaaa36d add two new CPU_ISXXX versions: CPU_ISSUN4U, CPU_ISSUN4MOR4U 2000-05-22 02:35:23 +00:00
eeh
17c567f9de Oops. Seems like we do need this file to make pcons work. 2000-05-20 14:23:12 +00:00
thorpej
071aed40ac A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well.  This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
2000-05-19 18:54:22 +00:00
eeh
dd5143017a Use the new emergency fallback PROM console driver. 2000-05-19 05:28:47 +00:00
eeh
424619ca1a Fix the sparc64 console.
Unlike the other Sun machines, UltraSPARCs can have consoles run on different
chips than zs, so we need to support them.  So, here we go:

	Add a new PROM console driver with a major number and everything.
	This is the default driver if nothing else attaches.  It does not
	use the keyboard driver since the PROM translates keystrokes itself.
	(Unfortunately it also swallows L1-A).

	Have the keyboard driver take over the console when it attaches on a
	serial port.  When a serial port detects a keyboard and attaches the
	keyboard driver, it needs to provide a set of consdev vectors.  They
	keyboard driver will use those to send I/O to the keyboard and mouse.
2000-05-19 05:26:16 +00:00
mrg
4bd0bb352b this file has not been used for a long time. 2000-05-19 01:09:21 +00:00
mrg
0cd44feb0e fix if/ifdef mistake 2000-05-17 10:28:14 +00:00
mrg
20bc66f592 - add some psycho interrupt debugging stuff (#if 0'ed out)
- fix arguments passed in psycho_dmamap_load_raw()'s declaration, and
  what it passes to it's parent bus.
2000-05-17 10:17:01 +00:00
mrg
eee5e33e8a - in iommu_remove(), move len adjustment outside if statement, leaving
just one copy of this.
- remove duplicate setting of sgsize in iommu_dvmamap_load().
- fix DIAGNOSTIC check in iommu_dvmamap_load_raw() to panic() in unexpected
  conditions only (not normal ones), and also add an extra case.
2000-05-17 09:53:53 +00:00
mrg
53fa9da4df move zs_attach() to after the setting of the console device, to avoid
having cn_dev being 0 and thus cnopen() being called recursively.  this
fixes this problem for zs-based console's only.
2000-05-17 09:28:22 +00:00
mrg
651712a140 add a note about US IIi and PCI_INTERRUPT_LINE register 2000-05-17 09:25:58 +00:00
mrg
6dad37e26a expand a comment slightly. 2000-05-17 09:25:27 +00:00
mrg
f2a19f58b5 fix || vs. && bug, and clean up some cruft. 2000-05-17 09:16:44 +00:00
mrg
0eeab9735f fix another warning. 2000-05-17 09:12:10 +00:00
eeh
3b90b5c5c4 Add support for bus_dma_load_raw() so the le driver will work again. 2000-05-17 02:31:12 +00:00
thorpej
463931b3ba Nuke dk_establish() from orbit except from those ports which still use
it to determine the boot device: mvme68k, pc532, macppc, ofppc.  Those
platforms should be changed to use device_register().  In the mean time,
those ports defined __BROKEN_DK_ESTABLISH.
2000-05-16 05:45:44 +00:00
hubertf
9f48bba3ae Add "install" target, so "make install" after building the kernel
does something useful.  The target can be redefined by putting a
install-kernel-${MACHINE_NAME} target that fits your needs into
/etc/mk.conf.
2000-05-09 00:56:21 +00:00