Commit Graph

37 Commits

Author SHA1 Message Date
fvdl a33bcafdf1 Redirect some includes to x86/foo.h 2003-02-26 21:28:59 +00:00
fvdl 4bd73a650e Remove leftover declarations used for debugging purposes only. 2002-12-16 16:22:50 +00:00
fvdl a167f47c0c Since a CPU may spin waiting for another CPU to handle an IPI, an
IPI must be the very first thing to be handled in splx(), if it
had been blocked before. Change things around a bit to guarantee
this.
2002-12-11 12:02:07 +00:00
fvdl 8848e366f2 For softints, there's no intrframe on the stack, so don't try to use it.
Use a seperate lock function (in taking the same lock) instead.
2002-12-01 00:15:36 +00:00
fvdl 18ad7e80b6 Specify the interrupt frame as the argument to i386_int(un)lock. 2002-11-27 00:41:59 +00:00
fvdl e5a9ffde7a Remove "ioapic.h" include, and always include the intr_find_mpmapping
prototype; it's not worth the extra bytes to avoid including this.
2002-11-23 10:37:09 +00:00
fvdl 23fb62d8f1 Removed unused function. From kristerw. 2002-11-22 21:21:13 +00:00
fvdl ae4b76c8d3 New interrupt code. The basic idea behind it is to hide the differences
in interrupt controllers in struct pic, and try to keep as much
common code as possible. At the lowest (asm) level, this is done
with CPP macros.

The main structure is now struct intrsource, describing an established
interrupt line, of any kind (soft/hard local apic/legacy apic/IO apic).
For quick masking, there may be a maximum of 32 sources per CPU.
Sources can be assigned to any CPU in the MP case, though currently they
all go to the boot CPU.
2002-11-22 15:23:35 +00:00
fvdl 5fca9b943c Make splsched == splclock, and splserial > splsched. Unfortunately,
we have to retain the 'pick unlocked interrupt handler' hack for
the MP case for now.
2002-11-01 01:12:43 +00:00
fvdl 8cea44a52a Adapt i386_send_ipi prototype. Make spllock < splipi (IPI paths
changed to use __cpu_simple_lock because of LOCKDEBUG conflict).
2002-10-05 21:25:24 +00:00
matt be5fafec51 ANSI'fy the inline functions. 2002-10-01 19:08:51 +00:00
fvdl 26ab868e68 Merge Bill Sommerfeld's i386 MP branch. This code has some known
caveats, but works quite well in a lot of MP cases, and all
UP cases that I have tested. Parts of this will hopefully be
reworked in the not-too-distant future.
2002-10-01 12:56:36 +00:00
matt 075e474458 Eliminate commons. 2002-05-12 23:16:52 +00:00
yamt 7ae83a7557 use #define<TAB> style.
pointed by enami.
2001-12-18 15:21:13 +00:00
fvdl e922d091ba Prevent gcc from reordering things such that instructions may fall out
of a range which is protected by spl/splx. Originally proposed by
YAMAMOTO Takashi (yamt@netbsd.org) on tech-kern. This change mirrors
the one done by Bill Sommerfeld on the i386 mp branch.
2001-12-18 10:12:28 +00:00
thorpej 091e29f94f In i386_softintr_lock(), use splserial() rather than splhigh(),
because of splhigh() braindamage on the i386 port.

Fixes port-i386/13038 and port-i386/12985.
2001-07-16 16:53:00 +00:00
perry c8057dc287 remove needless externs in front of function prototypes 2001-05-21 04:47:35 +00:00
lukem b8f8cf0235 remove some lint, including ansifying some inlines 2001-04-30 01:17:30 +00:00
thorpej 8b3fc18a1f Generic soft interrupt implementation for NetBSD/i386. This could
probably be tuned somewhat, but this is a stop-gap measure to hold
us until Bill Sommerfeld's new interrupt code comes in from the
MP branch.
2001-04-14 06:49:30 +00:00
thorpej bf2dcec4f5 Remove the use of splimp() from the NetBSD kernel. splnet()
and only splnet() is allowed for the protection of data structures
used by network devices.
2001-04-13 23:29:55 +00:00
thorpej d85a75f583 Make sure everybody has an splvm() and equate it with splimp() (splimp()
is the historical name for this interrupt level, and the historical name
is going to go away in the near future).
2001-01-14 02:00:37 +00:00
thorpej 58e7a6954b Add spllock(). See spl(9) for details. 2000-08-22 19:46:26 +00:00
thorpej 23a7f255d4 Make sure we provide splsched() as described in spl(9). 2000-08-21 02:06:31 +00:00
cgd a11660da22 make spl-lowering functions return void. 2000-06-08 23:03:13 +00:00
mycroft 43a543fa88 Implement CLKF_INTR(), to count interrupt time separately. 2000-06-04 21:27:38 +00:00
thorpej eb20bbc780 Change the semantics of splsoftclock() to be like other spl*() functions,
that is priority is rasied.  Add a new spllowersoftclock() to provide the
atomic drop-to-softclock semantics that the old splsoftclock() provided,
and update calls accordingly.

This fixes a problem with using the "rnd" pseudo-device from within
interrupt context to extract random data (e.g. from within the softnet
interrupt) where doing so would incorrectly unblock interrupts (causing
all sorts of lossage).

XXX 4 platforms do not have priority-raising capability: newsmips, sparc,
XXX sparc64, and VAX.  This platforms still have this bug until their
XXX spl*() functions are fixed.
1999-08-05 18:08:08 +00:00
christos be52cd1738 Fix this properly, using gcc assembly syntax (thanks ws!) 1999-01-26 17:07:06 +00:00
christos 0339b8e4dd ifdef __ELF__ the softintr inline since we cannot use _C_LABEL to produce
a name. XXX: Is there a better way?
1999-01-26 14:22:23 +00:00
mycroft c9a799adf6 Assign my copyrights to TNF. 1998-08-15 04:57:50 +00:00
is 6054d626f9 Switching dev/ic/lpt.c to use spllpt() instead of spltty(). It doesn't use
tty structures, and on some machines (namely the DraCo internal lpt, and some
multi-i/o boards for Amigas and DraCos), tying spltty to the pretty high printer
interupt level would hurt serial performance.

On all affected ports but Amiga, spllpt() has been defined in machine/intr.h
to be spltty(), thus preserving old behaviour. Portmasters are encouraged to
change is, if they feel something else is better (e.g., one of its own were
possible).
1998-07-18 21:27:25 +00:00
mycroft 1963665c7e Add IPL_AUDIO. 1997-03-21 04:34:18 +00:00
mycroft b2038a332d Import interrupt priority changes from com patches:
* Make it a strict hierarchy.  (It was close anyway).
* Add `serial' and rename `softtty' to `softserial'.
* Make soft interrupts a bit less special-case.
1997-02-28 16:24:03 +00:00
mycroft b3d8a261b9 Make imask[] larger, to match other changes. 1996-05-13 06:11:28 +00:00
mycroft 635c72115c Add multiple-inclusion protection. 1996-05-13 01:35:06 +00:00
mycroft 417bb90896 Move spl*() and soft interrupt definitions into intr.h. For now, include it
from psl.h.  XXX Will change after release.
1996-05-13 01:28:01 +00:00
mycroft a8e2ce97e4 Implement IPL_HIGH. 1996-05-12 23:06:06 +00:00
mycroft 9f8f77f8f6 Move IPL_* and IST_* constants into intr.h. 1996-05-12 22:52:23 +00:00