Module Name: src
Committed By: thorpej
Date: Sat Jan 20 00:19:12 UTC 2024
Modified Files:
src/sys/arch/m68k/m68k: m68k_intr_stubs.s
src/sys/arch/news68k/news68k: genassym.cf
Log Message:
Support the hardware-assisted AST on news68k in the common interrupt
stubs.
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/m68k/m68k/m68k_intr_stubs.s
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/news68k/news68k/genassym.cf
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/m68k/m68k/m68k_intr_stubs.s
diff -u src/sys/arch/m68k/m68k/m68k_intr_stubs.s:1.4 src/sys/arch/m68k/m68k/m68k_intr_stubs.s:1.5
--- src/sys/arch/m68k/m68k/m68k_intr_stubs.s:1.4 Fri Jan 19 18:18:54 2024
+++ src/sys/arch/m68k/m68k/m68k_intr_stubs.s Sat Jan 20 00:19:12 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: m68k_intr_stubs.s,v 1.4 2024/01/19 18:18:54 thorpej Exp $ */
+/* $NetBSD: m68k_intr_stubs.s,v 1.5 2024/01/20 00:19:12 thorpej Exp $ */
/*
* Copyright (c) 1980, 1990, 1993
@@ -50,11 +50,16 @@
#endif
/*
- * XXX Some platforms (e.g. news68k) have hardware-assisted ASTs, and
- * XXX thus don't need to branch to rei() after an interrupt. Figure
- * XXX out a way to handle these platforms. This works for now; the
- * XXX hardware-assist is just an optimization.
+ * If a platform supports hardware-assisted ASTs, we don't branch to
+ * rei() after the interrupt. Instead, we simply do an rte. Such
+ * platforms will have their own vector stub for dealing with ASTs,
+ * which will in turn call rei().
*/
+#ifdef __HAVE_M68K_HW_AST
+#define INTERRUPT_RETURN rte
+#else
+#define INTERRUPT_RETURN jra _ASM_LABEL(rei)
+#endif /* __HAVE_M68K_HW_AST */
/*
* Vector stub for auto-vectored interrupts. Calls the dispatch
@@ -67,7 +72,7 @@ ENTRY_NOPROFILE(intrstub_autovec)
jbsr _C_LABEL(m68k_intr_autovec)
INTERRUPT_RESTOREREG
subql #1,_C_LABEL(intr_depth)
- jra _ASM_LABEL(rei)
+ INTERRUPT_RETURN
#ifdef __HAVE_M68K_INTR_VECTORED
/*
@@ -80,5 +85,5 @@ ENTRY_NOPROFILE(intrstub_vectored)
jbsr _C_LABEL(m68k_intr_vectored)
INTERRUPT_RESTOREREG
subql #1,_C_LABEL(intr_depth)
- jra _ASM_LABEL(rei)
+ INTERRUPT_RETURN
#endif /* __HAVE_M68K_INTR_VECTORED */
Index: src/sys/arch/news68k/news68k/genassym.cf
diff -u src/sys/arch/news68k/news68k/genassym.cf:1.36 src/sys/arch/news68k/news68k/genassym.cf:1.37
--- src/sys/arch/news68k/news68k/genassym.cf:1.36 Mon Jan 15 20:21:50 2024
+++ src/sys/arch/news68k/news68k/genassym.cf Sat Jan 20 00:19:12 2024
@@ -1,4 +1,4 @@
-# $NetBSD: genassym.cf,v 1.36 2024/01/15 20:21:50 thorpej Exp $
+# $NetBSD: genassym.cf,v 1.37 2024/01/20 00:19:12 thorpej Exp $
#
# Copyright (c) 1982, 1990, 1993
@@ -75,6 +75,7 @@ endif
define M68K_MMU_MOTOROLA 1
define __HAVE_M68K_INTR_VECTORED 1
+define __HAVE_M68K_HW_AST 1
# values for fputype
define FPU_NONE FPU_NONE