Module Name: src
Committed By: thorpej
Date: Thu Jan 18 13:46:14 UTC 2024
Modified Files:
src/sys/arch/next68k/conf: files.next68k
src/sys/arch/next68k/include: cpu.h intr.h types.h vectors.h
Log Message:
Switch next68k over to common interrupt dispatch and G/C __HAVE_LEGACY_INTRCNT.
Also included is G/C of the old ssir stuff that's no longer used.
To generate a diff of this commit:
cvs rdiff -u -r1.44 -r1.45 src/sys/arch/next68k/conf/files.next68k
cvs rdiff -u -r1.54 -r1.55 src/sys/arch/next68k/include/cpu.h
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/next68k/include/intr.h
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/next68k/include/types.h
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/next68k/include/vectors.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/next68k/conf/files.next68k
diff -u src/sys/arch/next68k/conf/files.next68k:1.44 src/sys/arch/next68k/conf/files.next68k:1.45
--- src/sys/arch/next68k/conf/files.next68k:1.44 Sat Jan 13 21:40:53 2024
+++ src/sys/arch/next68k/conf/files.next68k Thu Jan 18 13:46:14 2024
@@ -1,4 +1,4 @@
-# $NetBSD: files.next68k,v 1.44 2024/01/13 21:40:53 thorpej Exp $
+# $NetBSD: files.next68k,v 1.45 2024/01/18 13:46:14 thorpej Exp $
# next68k-specific configuration info
@@ -35,6 +35,8 @@ file arch/next68k/dev/zs_kgdb.c kgdb
file arch/m68k/m68k/cacheops.c
file arch/m68k/m68k/db_memrw.c ddb | kgdb
file arch/m68k/m68k/kgdb_machdep.c kgdb
+file arch/m68k/m68k/m68k_intr.c
+file arch/m68k/m68k/m68k_intr_stubs.s
file arch/m68k/m68k/m68k_trap.c
file arch/m68k/m68k/mmu_subr.s
file arch/m68k/m68k/pmap_motorola.c
@@ -50,7 +52,6 @@ file arch/next68k/next68k/pmap_bootstrap
file arch/next68k/next68k/machdep.c
file arch/next68k/next68k/clock.c
file arch/next68k/next68k/conf.c
-file arch/next68k/next68k/isr.c
file arch/next68k/next68k/autoconf.c
file arch/next68k/next68k/mainbus.c
file arch/next68k/next68k/nextrom.c
Index: src/sys/arch/next68k/include/cpu.h
diff -u src/sys/arch/next68k/include/cpu.h:1.54 src/sys/arch/next68k/include/cpu.h:1.55
--- src/sys/arch/next68k/include/cpu.h:1.54 Sat Jan 13 21:40:54 2024
+++ src/sys/arch/next68k/include/cpu.h Thu Jan 18 13:46:14 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.54 2024/01/13 21:40:54 thorpej Exp $ */
+/* $NetBSD: cpu.h,v 1.55 2024/01/18 13:46:14 thorpej Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -65,17 +65,17 @@
/*
* Arguments to hardclock and gatherstats encapsulate the previous
* machine state in an opaque clockframe. On the next68k, we use
- * what the hardware pushes on an interrupt (frame format 0).
+ * what the locore.s glue puts on the stack before calling C-code.
*/
struct clockframe {
- u_short sr; /* sr at time of interrupt */
- u_long pc; /* pc at time of interrupt */
- u_short fmt:4,
- vec:12; /* vector offset (4-word frame) */
+ u_int cf_regs[4]; /* d0,d1,a0,a1 */
+ u_short cf_sr; /* sr at time of interrupt */
+ u_long cf_pc; /* pc at time of interrupt */
+ u_short cf_vo; /* vector offset (4-word frame) */
} __attribute__((packed));
-#define CLKF_USERMODE(framep) (((framep)->sr & PSL_S) == 0)
-#define CLKF_PC(framep) ((framep)->pc)
+#define CLKF_USERMODE(framep) (((framep)->cf_sr & PSL_S) == 0)
+#define CLKF_PC(framep) ((framep)->cf_pc)
/*
* The clock interrupt handler can determine if it's a nested
@@ -83,8 +83,7 @@ struct clockframe {
* (Remember, the clock interrupt handler itself will cause the
* depth counter to be incremented).
*/
-extern volatile unsigned int interrupt_depth;
-#define CLKF_INTR(framep) (interrupt_depth > 1)
+#define CLKF_INTR(framep) (idepth > 1)
/*
* Preempt the current process if in interrupt from user mode,
Index: src/sys/arch/next68k/include/intr.h
diff -u src/sys/arch/next68k/include/intr.h:1.23 src/sys/arch/next68k/include/intr.h:1.24
--- src/sys/arch/next68k/include/intr.h:1.23 Tue Jul 11 11:13:32 2023
+++ src/sys/arch/next68k/include/intr.h Thu Jan 18 13:46:14 2024
@@ -1,10 +1,12 @@
-/* $NetBSD: intr.h,v 1.23 2023/07/11 11:13:32 riastradh Exp $ */
+/* $NetBSD: intr.h,v 1.24 2024/01/18 13:46:14 thorpej Exp $ */
-/*
- * Copyright (C) 1997 Scott Reynolds
- * Copyright (C) 1998 Darrin Jewell
+/*-
+ * Copyright (c) 2024 The NetBSD Foundation, Inc.
* All rights reserved.
*
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -13,93 +15,45 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
*
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _NEXT68K_INTR_H_
#define _NEXT68K_INTR_H_
-#include <machine/psl.h>
-
-/* Probably want to dealwith IPL's here @@@ */
-
-#if defined(_KERNEL) || defined(_KMEMUSER)
-typedef struct {
- uint16_t _psl;
-} ipl_cookie_t;
-#endif
-
-#ifdef _KERNEL
-
-/* spl0 requires checking for software interrupts */
-
-/* watch out for side effects */
-#define splx(s) ((s) & PSL_IPL ? _spl(s) : spl0())
-
-#define splsoftbio() splraise1()
-#define splsoftnet() splraise1()
-#define splsoftclock() splraise1()
-#define splsoftserial() splraise1()
-#define splvm() splraise6()
-#define splhigh() spl7()
-#define splsched() spl7()
+#include <m68k/psl.h>
-#define spldma() splraise6()
+#define MACHINE_PSL_IPL_SOFTCLOCK PSL_IPL1
+#define MACHINE_PSL_IPL_SOFTBIO PSL_IPL1
+#define MACHINE_PSL_IPL_SOFTNET PSL_IPL1
+#define MACHINE_PSL_IPL_SOFTSERIAL PSL_IPL1
+#define MACHINE_PSL_IPL_VM PSL_IPL6
+#define MACHINE_PSL_IPL_SCHED PSL_IPL7
-/****************************************************************/
+#include <m68k/intr.h>
-#define IPL_NONE 0
-#define IPL_SOFTCLOCK 1
-#define IPL_SOFTBIO 2
-#define IPL_SOFTNET 3
-#define IPL_SOFTSERIAL 4
-#define IPL_VM 5
-#define IPL_SCHED 6
-#define IPL_HIGH 7
-#define NIPL 8
+#define spldma() splraise6()
-extern const uint16_t ipl2psl_table[NIPL];
-
-typedef int ipl_t;
-
-static __inline ipl_cookie_t
-makeiplcookie(ipl_t ipl)
-{
-
- return (ipl_cookie_t){._psl = ipl2psl_table[ipl]};
-}
-
-static __inline int
-splraiseipl(ipl_cookie_t icookie)
-{
-
- return _splraise(icookie._psl);
-}
-
-/****************************************************************/
-
-/* locore.s */
-int spl0(void);
+#ifdef _KERNEL
extern volatile u_long *intrstat;
extern volatile u_long *intrmask;
-#define INTR_SETMASK(x) (*intrmask = (x))
-#define INTR_ENABLE(x) (*intrmask |= NEXT_I_BIT(x))
-#define INTR_DISABLE(x) (*intrmask &= (~NEXT_I_BIT(x)))
-#define INTR_OCCURRED(x) (*intrstat & NEXT_I_BIT(x))
+#define INTR_SETMASK(x) (*intrmask = (x))
+#define INTR_ENABLE(x) (*intrmask |= NEXT_I_BIT(x))
+#define INTR_DISABLE(x) (*intrmask &= (~NEXT_I_BIT(x)))
+#define INTR_OCCURRED(x) (*intrstat & NEXT_I_BIT(x))
#endif /* _KERNEL */
-#endif /* _NEXT68K_INTR_H_ */
+#endif /* _NEXT68K_INTR_H */
Index: src/sys/arch/next68k/include/types.h
diff -u src/sys/arch/next68k/include/types.h:1.7 src/sys/arch/next68k/include/types.h:1.8
--- src/sys/arch/next68k/include/types.h:1.7 Thu Apr 1 04:43:00 2021
+++ src/sys/arch/next68k/include/types.h Thu Jan 18 13:46:14 2024
@@ -1,5 +1,3 @@
-/* $NetBSD: types.h,v 1.7 2021/04/01 04:43:00 simonb Exp $ */
+/* $NetBSD: types.h,v 1.8 2024/01/18 13:46:14 thorpej Exp $ */
#include <m68k/types.h>
-
-#define __HAVE_LEGACY_INTRCNT
Index: src/sys/arch/next68k/include/vectors.h
diff -u src/sys/arch/next68k/include/vectors.h:1.1 src/sys/arch/next68k/include/vectors.h:1.2
--- src/sys/arch/next68k/include/vectors.h:1.1 Sat Jan 13 21:40:54 2024
+++ src/sys/arch/next68k/include/vectors.h Thu Jan 18 13:46:14 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: vectors.h,v 1.1 2024/01/13 21:40:54 thorpej Exp $ */
+/* $NetBSD: vectors.h,v 1.2 2024/01/18 13:46:14 thorpej Exp $ */
/*-
* Copyright (c) 2024 The NetBSD Foundation, Inc.
@@ -36,13 +36,13 @@
#include <m68k/vectors.h>
-#define MACHINE_AV0_HANDLER spurintr
-#define MACHINE_AV1_HANDLER intrhand_autovec
-#define MACHINE_AV2_HANDLER intrhand_autovec
-#define MACHINE_AV3_HANDLER intrhand_autovec
-#define MACHINE_AV4_HANDLER intrhand_autovec
-#define MACHINE_AV5_HANDLER intrhand_autovec
-#define MACHINE_AV6_HANDLER intrhand_autovec
+#define MACHINE_AV0_HANDLER intrstub_autovec
+#define MACHINE_AV1_HANDLER intrstub_autovec
+#define MACHINE_AV2_HANDLER intrstub_autovec
+#define MACHINE_AV3_HANDLER intrstub_autovec
+#define MACHINE_AV4_HANDLER intrstub_autovec
+#define MACHINE_AV5_HANDLER intrstub_autovec
+#define MACHINE_AV6_HANDLER intrstub_autovec
#define MACHINE_AV7_HANDLER lev7intr
#endif /* _KERNEL */