Home | History | Annotate | Download | only in include
History log of /src/sys/arch/sun68k/include/intr.h
RevisionDateAuthorComments
 1.26  19-Jan-2024  thorpej Add _KERNEL guards around most of the definitions in these files.
 1.25  15-Jan-2024  thorpej G/C __HAVE_LEGACY_INTRCNT from the sun68k platforms.
 1.24  14-Jan-2024  thorpej Switch the sun68k platforms over to the common m68k interrupt dispatch code.
 1.23  14-Jan-2024  thorpej Don't bother with isr_add_custom(). It's just a thin wrapper around
vec_set_entry(), so just use vec_set_entry() directly.
 1.22  12-Jan-2024  thorpej Make getsr() an inline in <m68k/psl.h> and G/C all of the now-redudant
copies.
 1.21  11-Jul-2023  riastradh sun68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).
 1.20  22-Jun-2008  tsutsui branches: 1.20.114;
Make cpu_intr_p() inline.
 1.19  15-Jun-2008  tsutsui 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)
 1.18  26-Jan-2008  tsutsui branches: 1.18.6; 1.18.8; 1.18.10; 1.18.12; 1.18.14;
Also account idepth in clock interrupt handlers
(which are registered directly by isr_add_custom())
and use the idepth value for CLKF_INTR().
 1.17  04-Dec-2007  tsutsui Adapt sun68k ports to recent interrupt handling changes.

XXX: sun2 (m68010) doesn't have CAS instructions.
 1.16  03-Dec-2007  ad branches: 1.16.2;
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.
 1.15  07-Nov-2007  ad Merge tty changes from the vmlocking branch.
 1.14  11-Mar-2007  tsutsui branches: 1.14.16; 1.14.18; 1.14.22; 1.14.24;
- use splraise4(), which is defined in psl.h
- use splraise6() rather than spl6() for splzs() and splserial()
 1.13  11-Mar-2007  thorpej - 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.
 1.12  16-Feb-2007  ad branches: 1.12.2; 1.12.6;
Remove spllowersoftclock() and CLKF_BASEPRI(), and always dispatch callouts
via a soft interrupt. In the near future, softclock will be run from process
context.
 1.11  23-Jan-2007  tsutsui 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()
 1.10  21-Dec-2006  yamt 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.
 1.9  05-Oct-2006  tsutsui 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
 1.8  07-Aug-2006  tsutsui branches: 1.8.4; 1.8.6;
Workaround fix for a problem caused after IPL_* macro changes.
Based on a patch from mrg on port-sun2.
 1.7  29-Mar-2006  yamt implement splraiseipl() for sun2 and sun3. reviewed by Izumi Tsutsui.
 1.6  16-Feb-2006  perry branches: 1.6.2; 1.6.4; 1.6.6;
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@.
 1.5  24-Dec-2005  perry branches: 1.5.2; 1.5.4; 1.5.6;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.4  11-Dec-2005  christos merge ktrace-lwp.
 1.3  23-Jan-2005  chs branches: 1.3.8;
move spl*() and IPL_* definitions from psl.h to intr.h.
 1.2  22-Jan-2005  chs de-__P, remove register, ansify, b* -> mem*, u_int*_t -> uint*_t.
 1.1  14-Jun-2001  fredette branches: 1.1.8; 1.1.24; 1.1.32;
Added sources for the sun2 boot blocks and other
sun68k-ish code, all of which ought to eventually
be shared with the sun3.
 1.1.32.1  29-Apr-2005  kent sync with -current
 1.1.24.1  24-Jan-2005  skrll Sync with HEAD.
 1.1.8.2  14-Jun-2001  fredette Added sources for the sun2 boot blocks and other
sun68k-ish code, all of which ought to eventually
be shared with the sun3.
 1.1.8.1  14-Jun-2001  fredette file intr.h was added on branch nathanw_sa on 2001-06-14 12:57:12 +0000
 1.3.8.7  04-Feb-2008  yamt sync with head.
 1.3.8.6  07-Dec-2007  yamt sync with head
 1.3.8.5  15-Nov-2007  yamt sync with head.
 1.3.8.4  03-Sep-2007  yamt sync with head.
 1.3.8.3  26-Feb-2007  yamt sync with head.
 1.3.8.2  30-Dec-2006  yamt sync with head.
 1.3.8.1  21-Jun-2006  yamt sync with head.
 1.5.6.1  22-Apr-2006  simonb Sync with head.
 1.5.4.1  09-Sep-2006  rpaulo sync with head
 1.5.2.1  18-Feb-2006  yamt sync with head.
 1.6.6.1  31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.6.4.1  19-Apr-2006  elad sync with head - hopefully this will work
 1.6.2.2  11-Aug-2006  yamt sync with head
 1.6.2.1  01-Apr-2006  yamt sync with head.
 1.8.6.4  23-Oct-2006  yamt add splsoftserial and splserial.
 1.8.6.3  06-Oct-2006  tsutsui Sync files of recent sun3 and sun68k merge and intersil7170(4) changes
