Home | History | Annotate | Download | only in mac68k
History log of /src/sys/arch/mac68k/mac68k/intr.c
RevisionDateAuthorComments
 1.36  28-Feb-2024  thorpej Fix up the mac68k interrupt handlers to work with the new style common
clockframe layout and remove the CLOCK_FORMAT0 work-around. As a nice
side-effect, this also eliminates the super-sketchy stack unwinding used
by rtclock_intr to get at the interrupt stack frame.
 1.35  19-Jan-2024  thorpej Now that we've agreed on the name "intr_depth", let's agree on the type, too.
 1.34  19-Jan-2024  thorpej Consistently use "intr_depth" as the name of the interrupt depth counter
on m68k platforms.
 1.33  20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h> include.
 1.32  02-Apr-2021  rin For ports with __HAVE_LEGACY_INTRCNT, turn intrcnt[] and derived
variables into u_int, to match with kern/subr_evcnt.c.
 1.31  21-Jul-2020  rin branches: 1.31.2; 1.31.4;
For GCC8, do not omit frame pointer for intr_dispatch() and via1_intr()
(-fomit-frame-pointer is enabled for -O and higher for GCC8).

This is required by rtclock_intr() which unwinds stack frame of caller!

XXXXXX
We need to get rid of this hackest hack for rtclock_intr(). This problem
was discussed back in 2014:

http://mail-index.netbsd.org/port-mac68k/2014/08/15/msg000595.html
http://mail-index.netbsd.org/port-mac68k/2014/08/17/msg000600.html
http://mail-index.netbsd.org/port-mac68k/2014/08/17/msg000601.html

However, unfortunately, the problem has been left untouched until today.

The patch attached in the third message works around the problem. But,
it adds hard-coded magic numbers to intr_dispatch() and via1_intr().
For real fix, we should probably reconsider whole interrupt handling.

Anyway, now kernel compiled by GCC8 works fine as far as I can see.
 1.30  19-Feb-2019  mrg convert 'extern long intrnames' to 'extern char intrnames[MAX_INAME_LENGTH]'.
also, assert that MAX_INAME_LENGTH is not larger than eintrnames - intrnames.

fixes gcc 7's object size checker checks. tested by martin@.
 1.29  20-Dec-2010  matt branches: 1.29.60;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.28  19-Jun-2008  tsutsui branches: 1.28.18;
Unify splraiseipl(9) implementation among m68k ports as per
suggestion from isaki@ on port-m68k.

For mac68k:
- rename mac68k_ipls[] to common ipl2psl_table[]
- make makeiplcookie() return PSL bits via ipl2psl_table[]
rather than IPL_FOO indexes
 1.27  28-Apr-2008  martin branches: 1.27.2; 1.27.4;
Remove clause 3 and 4 from TNF licenses
 1.26  05-Dec-2007  tsutsui branches: 1.26.12; 1.26.14; 1.26.16;
Restore ipl settings for AV class Macs.
 1.25  03-Dec-2007  ad branches: 1.25.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.24  08-Mar-2007  tsutsui branches: 1.24.2; 1.24.18; 1.24.20; 1.24.26;
MI softintr(9)'fy.
Probably problematic, but LC630 is running at single user.
 1.23  27-Nov-2005  yamt branches: 1.23.26;
implement splraiseipl() for the following ports.
evbppc, evbmips, evbsh3, hp700, mac68k, vax, x68k.
 1.22  16-Jun-2005  jmc branches: 1.22.2; 1.22.8;
Shadowing and const fixes.
 1.21  05-Mar-2005  chs remove some more __P that I missed before.
 1.20  15-Jan-2005  chs branches: 1.20.2; 1.20.4;
de-__P, remove register, ansify, b* -> mem*.
 1.19  15-Jul-2003  lukem __KERNEL_RCSID()
 1.18  27-Sep-2002  provos branches: 1.18.6;
