diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c
index 8ea7498..673a108 100644
--- a/arch/m68k/mac/baboon.c
+++ b/arch/m68k/mac/baboon.c
@@ -22,7 +22,7 @@
 /* #define DEBUG_BABOON */
 /* #define DEBUG_IRQS */
 
-int baboon_present,baboon_active;
+int baboon_present;
 volatile struct baboon *baboon;
 
 irqreturn_t baboon_irq(int, void *);
@@ -45,7 +45,6 @@
 
 	baboon = (struct baboon *) BABOON_BASE;
 	baboon_present = 1;
-	baboon_active = 0;
 
 	printk("Baboon detected at %p\n", baboon);
 }
@@ -70,9 +69,9 @@
 	unsigned char events;
 
 #ifdef DEBUG_IRQS
-	printk("baboon_irq: mb_control %02X mb_ifr %02X mb_status %02X active %02X\n",
+	printk("baboon_irq: mb_control %02X mb_ifr %02X mb_status %02X\n",
 		(uint) baboon->mb_control, (uint) baboon->mb_ifr,
-		(uint) baboon->mb_status,  baboon_active);
+		(uint) baboon->mb_status);
 #endif
 
 	if (!(events = baboon->mb_ifr & 0x07))
@@ -81,11 +80,9 @@
 	irq_num = IRQ_BABOON_0;
 	irq_bit = 1;
 	do {
-	        if (events & irq_bit/* & baboon_active*/) {
-			baboon_active &= ~irq_bit;
+	        if (events & irq_bit) {
 			baboon->mb_ifr &= ~irq_bit;
 			m68k_handle_int(irq_num);
-			baboon_active |= irq_bit;
 		}
 		irq_bit <<= 1;
 		irq_num++;
@@ -99,21 +96,18 @@
 }
 
 void baboon_irq_enable(int irq) {
-	int irq_idx	= IRQ_IDX(irq);
-
 #ifdef DEBUG_IRQUSE
 	printk("baboon_irq_enable(%d)\n", irq);
 #endif
-	baboon_active |= (1 << irq_idx);
+	/* FIXME: figure out how to mask and unmask baboon interrupt sources */
+	enable_irq(IRQ_NUBUS_C);
 }
 
 void baboon_irq_disable(int irq) {
-	int irq_idx	= IRQ_IDX(irq);
-
 #ifdef DEBUG_IRQUSE
 	printk("baboon_irq_disable(%d)\n", irq);
 #endif
-	baboon_active &= ~(1 << irq_idx);
+	disable_irq(IRQ_NUBUS_C);
 }
 
 void baboon_irq_clear(int irq) {
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c
index 6399883..d7be169 100644
--- a/arch/m68k/mac/oss.c
+++ b/arch/m68k/mac/oss.c
@@ -112,10 +112,8 @@
 		oss->irq_pending &= ~OSS_IP_SOUND;
 		/* FIXME: call sound handler */
 	} else if (events & OSS_IP_SCSI) {
-		oss->irq_level[OSS_SCSI] = OSS_IRQLEV_DISABLED;
 		oss->irq_pending &= ~OSS_IP_SCSI;
 		m68k_handle_int(IRQ_MAC_SCSI);
-		oss->irq_level[OSS_SCSI] = OSS_IRQLEV_SCSI;
 	} else {
 		/* FIXME: error check here? */
 	}
@@ -149,10 +147,8 @@
 		--i;
 		irq_bit >>= 1;
 		if (events & irq_bit) {
-			oss->irq_level[i] = OSS_IRQLEV_DISABLED;
 			oss->irq_pending &= ~irq_bit;
 			m68k_handle_int(NUBUS_SOURCE_BASE + i);
-			oss->irq_level[i] = OSS_IRQLEV_NUBUS;
 		}
 	} while(events & (irq_bit - 1));
 	return IRQ_HANDLED;
diff --git a/arch/m68k/mac/psc.c b/arch/m68k/mac/psc.c
index 1dba882..d66f723 100644
--- a/arch/m68k/mac/psc.c
+++ b/arch/m68k/mac/psc.c
@@ -147,10 +147,8 @@
 	irq_bit = 1;
 	do {
 		if (events & irq_bit) {
-			psc_write_byte(pIER, irq_bit);
 			psc_write_byte(pIFR, irq_bit);
 			m68k_handle_int(irq_num);
-			psc_write_byte(pIER, irq_bit | 0x80);
 		}
 		irq_num++;
 		irq_bit <<= 1;
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index 83a3bb0..d5cac72 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -443,11 +443,6 @@
 /*
  * The generic VIA interrupt routines (shamelessly stolen from Alan Cox's
  * via6522.c :-), disable/pending masks added.
- *
- * The new interrupt architecture in macints.c takes care of a lot of the
- * gruntwork for us, including tallying the interrupts and calling the
- * handlers on the linked list. All we need to do here is basically generate
- * the machspec interrupt number after clearing the interrupt.
  */
 
 irqreturn_t via1_irq(int irq, void *dev_id)
@@ -463,10 +458,8 @@
 	irq_bit = 1;
 	do {
 		if (events & irq_bit) {
-			via1[vIER] = irq_bit;
 			via1[vIFR] = irq_bit;
 			m68k_handle_int(irq_num);
-			via1[vIER] = irq_bit | 0x80;
 		}
 		++irq_num;
 		irq_bit <<= 1;
@@ -502,11 +495,8 @@
 	irq_bit = 1;
 	do {
 		if (events & irq_bit) {
-			via2[gIER] = irq_bit;
 			via2[gIFR] = irq_bit | rbv_clear;
 			m68k_handle_int(irq_num);
-			if (irq_num != IRQ_MAC_NUBUS || nubus_disabled == 0)
-				via2[gIER] = irq_bit | 0x80;
 		}
 		++irq_num;
 		irq_bit <<= 1;
