Index: kernel/arch/sparc64/src/trap/interrupt.c
===================================================================
--- kernel/arch/sparc64/src/trap/interrupt.c	(revision 63530c623718a69d8b980518b5dec7e17f4d991d)
+++ kernel/arch/sparc64/src/trap/interrupt.c	(revision e3890b3fce4ad7f968cc0c569c3565b3df89e8c8)
@@ -47,4 +47,5 @@
 #include <mm/tlb.h>
 #include <config.h>
+#include <synch/spinlock.h>
 
 /*
@@ -89,5 +90,5 @@
 	data0 = asi_u64_read(ASI_UDB_INTR_R, ASI_UDB_INTR_R_DATA_0);
 
-	irq_t *irq = irq_dispatch(data0);
+	irq_t *irq = irq_dispatch_and_lock(data0);
 	if (irq) {
 		/*
@@ -95,4 +96,5 @@
 		 */
 		irq->handler(irq, irq->arg);
+		spinlock_unlock(&irq->lock);
 	} else if (data0 > config.base) {
 		/*
