Index: kernel/arch/ia32/src/interrupt.c
===================================================================
--- kernel/arch/ia32/src/interrupt.c	(revision fd67c9f8dcdd34e9ee9ae504ae566e0d47cebb67)
+++ kernel/arch/ia32/src/interrupt.c	(revision 00e8290f885b3dc03a5c5a191983eb336d1e852c)
@@ -40,4 +40,5 @@
 #include <panic.h>
 #include <genarch/drivers/i8259/i8259.h>
+#include <genarch/pic/pic_ops.h>
 #include <halt.h>
 #include <cpu.h>
@@ -61,8 +62,5 @@
  */
 
-void (*disable_irqs_function)(uint16_t irqmask) = NULL;
-void (*enable_irqs_function)(uint16_t irqmask) = NULL;
-void (*eoi_function)(unsigned int) = NULL;
-const char *irqs_info = NULL;
+pic_ops_t *pic_ops = NULL;
 
 void istate_decode(istate_t *istate)
@@ -88,13 +86,4 @@
 	    istate_from_uspace(istate) ? istate->esp :
 	    (uint32_t) &istate->esp);
-}
-
-static void trap_virtual_eoi(unsigned int inum)
-{
-	if (eoi_function)
-		eoi_function(inum);
-	else
-		panic("No eoi_function.");
-
 }
 
@@ -179,5 +168,5 @@
     istate_t *istate __attribute__((unused)))
 {
-	trap_virtual_eoi(0);
+	pic_ops->eoi(0);
 	tlb_shootdown_ipi_recv();
 }
@@ -202,5 +191,5 @@
 		if (irq->preack) {
 			/* Send EOI before processing the interrupt */
-			trap_virtual_eoi(inum);
+			pic_ops->eoi(inum);
 			ack = true;
 		}
@@ -215,5 +204,5 @@
 
 	if (!ack)
-		trap_virtual_eoi(inum);
+		pic_ops->eoi(inum);
 }
 
@@ -221,10 +210,10 @@
 {
 	unsigned int inum = n - IVT_IRQBASE;
-	if (!pic_is_spurious(inum)) {
+	if (!pic_ops->is_spurious(inum)) {
 		/* This is actually not a spurious IRQ, so proceed as usual. */
 		irq_interrupt(n, istate);
 		return;
 	}
-	pic_handle_spurious(n);
+	pic_ops->handle_spurious(n);
 #ifdef CONFIG_DEBUG
 	log(LF_ARCH, LVL_DEBUG, "cpu%u: PIC spurious interrupt %u", CPU->id,
@@ -264,20 +253,4 @@
 }
 
-void trap_virtual_enable_irqs(uint16_t irqmask)
-{
-	if (enable_irqs_function)
-		enable_irqs_function(irqmask);
-	else
-		panic("No enable_irqs_function.");
-}
-
-void trap_virtual_disable_irqs(uint16_t irqmask)
-{
-	if (disable_irqs_function)
-		disable_irqs_function(irqmask);
-	else
-		panic("No disable_irqs_function.");
-}
-
 /** @}
  */
