Commit Graph

62 Commits

Author SHA1 Message Date
tsutsui
4a193f31ac Split device_t/softc with misc cosmetic changes. 2008-07-01 15:15:34 +00:00
tsutsui
5886a7c394 - avoid extra offset calculation in region/multi ops
- fix swapped dist/src in copy_region ops
2008-07-01 15:14:32 +00:00
tsutsui
aecc2565d0 Make cpu_intr_p() inline. 2008-06-22 17:33:41 +00:00
tsutsui
43a0e8e404 Unify splraiseipl(9) implementation among m68k ports as per
suggestion from isaki@ on port-m68k.

For sun68k (sun2, sun3 and sun3x):
- export ipl2psl_table[] and make it uint16_t
- make makeiplcookie(9) inline
- put PSL_S bit into ipl2psl_table[] rather than adding it in makeiplcookie(9)
2008-06-15 07:23:26 +00:00
martin
ce099b4099 Remove clause 3 and 4 from TNF licenses 2008-04-28 20:22:51 +00:00
tsutsui
d0ea2c0ffa Also account idepth in clock interrupt handlers
(which are registered directly by isr_add_custom())
and use the idepth value for CLKF_INTR().
2008-01-26 14:02:54 +00:00
tsutsui
2f66d76b2f Adapt sun68k ports to recent interrupt handling changes.
XXX: sun2 (m68010) doesn't have CAS instructions.
2007-12-04 15:12:07 +00:00
ad
4b293a84e1 Interrupt handling changes, in discussion since February:
- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.
2007-12-03 15:33:00 +00:00
ad
d37935697b Merge tty changes from the vmlocking branch. 2007-11-07 15:56:11 +00:00
garbled
d974db0ada Merge the ppcoea-renovation branch to HEAD.
This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree.  Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches.  The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
2007-10-17 19:52:51 +00:00
ad
9c6535a6de Add ci_cpuid where it's missing. 2007-08-04 09:49:51 +00:00
tsutsui
32b0b73c06 Move declarations of m68k common functions
from <machine/cpu.h> to <m68k/m68k.h>.
While here, remove some obsolete function decls.
2007-05-21 16:37:03 +00:00
tsutsui
9e69c7d7d9 Make netintr() static since it's referred only in sun68k/isr.c. 2007-05-21 16:25:14 +00:00
mhitch
9385473585 Add missing call to lwp_startup() in lwp_trampoline() (which was renamed
from proc_trampoline to match the other ports).

A DIAGNOSTIC kernel will now boot and run.  LOCKDEBUG still doesn't work yet.
Also, my amiga no longer loses time.
2007-05-20 04:29:47 +00:00
tsutsui
bd2911249c Adapt sun68k ports to yamt-idlelwp.
Tested on TME (sun2 and sun3) and 3/80 (sun3x).
2007-05-18 10:18:24 +00:00
tsutsui
48c4dc47d3 - use splraise4(), which is defined in psl.h
- use splraise6() rather than spl6() for splzs() and splserial()
2007-03-11 06:25:08 +00:00
thorpej
32a8b62d33 - Shrink ipl_cookie_t from 32-bits to 16-bits (large enough to hold
an SR value or an IPL_* constant).
- Take advange of the smaller ipl_cookie_t to shrink kmutex_t from
  16 bytes to 8 bytes by overlapping storage where possible.
- Implement a RAS-based _lock_cas() for mc68010 systems (Sun2).  See
  sun68k/sun68k/isr.c.

Tested on various m68k platforms, but NOT Sun2.  In any case, at least
Sun2 compiles now.
2007-03-11 05:22:24 +00:00
christos
53524e44ef Kill caddr_t; there will be some MI fallout, but it will be fixed shortly. 2007-03-04 05:59:00 +00:00
mrg
4410329b87 add a pair of new bus_dma(9) functions:
int _bus_dmatag_subregion(bus_dma_tag_t tag,
				  bus_addr_t min_addr,
				  bus_addr_t max_addr,
				  bus_dma_tag_t *newtag,
				  int flags)
	void _bus_dmatag_destroy(bus_dma_tag_t tag)

that allow a (normally broken/limited) device to restrict the bus address
range it can talk to.  this is used by bce(4) to limit DMA addresses to
1GB range, the maximum the chip can address.

