Module Name:    src
Committed By:   matt
Date:           Wed Jun 15 17:47:45 UTC 2011

Modified Files:
        src/sys/arch/powerpc/booke: genassym.cf trap_subr.S
        src/sys/arch/powerpc/powerpc: db_trace.c intr_stubs.c

Log Message:
Now that the generic fixup code exists, there's no to patch the interrupts
directly since the stub fixup will do that automatically.  Just need to add
stubs for the interrupt vectors and they get fixed automagically.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/powerpc/booke/genassym.cf \
    src/sys/arch/powerpc/booke/trap_subr.S
cvs rdiff -u -r1.54 -r1.55 src/sys/arch/powerpc/powerpc/db_trace.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/powerpc/powerpc/intr_stubs.c

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/powerpc/booke/genassym.cf
diff -u src/sys/arch/powerpc/booke/genassym.cf:1.3 src/sys/arch/powerpc/booke/genassym.cf:1.4
--- src/sys/arch/powerpc/booke/genassym.cf:1.3	Sun Jun  5 16:52:24 2011
+++ src/sys/arch/powerpc/booke/genassym.cf	Wed Jun 15 17:47:45 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.3 2011/06/05 16:52:24 matt Exp $
+#	$NetBSD: genassym.cf,v 1.4 2011/06/15 17:47:45 matt Exp $
 
 #-
 # Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
@@ -236,12 +236,6 @@
 define	__HAVE_FAST_SOFTINTS	__HAVE_FAST_SOFTINTS
 endif
 
-define	INTRSW_CRITINTR		offsetof(struct intrsw, intrsw_critintr)
-define	INTRSW_DECRINTR		offsetof(struct intrsw, intrsw_decrintr)
-define	INTRSW_FITINTR		offsetof(struct intrsw, intrsw_fitintr)
-define	INTRSW_WDOGINTR		offsetof(struct intrsw, intrsw_wdogintr)
-define	INTRSW_EXTINTR		offsetof(struct intrsw, intrsw_extintr)
-
 define	IPL_HIGH		IPL_HIGH
 define	IPL_SCHED		IPL_SCHED
 define	IPL_VM			IPL_VM
Index: src/sys/arch/powerpc/booke/trap_subr.S
diff -u src/sys/arch/powerpc/booke/trap_subr.S:1.3 src/sys/arch/powerpc/booke/trap_subr.S:1.4
--- src/sys/arch/powerpc/booke/trap_subr.S:1.3	Sun Jun  5 16:52:24 2011
+++ src/sys/arch/powerpc/booke/trap_subr.S	Wed Jun 15 17:47:45 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap_subr.S,v 1.3 2011/06/05 16:52:24 matt Exp $	*/
+/*	$NetBSD: trap_subr.S,v 1.4 2011/06/15 17:47:45 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -34,13 +34,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-RCSID("$NetBSD: trap_subr.S,v 1.3 2011/06/05 16:52:24 matt Exp $")
-
-	.globl	_C_LABEL(critintr_call)
-	.globl	_C_LABEL(extintr_call)
-	.globl	_C_LABEL(decrintr_call)
-	.globl	_C_LABEL(fitintr_call)
-	.globl	_C_LABEL(wdogintr_call)
+RCSID("$NetBSD: trap_subr.S,v 1.4 2011/06/15 17:47:45 matt Exp $")
 
 	.globl	_C_LABEL(sctrapexit), _C_LABEL(trapexit), _C_LABEL(intrcall)
 
@@ -348,8 +342,7 @@
 	/* MSR[ME] is unchanged, all others cleared */
 	FRAME_CRIT_PROLOGUE			/* save SP r26-31 CR LR XER */
 	FRAME_CRIT_ENTER(EXC_CII)
-_C_LABEL(critintr_call):
-	bl	_C_LABEL(critintr_call)		/* critintr(tf) */
+	bl	_C_LABEL(intr_critintr)		/* critintr(tf) */
 	FRAME_CRIT_EXIT
 
 	.p2align 4
