Index: kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c
===================================================================
--- kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c	(revision 59a72f8386661c5088ea21b1202e6d7ca71214e8)
+++ kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c	(revision 273c9760404837a4e66cf21f18aa616b1834bd9a)
@@ -85,7 +85,5 @@
 static void bb_timer_irq_handler(irq_t *irq)
 {
-	// FIXME Ignore the weird ghost interrupt
-	if (!amdm37x_gpt_irq_ack(&beagleboard.timer))
-		return;
+	amdm37x_gpt_irq_ack(&beagleboard.timer);
 
         /*
@@ -150,5 +148,4 @@
 {
 	const unsigned inum = amdm37x_irc_inum_get(beagleboard.irc_addr);
-	amdm37x_irc_irq_ack(beagleboard.irc_addr);
 
 	irq_t *irq = irq_dispatch_and_lock(inum);
@@ -162,4 +159,7 @@
 		    CPU->id, inum);
 	}
+	/** amdm37x manual ch. 12.5.2 (p. 2428) places irc ack at the end
+	 * of ISR. DO this to avoid strange behavior. */
+	amdm37x_irc_irq_ack(beagleboard.irc_addr);
 }
 