all this is from Yorick Hardy <yhardy@uj.ac.za> with input from several
people on tech-kern.

XXX: bus_dma(9) needs an update still.
2007-02-21 20:41:23 +00:00
ad
3363855a4a Remove spllowersoftclock() and CLKF_BASEPRI(), and always dispatch callouts
via a soft interrupt. In the near future, softclock will be run from process
context.
2007-02-16 02:53:43 +00:00
ad
b07ec3fc38 Merge newlock2 to head. 2007-02-09 21:55:00 +00:00
tsutsui
a32a73741e Two fixes to avoid lost softintr (probably caused by some race condition):
- make sh_pending in struct softintr_handler volatile
- activate softintr unconditionally in softintr_schedule()
2007-01-23 16:03:43 +00:00
yamt
8bf7662829 merge yamt-splraiseipl branch.
- finish implementing splraiseipl (and makeiplcookie).
	  http://mail-index.NetBSD.org/tech-kern/2006/07/01/0000.html
	- complete workqueue(9) and fix its ipl problem, which is reported
	  to cause audio skipping.
	- fix netbt (at least compilation problems) for some ports.
	- fix PR/33218.
2006-12-21 15:55:21 +00:00
tsutsui
f2ea89d23a Minor cleanups before isr.c merge with sun3:
- include <m68k/cpu.h> rather than <m68k/m68k.h> in <sun68k/cpu.h>
- wrap M68K_VAC definition with #ifndef _SUN3X_ in <sun68k/cpu.h>
- move setsoftnet() macro from <sun68k/cpu.h> to <sun68k/intr.h>
- move declarations for isr_soft_request() and isr_soft_clear() from
  sun2/include/intr.h to <sun68k/intr.h>
- remove extern keyword from function declarations
2006-10-05 14:24:09 +00:00
tsutsui
c207dcd880 - change find_prom_map() to take paddr_t and return vaddr_t rather than
bus_space_handle_t since bus space handle without bus space tag looks weird
- replace old sun3 obio_find_mapping() with new common find_prom_map()
- add bus_space_vaddr(), from hp300
2006-10-03 13:02:32 +00:00
tsutsui
d23b794c9e First attempt at bus_space(9) support for sun3 with common sun68k/bus.c:
- make sun3 port use common sun68k files as much as possible
- add temporary options _SUN2_ in std.sun2 until sun3 can share all
  sun68k files (autoconf.c and isr.c are not yet)
- move sun68kvme declaration temporary as well from files.sun68k to files.sun2
- rename and move sun68k_find_prom_map() function to MD sources since it
  can't be shared with sun3
- add bus tag members to struct confargs and initilize them where appropriate

XXX1: MD bus_dma(9) backends are not implemented (yet).
XXX2: more code (obio etc.) should be shared among sun3, sun3x and sun2.
2006-10-01 03:53:27 +00:00
tsutsui
aa54c659e7 Move declarations of mainbus_dma_tag and mainbus_space_tag
to <sun68k/autoconf.h>.
2006-09-30 13:37:32 +00:00
tsutsui
32a61d5e54 Make sun68k/stand build without installed ${DESTDIR} files.
Currently "machine" symlink points sys/arch/sun68k/include,
but this means some <machine/foo.h> files are taken from
sys/arch/sun68k/include but others (i.e. files not in sun68k/include)
are taken from ${DESTDIR}/usr/include/machine.

Instead, make "machine" symlink point sys/arch/${MACHINE}/include,
make "sun68k" symlink point sys/arch/sun68k/include (not sys/arch/sun68k),
add sys/arch to include path, and move some files where appropriate.
2006-09-17 06:15:40 +00:00
tsutsui
75c544cd93 Workaround fix for a problem caused after IPL_* macro changes.
Based on a patch from mrg on port-sun2.
2006-08-07 23:29:38 +00:00
yamt
29b4acda94 implement splraiseipl() for sun2 and sun3. reviewed by Izumi Tsutsui. 2006-03-29 08:55:40 +00:00
perry
fbae48b901 Change "inline" back to "__inline" in .h files -- C99 is still too
new, and some apps compile things in C89 mode. C89 keywords stay.