@@ -412,8 +405,7 @@
 	FRAME_INTR_PROLOGUE			/* save SP r25-31 CR LR XER */
 	FRAME_INTR_ENTER(EXC_EXI)
 
-_C_LABEL(extintr_call):
-	bl	_C_LABEL(extintr_call)
+	bl	_C_LABEL(intr_extintr)
 _C_LABEL(intrcall):
 	GET_CPUINFO(%r6)			/* get curcpu() */
 	lwz	%r5, FRAME_SRR1(%r1)		/* get saved SRR1 */
@@ -500,8 +492,7 @@
 	FRAME_INTR_PROLOGUE			/* save SP r25-31 CR LR XER */
 	FRAME_INTR_ENTER(EXC_DECR)
 
-_C_LABEL(decrintr_call):
-	bl	_C_LABEL(decrintr_call)
+	bl	_C_LABEL(intr_decrintr)
 	b	intrexit
 
 	.p2align 4
@@ -510,8 +501,7 @@
 	FRAME_PROLOGUE				/* save SP r25-31 CR LR XER */
 	FRAME_INTR_ENTER(EXC_FIT)
 
-_C_LABEL(fitintr_call):
-	bl	_C_LABEL(fitintr_call)
+	bl	_C_LABEL(intr_fitintr)
 	b	intrexit
 
 	.data
@@ -528,8 +518,7 @@
 	stb	%r11,-65(%r11)
 #endif
 
-_C_LABEL(wdogintr_call):
-	bl	_C_LABEL(wdogintr_call)
+	bl	_C_LABEL(intr_wdogintr)
 	FRAME_CRIT_EXIT
 
 	.p2align 4
@@ -863,51 +852,6 @@
 	cmplwi	%r5,0
 	bnelr			/* return if non-0 (non-primary) */
 
-	lis	%r5,_C_LABEL(critintr_call)@ha
-	lwzu	%r6,_C_LABEL(critintr_call)@l(%r5)
-	lwz	%r7,INTRSW_CRITINTR(%r3)
-	sub	%r8,%r7,%r5
-	add	%r0,%r8,%r6
-	stw	%r0,0(%r5)
-	dcbf	0,%r5	
-	icbi	0,%r5
-
-	lis	%r5,_C_LABEL(decrintr_call)@ha
-	lwzu	%r6,_C_LABEL(decrintr_call)@l(%r5)
-	lwz	%r7,INTRSW_DECRINTR(%r3)
-	sub	%r8,%r7,%r5
-	add	%r0,%r8,%r6
-	stw	%r0,0(%r5)
-	dcbf	0,%r5	
-	icbi	0,%r5
-
-	lis	%r5,_C_LABEL(fitintr_call)@ha
-	lwzu	%r6,_C_LABEL(fitintr_call)@l(%r5)
-	lwz	%r7,INTRSW_FITINTR(%r3)
-	sub	%r8,%r7,%r5
-	add	%r0,%r8,%r6
-	stw	%r0,0(%r5)
-	dcbf	0,%r5	
-	icbi	0,%r5
-
-	lis	%r5,_C_LABEL(wdogintr_call)@ha
-	lwzu	%r6,_C_LABEL(wdogintr_call)@l(%r5)
-	lwz	%r7,INTRSW_WDOGINTR(%r3)
-	sub	%r8,%r7,%r5
-	add	%r0,%r8,%r6
-	stw	%r0,0(%r5)
-	dcbf	0,%r5	
-	icbi	0,%r5
-
-	lis	%r5,_C_LABEL(extintr_call)@ha
-	lwzu	%r6,_C_LABEL(extintr_call)@l(%r5)
-	lwz	%r7,INTRSW_EXTINTR(%r3)
-	sub	%r8,%r7,%r5
-	add	%r0,%r8,%r6
-	stw	%r0,0(%r5)
-	dcbf	0,%r5	
-	icbi	0,%r5
-
 	lis	%r5,_C_LABEL(powerpc_intrsw)@ha
 	stw	%r3,_C_LABEL(powerpc_intrsw)@l(%r5)
 

