Home | History | Annotate | Download | only in include
History log of /src/sys/arch/mips/include/intr.h
RevisionDateAuthorComments
 1.13  16-Feb-2021  simonb Add no-profiled attribute for splhigh_noprof() and splx_noprof().
 1.12  17-Aug-2020  skrll branches: 1.12.2;
Disable __HAVE_PREEMPTION. It is currently marked

#if defined(MULTIPROCESSOR) && defined(__HAVE_FAST_SOFTINTS)

but has no chance of working on OCTEON due to at least the spl functions
 1.11  26-Jul-2020  simonb #define<tab>
Nuke trailing whitespace.
 1.10  06-Jun-2015  matt Add a IPI for watchdogs.
 1.9  01-Jun-2015  matt Rework cavium support in preparation for MULTIPROCESSOR support
 1.8  19-May-2014  rmind branches: 1.8.4;
Implement MI IPI interface with cross-call support.
 1.7  11-Mar-2012  mrg branches: 1.7.2; 1.7.12;
normalise RCSID handling some.
 1.6  03-Mar-2012  matt define IPL_SAFEPRI which will be used by kern_synch.c to initialize safepri.
 1.5  02-May-2011  matt branches: 1.5.4; 1.5.8;
Add an IPI for xcalls.
 1.4  20-Feb-2011  matt Major merge forward from matt-nb5-mips64.
New fixup code.
New common SPL code.
New common interrupt code.
Move related variables into structures.
Cleanup locore (move MD variable into it).
Kill StudlyCaps
Use PCU for FPU
 1.3  11-Apr-2000  nisimura branches: 1.3.96; 1.3.98; 1.3.104; 1.3.106;
Introduce cpu_intr() whose body is now provided by target ports in
their own ways. Ugly fixup #define in machine/intr.h have gone.
mips_hardware_intr global variable patch work has gone.
 1.2  28-Mar-2000  simonb Don't `extern' function declarations. While we're there, remove trailing
blank lines and white space.
 1.1  26-Mar-1998  jonathan branches: 1.1.16;
* Create /sys/arch/mips/include/intr.h, with extern declaration of
interrupt-callout vector from mips locore dispatch code to port code.
* Move branch-emulation declaration to mips/include/trap.h.
* Garbage-collect pmax/pmax/trap.h.
Not needed now pmax/pmax_trap.c is gone, and after above tidy-up.
 1.1.16.1  20-Nov-2000  bouyer Remove files that are no longer on the trunck
 1.3.106.1  05-Mar-2011  bouyer Sync with HEAD
 1.3.104.1  06-Jun-2011  jruoho Sync with HEAD.
 1.3.98.2  31-May-2011  rmind sync with head
 1.3.98.1  05-Mar-2011  rmind sync with head
 1.3.96.18  19-Jan-2012  matt When running an N32 kernel, run it with 64-bit addresses even though the
kernel itself will only use 32-bit addresses. There are exceptions.
bus_space_handles are now register_t instead of intptr_t. This allows them
to contain XKPHYS addresses. Now bus_space can use XKPHYS addresses and
not required non-KSEG1 devices to be mapped in KSEG2 thereby leaving more
KSEG2 space for the kernel to use.

The cache range routines (but not index routines) now take a register_t
instead of vaddr_t so they can too take a XKPHYS address. This allows the
pmap to use a page's XKPHYS address to clean sync the icache thereby avoiding
massive icache invalidations.

Since "cache" instruction effects are global to all CPUs and their caches, we
can use the above to greatly simplify MP page isyncs. If using an O32 kernel
with pages outside KSEG0, index ops still need to be performed since there
isn't an a quick way of mapping the page.
 1.3.96.17  31-Dec-2011  matt Add IST_EDGE_RISING and IST_EDGE_FALLING.
 1.3.96.16  05-Feb-2011  cliff - protect option includes ("opt_multiprocessor.h") with #ifdef _KERNEL_OPT
 1.3.96.15  05-Feb-2011  cliff - include opt_multiprocessor.h for MULTIPROCESSOR dependency
- add IPI tag defines for SUSPEND, HALT, and bump NIPIS
 1.3.96.14  22-Dec-2010  matt Cleanup definition of __HAVE_PREEMPTION
 1.3.96.13  09-Jun-2010  matt Add a _IPL_NAMES(pfx) which is a list of strings corresponding to the