remove trailing \n in panic(). approved perry.
 1.17  12-Apr-2001  thorpej branches: 1.17.2; 1.17.8;
splimp -> splhigh for frobbing the netisr.
 1.16  05-Jul-2000  scottr branches: 1.16.2;
Revert a bit of the last change to make this compile again.
 1.15  02-Jul-2000  cgd Kwality control:
* put #includes of opt headers and headers to get protos used by
net/netisr_dispatch.h in net/netisr.h (if !defined(_LOCORE)) (rather than
in netisr_dispatch.h itself, and potentially nowhere, respectively).
* require netisr.h to be included before netisr_dispatch.h.
* minor additional cleanup of both netisr.h and netisr_dispatch.h.
* clean up uses to remove now-unnecessary header file inclusions, and
local prototypes of the fns.
* convert netisr dispatch implementations which didn't use
netisr_dispatch.h (pc532) to use it.
 1.14  29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.13  21-Feb-2000  erh Define the DONETISR macro and use netisr_dispatch.h. This is to cut down on code duplication and to standardize the available NETISRs across all ports.
 1.12  21-Feb-2000  scottr Correct some temporary confusion between the IOPs and the OSS: move
IOP init back to mac68k_init(). We'll deal with the OSS later.
 1.11  21-Feb-2000  scottr Explicitly include headers needed by iopreg.h
 1.10  21-Feb-2000  scottr Initialize VIA/IOP/PSC from intr_init().
 1.9  06-Nov-1999  scottr Change the behavior of spladb() so that it raises the IPL only
high enough to block ADB interrupts.
 1.8  28-Oct-1999  scottr Rearrange a little bit for consistency with spl(9); add splserial()
check to intr_computeipl().
 1.7  04-Aug-1999  thorpej branches: 1.7.2; 1.7.4; 1.7.6;
Use an array for PSL values, rather than individual shortwords, like
the hp300 port.
 1.6  28-Jun-1999  itojun - Call ip6intr if INET6 is defined.
- remove "need-flag" for mac68k esp driver, as it is not used in anywhere
and conflicts with IPsec ESP header.

This should be the only MD change in IPv6 support, except kernel config file.
Very sorry if you have any compilation problem with it (I believe it is okay).
If your favorite arch is not included in here, please add a
call to ip6intr() from softintr handle.
 1.5  28-Jun-1999  briggs Unfortunately, several changes that are intermingled:
- Add initial IOP support. ADB doesn't work yet for me, but it's here so
that others will be encouraged to work on it. ADB_HW_IOP basically
is configured as a NOP so that serial consoles will continue to work.
- Roll via1_intr and via2_intr into the intr.c scheme--this also required
changing rtclock_intr to grovel the stack differently so that hardclock
gets the right arguments and softclock() doesn't get all reentrant.
- Make via1 interrupts parallel to via2 interrupts--handlers get a pass-
through pointer and we can register handlers. Register via1 interrupt
with intr_establish()--normally level 1, level 6 for A/UX scheme.
- Use intr_establish() to set real via2 interrupt handler instead of the
hacked function pointer.
- Reorganize adb-direct interrupts so that a function call is removed.
- Implement A/UX interrupts for all Quadras right now. We may need to
special case some Quadras, but Linux folks are reporting success on
several models.
- Fix intrnames to be accurate for the normal, PSC, and A/UX interrupt
configurations.
 1.4  24-Mar-1999  mrg branches: 1.4.4; 1.4.6;
completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
 1.3  28-Feb-1999  scottr branches: 1.3.2;
Move all IPL setup to intr.c, and do some sanity checking.
 1.2  25-Aug-1998  scottr The return value from intr_dispatch() is no longer necessary.
 1.1  12-Aug-1998  scottr New framework for handling processor interrupts, derived in part from
the hp300 port.

- Interrupts 3-6 use this immediately. Interrupt 7 is a special case,
and the VIA interrupts (1 and 2) will be addressed when that code is
rototilled.