Index: src/sys/arch/powerpc/powerpc/db_trace.c
diff -u src/sys/arch/powerpc/powerpc/db_trace.c:1.54 src/sys/arch/powerpc/powerpc/db_trace.c:1.55
--- src/sys/arch/powerpc/powerpc/db_trace.c:1.54	Tue Jan 18 01:02:55 2011
+++ src/sys/arch/powerpc/powerpc/db_trace.c	Wed Jun 15 17:47:45 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_trace.c,v 1.54 2011/01/18 01:02:55 matt Exp $	*/
+/*	$NetBSD: db_trace.c,v 1.55 2011/06/15 17:47:45 matt Exp $	*/
 /*	$OpenBSD: db_trace.c,v 1.3 1997/03/21 02:10:48 niklas Exp $	*/
 
 /* 
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.54 2011/01/18 01:02:55 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.55 2011/06/15 17:47:45 matt Exp $");
 
 #include "opt_ppcarch.h"
 
@@ -124,8 +124,7 @@
 	bool lwpaddr = false;
 	extern int trapexit[], sctrapexit[];
 #ifdef PPC_BOOKE
-	extern int extintr_call[], fitintr_call[], decrintr_call[];
-	extern int critintr_call[], wdogintr_call[];
+	extern int intrcall[];
 #endif
 	bool full = false;
 	bool in_kernel = true;
@@ -192,11 +191,7 @@
 		(*pr)("0x%08lx: ", frame);
 		if (lr + 4 == (db_addr_t) trapexit ||
 #ifdef PPC_BOOKE
-		    lr == (db_addr_t) wdogintr_call ||
-		    lr == (db_addr_t) extintr_call ||
-		    lr == (db_addr_t) critintr_call ||
-		    lr == (db_addr_t) decrintr_call ||
-		    lr == (db_addr_t) fitintr_call ||
+		    lr + 4 == (db_addr_t) intrcall ||
 #endif
 		    lr + 4 == (db_addr_t) sctrapexit) {
 			const char *trapstr;

Index: src/sys/arch/powerpc/powerpc/intr_stubs.c
diff -u src/sys/arch/powerpc/powerpc/intr_stubs.c:1.1 src/sys/arch/powerpc/powerpc/intr_stubs.c:1.2
--- src/sys/arch/powerpc/powerpc/intr_stubs.c:1.1	Wed Jun 15 15:22:56 2011
+++ src/sys/arch/powerpc/powerpc/intr_stubs.c	Wed Jun 15 17:47:45 2011
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: intr_stubs.c,v 1.1 2011/06/15 15:22:56 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intr_stubs.c,v 1.2 2011/06/15 17:47:45 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -164,3 +164,48 @@
 {
 	(*powerpc_intrsw->intrsw_init)();
 }
+
+void intr_critintr(struct trapframe *) __stub;
+
+void
+intr_critintr(struct trapframe *tf)
+{
+	(*powerpc_intrsw->intrsw_critintr)(tf);
+	
+}
+
+void intr_extintr(struct trapframe *) __stub;
+
+void
+intr_extintr(struct trapframe *tf)
+{
+	(*powerpc_intrsw->intrsw_extintr)(tf);
+	
+}
+
+void intr_decrintr(struct trapframe *) __stub;
+
+void
+intr_decrintr(struct trapframe *tf)
+{
+	(*powerpc_intrsw->intrsw_decrintr)(tf);
+	
+}
+
+void intr_fitintr(struct trapframe *) __stub;
+
+void
+intr_fitintr(struct trapframe *tf)
+{
+	(*powerpc_intrsw->intrsw_fitintr)(tf);
+	
+}
+
+void intr_wdogintr(struct trapframe *) __stub;
+
+void
+intr_wdogintr(struct trapframe *tf)
+{
+	(*powerpc_intrsw->intrsw_wdogintr)(tf);
+	
+}

Reply via email to