Index: kernel/arch/amd64/src/amd64.c
===================================================================
--- kernel/arch/amd64/src/amd64.c	(revision 3daba42eca17fefb7371eb495dcaf63d5a95ed9e)
+++ kernel/arch/amd64/src/amd64.c	(revision e28175d7eb3aea0200054019deabcae2e8f6cefd)
@@ -60,4 +60,5 @@
 #include <arch/vreg.h>
 #include <arch/kseg.h>
+#include <genarch/pic/pic_ops.h>
 
 #ifdef CONFIG_SMP
@@ -123,12 +124,6 @@
 		    (i8259_t *) I8259_PIC1_BASE, IVT_IRQBASE);
 
-		/*
-		 * Set the enable/disable IRQs handlers.
-		 * Set the End-of-Interrupt handler.
-		 */
-		enable_irqs_function = pic_enable_irqs;
-		disable_irqs_function = pic_disable_irqs;
-		eoi_function = pic_eoi;
-		irqs_info = "i8259";
+		/* Set PIC operations. */
+		pic_ops = &i8259_pic_ops;
 	}
 }
@@ -209,6 +204,6 @@
 			indev_t *kbrd = kbrd_wire(kbrd_instance, sink);
 			i8042_wire(i8042_instance, kbrd);
-			trap_virtual_enable_irqs(1 << IRQ_KBD);
-			trap_virtual_enable_irqs(1 << IRQ_MOUSE);
+			pic_ops->enable_irqs(1 << IRQ_KBD);
+			pic_ops->enable_irqs(1 << IRQ_MOUSE);
 		}
 	}
@@ -235,5 +230,5 @@
 			indev_t *srln = srln_wire(srln_instance, sink);
 			ns16550_wire(ns16550_instance, srln);
-			trap_virtual_enable_irqs(1 << IRQ_NS16550);
+			pic_ops->enable_irqs(1 << IRQ_NS16550);
 		}
 #endif
@@ -246,6 +241,5 @@
 #endif
 
-	if (irqs_info != NULL)
-		sysinfo_set_item_val(irqs_info, NULL, true);
+	sysinfo_set_item_val(pic_ops->get_name(), NULL, true);
 }
 