IPL names.
 1.3.96.12  16-May-2010  matt Add IPL_DDB. This is needed for watchdog on sbmips and for IPIs used by DDB.
It's above IPL_SCHED but below IPL_HIGH.
 1.3.96.11  15-May-2010  matt Make sure we have a spare cell at the sr_map to make splintr will stop.
 1.3.96.10  24-Mar-2010  cliff - add IPI_AST variant of IPI_NOP to allow seperate event counting
 1.3.96.9  21-Mar-2010  cliff - if __INTR_PRIVATE is not defined, declare (but do not define) struct splsw
 1.3.96.8  11-Mar-2010  matt s/IPI_ISYNC/IPI_SYNCICACHE/
 1.3.96.7  28-Feb-2010  matt Split FPU support into separate file and keep internals private to that file.
Make it MPSAFE. Change interface to be very similar to what's used on other
architectures.
Add l_md.md_fpcpu to mdlwp (needed for MPSAFE)
Move pridtab from <mips/cpu.h> to <mips/locore.h>
Add initial common IPI dispatcher.
Split cpu_* routines from mips_machdep.c into cpu_subr.c
Add cpu_startup_common which has the code replicated in half-dozen
plus machdep.c files.
 1.3.96.6  28-Feb-2010  matt Now that we use stubs for the spl* calls, we no longer need to export
struct splsw or struct ipl_sr_map to the world. So we protect those with
__INTR_PRIVATE.
 1.3.96.5  23-Feb-2010  matt Instead of a read-only ipl_sr_bits, define a ipl_sr_map struct and fill that
in the interrupt init routine. There's a default ipl_sr_map will operate
correctly, but isn't performant.
 1.3.96.4  22-Feb-2010  matt Add initial list of IPIs for MIPS SMP.
 1.3.96.3  16-Feb-2010  matt Add __HAVE_PREEMPTION support for NetBSD/mips. Kill IPL_PREEMPT since it
isn't needed.
 1.3.96.2  15-Feb-2010  matt Completely redo how interrupts and SPL are handled in NetBSD/mips.
[XXX locore_mips1.S still needs to adapted.]

Nested interrupts now work. Except for MIPS_SOFT_MASK and MIPS_SR_INT_IE,
how interrupts work is completely abstracted. spl is handled through the
mips_splsw table. Direct manipulation of the status register is no longer
done (except for MIPS_SR_INT_IE). A new <mips/intr.h> contains the common
IPL/IST/spl* definitions for all ports.

Interrupt delivery is completely different. Clock interrupts may interrupt
device interrupts. ci_idepth is now handled by the caller of cpu_intr as
are softints (both can be optimized/simplified in the case of interrupts of
usermode code). cpu_intr has new arguments and now get called at IPL_HIGH
with MIPS_SR_INT_IE set and its logic is:

void
cpu_intr(int ppl, vaddr_t pc, uint32_t status)
{
int ipl;
uint32_t pending;
while (ppl < (ipl = splintr(&pending))) {
splx(ipl); /* enable interrupts */
<handle pending interrupts>
(void)splhigh(); /* disable interrupts */
}
}

mipsX_subr.S has been reworked. All user handlers (user_intr, systemcall,
user_gen_exception) now use common return to usermode code in lwp_trampoline.
ast() has changed to void ast(void) since the previous pc argument was never
used.

The playstation IPL_ICU_MASK support has been nuked.
MIPS_DYNAMIC_STATUS_MASK may soon be nuked soon.

A bunch of debugging code was left conditionalized by PARANOIA. If this
code detects a bug, it will enter an infinite loop. It is expected that
the kernel will be debugged in a simulator or with a hardware debugger so
that the state at that point can be analyzed.
 1.3.96.1  11-Apr-2000  matt file intr.h was added on branch matt-nb5-mips64 on 2010-02-15 07:36:03 +0000
 1.5.8.3  06-Mar-2012  mrg sync to -current
 1.5.8.2  06-Mar-2012  mrg sync to -current
 1.5.8.1  04-Mar-2012  mrg sync to latest -current.
 1.5.4.1  17-Apr-2012  yamt sync with head
 1.7.12.1  10-Aug-2014  tls Rebase.
 1.7.2.2  03-Dec-2017  jdolecek update from HEAD
 1.7.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.8.4.1  06-Jun-2015  skrll Sync with HEAD
 1.12.2.1  03-Apr-2021  thorpej Sync with HEAD.

RSS XML Feed