Index: kernel/arch/amd64/include/interrupt.h
===================================================================
--- kernel/arch/amd64/include/interrupt.h	(revision c11ebb6a026c1d82c4c0991dcc4901f177ad7f1d)
+++ kernel/arch/amd64/include/interrupt.h	(revision e186eb5ecda9cb3a52a1cc21872217c9db43a6d0)
@@ -74,4 +74,5 @@
 extern void (* enable_irqs_function)(uint16_t);
 extern void (* eoi_function)(void);
+extern const char *irqs_info;
 
 extern void interrupt_init(void);
Index: kernel/arch/amd64/src/amd64.c
===================================================================
--- kernel/arch/amd64/src/amd64.c	(revision c11ebb6a026c1d82c4c0991dcc4901f177ad7f1d)
+++ kernel/arch/amd64/src/amd64.c	(revision e186eb5ecda9cb3a52a1cc21872217c9db43a6d0)
@@ -235,8 +235,7 @@
 #endif
 	
-	/*
-	 * This nasty hack should also go away ASAP.
-	 */
-	trap_virtual_enable_irqs(1 << IRQ_DP8390);
+	if (irqs_info != NULL)
+		sysinfo_set_item_val(irqs_info, NULL, true);
+	
 	sysinfo_set_item_val("netif.dp8390.inr", NULL, IRQ_DP8390);
 }
Index: kernel/arch/amd64/src/interrupt.c
===================================================================
--- kernel/arch/amd64/src/interrupt.c	(revision c11ebb6a026c1d82c4c0991dcc4901f177ad7f1d)
+++ kernel/arch/amd64/src/interrupt.c	(revision e186eb5ecda9cb3a52a1cc21872217c9db43a6d0)
@@ -62,4 +62,5 @@
 void (* enable_irqs_function)(uint16_t irqmask) = NULL;
 void (* eoi_function)(void) = NULL;
+const char *irqs_info = NULL;
 
 void istate_decode(istate_t *istate)
Index: kernel/arch/ia32/include/interrupt.h
===================================================================
--- kernel/arch/ia32/include/interrupt.h	(revision c11ebb6a026c1d82c4c0991dcc4901f177ad7f1d)
+++ kernel/arch/ia32/include/interrupt.h	(revision e186eb5ecda9cb3a52a1cc21872217c9db43a6d0)
@@ -74,4 +74,5 @@
 extern void (* enable_irqs_function)(uint16_t);
 extern void (* eoi_function)(void);
+extern const char *irqs_info;
 
 extern void interrupt_init(void);
Index: kernel/arch/ia32/src/drivers/i8259.c
===================================================================
--- kernel/arch/ia32/src/drivers/i8259.c	(revision c11ebb6a026c1d82c4c0991dcc4901f177ad7f1d)
+++ kernel/arch/ia32/src/drivers/i8259.c	(revision e186eb5ecda9cb3a52a1cc21872217c9db43a6d0)
@@ -86,4 +86,5 @@
 	disable_irqs_function = pic_disable_irqs;
 	eoi_function = pic_eoi;
+	irqs_info = "i8259";
 
 	pic_disable_irqs(0xffff);		/* disable all irq's */
Index: kernel/arch/ia32/src/ia32.c
===================================================================
--- kernel/arch/ia32/src/ia32.c	(revision c11ebb6a026c1d82c4c0991dcc4901f177ad7f1d)
+++ kernel/arch/ia32/src/ia32.c	(revision e186eb5ecda9cb3a52a1cc21872217c9db43a6d0)
@@ -193,8 +193,7 @@
 #endif
 	
-	/*
-	 * This nasty hack should also go away ASAP.
-	 */
-	trap_virtual_enable_irqs(1 << IRQ_DP8390);
+	if (irqs_info != NULL)
+		sysinfo_set_item_val(irqs_info, NULL, true);
+	
 	sysinfo_set_item_val("netif.dp8390.inr", NULL, IRQ_DP8390);
 }
Index: kernel/arch/ia32/src/interrupt.c
===================================================================
--- kernel/arch/ia32/src/interrupt.c	(revision c11ebb6a026c1d82c4c0991dcc4901f177ad7f1d)
+++ kernel/arch/ia32/src/interrupt.c	(revision e186eb5ecda9cb3a52a1cc21872217c9db43a6d0)
@@ -62,4 +62,5 @@
 void (* enable_irqs_function)(uint16_t irqmask) = NULL;
 void (* eoi_function)(void) = NULL;
+const char *irqs_info = NULL;
 
 void istate_decode(istate_t *istate)
Index: kernel/arch/ia32/src/smp/apic.c
===================================================================
--- kernel/arch/ia32/src/smp/apic.c	(revision c11ebb6a026c1d82c4c0991dcc4901f177ad7f1d)
+++ kernel/arch/ia32/src/smp/apic.c	(revision e186eb5ecda9cb3a52a1cc21872217c9db43a6d0)
@@ -178,4 +178,5 @@
 	disable_irqs_function = io_apic_disable_irqs;
 	eoi_function = l_apic_eoi;
+	irqs_info = "apic";
 	
 	/*