with HEAD to build sun3 kernel on this branch.
 1.8.6.2  19-Sep-2006  yamt implement new api for sun2.
 1.8.6.1  19-Sep-2006  yamt revert old version of splraiseipl().
 1.8.4.3  01-Feb-2007  ad Sync with head.
 1.8.4.2  12-Jan-2007  ad Sync with head.
 1.8.4.1  18-Nov-2006  ad Sync with head.
 1.12.6.2  03-Dec-2007  ad Sync with HEAD.
 1.12.6.1  13-Mar-2007  ad Sync with head.
 1.12.2.1  12-Mar-2007  rmind Sync with HEAD.
 1.14.24.3  18-Feb-2008  mjf Sync with HEAD.
 1.14.24.2  08-Dec-2007  mjf Sync with HEAD.
 1.14.24.1  19-Nov-2007  mjf Sync with HEAD.
 1.14.22.1  13-Nov-2007  bouyer Sync with HEAD
 1.14.18.3  23-Mar-2008  matt sync with HEAD
 1.14.18.2  09-Jan-2008  matt sync with HEAD
 1.14.18.1  08-Nov-2007  matt sync with -HEAD
 1.14.16.2  09-Dec-2007  jmcneill Sync with HEAD.
 1.14.16.1  11-Nov-2007  joerg Sync with HEAD.
 1.16.2.1  08-Dec-2007  ad Sync with head.
 1.18.14.2  27-Jun-2008  simonb Sync with head.
 1.18.14.1  18-Jun-2008  simonb Sync with head.
 1.18.12.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.18.10.1  04-May-2009  yamt sync with head.
 1.18.8.1  17-Jun-2008  yamt sync with head.
 1.18.6.1  29-Jun-2008  mjf Sync with HEAD.
 1.20.114.1  09-Aug-2023  martin Pull up following revision(s) (requested by maya in ticket #316):

sys/arch/m68k/include/mutex.h: revision 1.13
sys/arch/arm/include/cpu.h: revision 1.125
sys/arch/sun68k/include/intr.h: revision 1.21
sys/arch/arm/include/mutex.h: revision 1.28
sys/sys/rwlock.h: revision 1.18
sys/arch/powerpc/include/mutex.h: revision 1.7
sys/arch/arm/include/mutex.h: revision 1.29
sys/arch/powerpc/include/mutex.h: revision 1.8
sys/uvm/uvm_param.h: revision 1.42
sys/sys/ksem.h: revision 1.16
sys/arch/x86/include/mutex.h: revision 1.10
sys/sys/proc.h: revision 1.372
sys/sys/ksem.h: revision 1.17
sys/arch/ia64/include/mutex.h: revision 1.8
sys/arch/evbarm/include/intr.h: revision 1.29
sys/sys/lua.h: revision 1.9
sys/arch/next68k/include/intr.h: revision 1.23
sys/arch/ia64/include/mutex.h: revision 1.9
sys/arch/hp300/include/intr.h: revision 1.35
sys/arch/hp300/include/intr.h: revision 1.36
sys/arch/sparc/include/cpu.h: revision 1.111
sys/arch/hppa/include/mutex.h: revision 1.16
sys/arch/vax/include/intr.h: revision 1.31
sys/arch/hppa/include/mutex.h: revision 1.17
sys/arch/news68k/include/intr.h: revision 1.28
sys/arch/hppa/include/mutex.h: revision 1.18
sys/arch/hppa/include/intr.h: revision 1.3
sys/arch/hppa/include/mutex.h: revision 1.19
sys/arch/hppa/include/intr.h: revision 1.4
sys/sys/sched.h: revision 1.92
sys/opencrypto/cryptodev.h: revision 1.51
sys/arch/vax/include/mutex.h: revision 1.20
sys/arch/sparc64/include/mutex.h: revision 1.10
sys/arch/ia64/include/sapicvar.h: revision 1.2
sys/arch/riscv/include/mutex.h: revision 1.5
sys/arch/amiga/dev/grfabs_cc.c: revision 1.39
sys/external/bsd/drm2/include/linux/idr.h: revision 1.11
sys/arch/riscv/include/mutex.h: revision 1.6
sys/ddb/files.ddb: revision 1.16
sys/arch/mac68k/include/intr.h: revision 1.32
share/man/man4/ddb.4: revision 1.203
sys/ddb/db_command.c: revision 1.183
sys/arch/mips/include/mutex.h: revision 1.10
sys/ddb/db_command.c: revision 1.184
sys/arch/x68k/include/intr.h: revision 1.22
sys/arch/sparc/include/psl.h: revision 1.51
sys/arch/or1k/include/mutex.h: revision 1.4
sys/arch/mips/include/mutex.h: revision 1.11
sys/arch/arm/xscale/pxa2x0_intr.h: revision 1.16
sys/arch/sparc64/include/cpu.h: revision 1.134
sys/arch/sparc/include/psl.h: revision 1.52
sys/arch/or1k/include/mutex.h: revision 1.5
sys/arch/mvme68k/include/intr.h: revision 1.22
sys/arch/luna68k/include/intr.h: revision 1.16
external/cddl/osnet/sys/sys/kcondvar.h: revision 1.6
sys/arch/sparc/include/mutex.h: revision 1.12
sys/arch/sparc/include/mutex.h: revision 1.13
sys/arch/usermode/include/mutex.h: revision 1.5
sys/arch/usermode/include/mutex.h: revision 1.6
sys/kern/kern_core.c: revision 1.38
usr.sbin/crash/Makefile: revision 1.49
sys/arch/amiga/include/intr.h: revision 1.23
sys/arch/alpha/include/mutex.h: revision 1.12
sys/arch/alpha/include/mutex.h: revision 1.13
sys/arch/evbarm/lubbock/sacc_obio.c: revision 1.16
sys/ddb/ddb.h: revision 1.6
sys/arch/sparc64/include/mutex.h: revision 1.8
sys/arch/sh3/include/mutex.h: revision 1.12
sys/arch/evbarm/lubbock/sacc_obio.c: revision 1.17
sys/ddb/db_syncobj.c: revision 1.1
sys/arch/vax/include/mutex.h: revision 1.18
sys/arch/sparc64/include/psl.h: revision 1.63
sys/arch/sparc64/include/mutex.h: revision 1.9
sys/arch/sh3/include/mutex.h: revision 1.13
sys/arch/evbarm/lubbock/obio.c: revision 1.13
sys/arch/atari/include/intr.h: revision 1.23
sys/ddb/db_syncobj.c: revision 1.2
sys/arch/vax/include/mutex.h: revision 1.19
sys/arch/evbarm/g42xxeb/obio.c: revision 1.14
sys/arch/evbarm/g42xxeb/obio.c: revision 1.15
sys/arch/cesfic/include/intr.h: revision 1.14
sys/ddb/db_syncobj.h: revision 1.1
sys/arch/x86/include/cpu.h: revision 1.134
sys/arch/evbarm/g42xxeb/obio.c: revision 1.16
sys/arch/cesfic/include/intr.h: revision 1.15
sys/arch/arm/xscale/pxa2x0_intr.c: revision 1.26
sys/sys/cpu_data.h: revision 1.54
sys/arch/m68k/include/mutex.h: revision 1.12
sys/arch/ia64/acpi/madt.c: revision 1.6

sys/rwlock.h: Make this more self-contained for bool.

machine/mutex.h: Sprinkle includes so this can be used by crash(8).

ddb: New `show all tstiles' command.
Shows who's waiting for which locks and what the owner is up to.

Include psl.h for ipl_cookie_t if __MUTEX_PRIVATE

sys: Rip <sys/resourcevar.h> out of <uvm/uvm_param.h>.

And thus out of <sys/param.h>, which is exceedingly overused and
fragile and delenda est.

Should fix (some) issues with the recent inclusion of machine/lock.h
in various machine/mutex.h files.

arm/mutex.h: Need machine/intr.h, machine/lock.h.

For ipl_cookie_t and __cpu_simple_lock_t.
evbarm/intr.h: Define ipl_cookie_t before including ARM_INTR_IMPL.

Otherwise arm/mutex.h doesn't work, due to a cyclic dependency which
should really be fixed.
opencrypto/cryptodev.h: Fix includes.
- Move sys/condvar.h under #ifdef _KERNEL.
- Add some other necessary includes and forward declarations.
- Sort.

hp300/intr.h: Fix missing includes.
linux/idr.h: Need <sys/mutex.h> for kmutex_t.
amiga/intr.h: Don't define spl*() functions if !_KERNEL.

This is used by crash(8) now, and what's important is ipl_cookie_t.
cesfic/intr.h: Expose ipl_cookie_t to userland for crash(8).
cesfic/intr.h: Expose ipl_cookie_t to userland only with _KMEMUSER.

Probably not necessary but let's be a little more cautious about
this.

atari/intr.h: Expose ipl_cookie_t with _KMEMUSER for crash(8).

arm/cpu.h: Need sys/param.h for COHERENCY_UNIT.

Nix machine/param.h -- not meant to be used directly, pulled in by
sys/param.h.

Move the definition of ipl_cookie_t out of the kernel-only sections,
some _KMEMUSER applications need it.

ddb: Cast pointer to uintptr_t first before db_expr_t.

hppa/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

luna68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

mvme68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

news68k/intr.h: Fix includes. Put some definitions under _KERNEL.

next68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

sys/ksem.h: Hack around fstat(8) abuse of _KERNEL.

sun68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

vax/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

x68k/intr.h: Put functions under _KERNEL so crash(8) can use this.

Make ipl_cookie_t visible for _KMEMUSER userland applications.

fix editor mishap in previous

Explicitly include <sys/mutex.h> for kmutex_t.

Replace kmutex_t * (which may be undefined here) with struct kmutex *,
suggested by Taylor.

hp300/intr.h: Put most of this under #ifdef _KERNEL.
Only ipl_cookie_t really needs to be exposed now, for crash(8).

mac68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).
Make inclusion of sys/intr.h explicit for spl*.

fix hppa and vax builds.

machine/lock.h isn't necessary for __cpu_simple_lock_t, it's in
sys/types.h. avoids cpu_data.h vs sched.h include order issues.

move the hppa ipl_t typedef with the moved usage of it.
machine/mutex.h: Sprinkle sys/types.h, omit machine/lock.h.

Turns out machine/lock.h is not needed for __cpu_simple_lock_t, which
always comes from sys/types.h. And, really, sys/types.h (or at least
sys/stdint.h) is needed for uintN_t and uintptr_t.

ddb: Cast pointer to uintptr_t, then to db_expr_t.
Avoids warnings about conversion between pointer and integer of
different size on some architectures.

re-fix hppa builds.

this file uses __cpu_simple_lock(), not just the underlying type,
so it does need machine/lock.h.

Break cycle by using `struct kmutex *' instead of `kmutex_t *'.
sys/sched.h included sys/mutex.h
which includes sys/intr.h
which includes machine/intr.h
which on cats includes arm/footbridge/footbridge_intr.h
which includes arm/cpu.h
which includes sys/cpu_data.h
which includes sys/sched.h

But there was never any real need for sys/mutex.h in sys/sched.h,
because it only uses pointers to the opaque struct kmutex. Cycle
broken by using `struct kmutex *' instead of pulling in sys/mutex.h
for the definition of kmutex_t.

Side effect: This revealed that sys/cpu_data.h needed sys/intr.h
(which was pulled in accidentally by sys/mutex.h via sys/sched.h) for
SOFTINT_COUNT. Also revealed some other machine/cpu.h header files
were missing includes of sys/mutex.h for kmutex_t.

ia64: Need sys/types.h for u_int, vaddr_t; sys/mutex.h for kmutex_t.

explicitly include no longer implicitly included sys/mutex.h.

arm/xscale: Use sys/bitops.h fls32 - 1 instead of 31 - __builtin_clz.
Sidesteps namespace collision with `#define bits ...' in net/zlib.c.

complete the previous - there were two calls to find_first_bit() to fix.

arm/xscale: Missed a spot with previous find_first_bit commit.

evbarm/g42xxeb: Fix off-by-one in previous.

The original find_first_bit(x) was 31 - __builtin_clz((uint32_t)x),
which is equivalent to fls32(x) - 1, not to fls32(x).

Note that fls32 is 1-based and returns 0 for x=0.

RSS XML Feed