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