As per core@.
2006-02-16 20:17:12 +00:00
christos
606bb2caed free -> dealloc
unsigned -> size_t for alloc/dealloc
2006-01-25 18:28:25 +00:00
perry
50a256a3a0 __asm__ -> __asm
__const__ -> const
__inline__ -> inline
__volatile__ -> volatile
2005-12-24 23:23:59 +00:00
perry
5f1c88d70d Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete. 2005-12-24 20:06:46 +00:00
christos
95e1ffb156 merge ktrace-lwp. 2005-12-11 12:16:03 +00:00
drochner
44bf0a7ee2 s/locdesc_t/int/g 2005-08-26 13:19:34 +00:00
drochner
996c273eda adaptions to config_search() change, and minor autoconf fixes, mostly from Havard Eidnes 2005-06-30 17:03:51 +00:00
thorpej
15adcb96b8 Move common Sun ID PROM definitions into <dev/sun/idprom.h>. 2005-06-19 20:00:28 +00:00
tsutsui
6df30aa4a7 Add const. 2005-06-03 22:02:30 +00:00
matt
a6db24a485 Add a dm_maxsegsz public member to bus_dmamap_t. This allows a user of the API
to select the maximum segment size for each bus_dmamap_load (up to the maxsegsz
supplied to bus_dmamap_create).  dm_maxsegsz is reset to the value supplied to
bus_dmamap_create when the dmamap is unloaded.
2005-03-09 19:04:43 +00:00
chs
fa924b7be7 move spl*() and IPL_* definitions from psl.h to intr.h. 2005-01-23 17:27:03 +00:00
chs
10b1a7be5e de-__P, remove register, ansify, b* -> mem*, u_int*_t -> uint*_t. 2005-01-22 15:36:09 +00:00
chs
267af995b7 use the generated macros in locators.h rather than hard-coded numbers
to index the cf_loc[] array.  reviewed by allen briggs.
2004-12-14 02:32:02 +00:00
yamt
d2fe4b34bb move some per-cpu data definitions to MI place so that they can be modified
without touching all ports.  discussed on tech-kern@.
2004-09-22 11:32:02 +00:00
jdolecek
089abdad44 Rearrange process exit path to avoid need to free resources from different
process context ('reaper').

From within the exiting process context:
* deactivate pmap and free vmspace while we can still block
* introduce MD cpu_lwp_free() - this cleans all MD-specific context (such
  as FPU state), and is the last potentially blocking operation;
  all of cpu_wait(), and most of cpu_exit(), is now folded into cpu_lwp_free()
* process is now immediatelly marked as zombie and made available for pickup
  by parent; the remaining last lwp continues the exit as fully detached
* MI (rather than MD) code bumps uvmexp.swtch, cpu_exit() is now same
  for both 'process' and 'lwp' exit

uvm_lwp_exit() is modified to never block; the u-area memory is now
always just linked to the list of available u-areas. Introduce (blocking)
uvm_uarea_drain(), which is called to release the excessive u-area memory;
this is called by parent within wait4(), or by pagedaemon on memory shortage.
uvm_uarea_free() is now private function within uvm_glue.c.

MD process/lwp exit code now always calls lwp_exit2() immediatelly after
switching away from the exiting lwp.

g/c now unneeded routines and variables, including the reaper kernel thread
2004-01-04 11:33:29 +00:00
cl
cebad0b338 make compile 2003-09-21 14:41:33 +00:00
agc
aad01611e7 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
2003-08-07 16:26:28 +00:00
fvdl
7dd7f8baa2 Handle 64bit DMA addresses on PCI for platforms that can (currently only
enabled on amd64). Add a dmat64 field to various PCI attach structures,
and pass it down where needed. Implement a simple new function called
pci_dma64_available(pa) to test if 64bit DMA addresses may be used.
This returns 1 iff _PCI_HAVE_DMA64 is defined in <machine/pci_machdep.h>,
and there is more than 4G of memory.
2003-06-15 23:08:53 +00:00
kent
cd7d9faeaf Introduce BUS_DMA_NOCACHE, and bus_dmamem_map() of i386 supports it. 2003-01-28 01:07:51 +00:00
thorpej
d2275d51e1 Merge the nathanw_sa branch. 2003-01-18 06:55:21 +00:00