- Modify the zs front end to register with the appropriate interrupt
controller: through the PSC on the AV Quadras, and direct to
interrupt 4 on the rest. Arrange to have the appropriate zsc_softc
supplied to us at interrupt time.

- Modify the direct ADB driver (and its PowerManager cousin) to call
intr_dispatch(), rather than zshard(). XXX This is a kludge, but at
least limits the brokenness to the ADB drivers, now.

As a side effect, this should fix PR 5590. Thanks to Bill Studenmund for
correctly determining the cause of the problem reported there.
 1.3.2.3  09-Nov-1999  scottr Sync with main branch.
 1.3.2.2  01-Nov-1999  scottr Sync with main branch.
 1.3.2.1  16-May-1999  scottr Sync with main branch.
 1.4.6.2  30-Nov-1999  itojun bring in latest KAME (as of 19991130, KAME/NetBSD141) into kame branch
just for reference purposes.
This commit includes 1.4 -> 1.4.1 sync for kame branch.

The branch does not compile at all (due to the lack of ALTQ and some other
source code). Please do not try to modify the branch, this is just for
referenre purposes.

synchronization to latest KAME will take place on HEAD branch soon.
 1.4.6.1  28-Jun-1999  itojun KAME/NetBSD 1.4 SNAP kit, dated 19990628.

NOTE: this branch (kame) is used just for refernce. this may not compile
due to multiple reasons.
 1.4.4.1  01-Jul-1999  thorpej Sync w/ -current.
 1.7.6.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.7.4.1  15-Nov-1999  fvdl Sync with -current
 1.7.2.2  21-Apr-2001  bouyer Sync with HEAD
 1.7.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.16.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.17.8.2  18-Oct-2002  nathanw Catch up to -current.
 1.17.8.1  12-Apr-2001  nathanw file intr.c was added on branch nathanw_sa on 2002-10-18 02:38:22 +0000
 1.17.2.1  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.18.6.7  11-Dec-2005  christos Sync with head.
 1.18.6.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.18.6.5  08-Mar-2005  skrll Sync with HEAD.
 1.18.6.4  17-Jan-2005  skrll Sync with HEAD.
 1.18.6.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.18.6.2  18-Sep-2004  skrll Sync with HEAD.
 1.18.6.1  03-Aug-2004  skrll Sync with HEAD
 1.20.4.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.20.2.1  29-Apr-2005  kent sync with -current
 1.22.8.1  29-Nov-2005  yamt sync with head.
 1.22.2.3  07-Dec-2007  yamt sync with head
 1.22.2.2  03-Sep-2007  yamt sync with head.
 1.22.2.1  21-Jun-2006  yamt sync with head.
 1.23.26.1  12-Mar-2007  rmind Sync with HEAD.
 1.24.26.1  08-Dec-2007  mjf Sync with HEAD.
 1.24.20.1  09-Jan-2008  matt sync with HEAD
 1.24.18.1  09-Dec-2007  jmcneill Sync with HEAD.
 1.24.2.1  03-Dec-2007  ad Sync with HEAD.
 1.25.2.1  08-Dec-2007  ad Sync with head.
 1.26.16.2  04-May-2009  yamt sync with head.
 1.26.16.1  16-May-2008  yamt sync with head.
 1.26.14.1  18-May-2008  yamt sync with head.
 1.26.12.2  29-Jun-2008  mjf Sync with HEAD.
 1.26.12.1  02-Jun-2008  mjf Sync with HEAD.
 1.27.4.1  27-Jun-2008  simonb Sync with head.
 1.27.2.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.28.18.1  05-Mar-2011  rmind sync with head
 1.29.60.1  10-Jun-2019  christos Sync with HEAD
 1.31.4.1  03-Apr-2021  thorpej Sync with HEAD.
 1.31.2.1  03-Apr-2021  thorpej Sync with HEAD.

RSS XML Feed