Index: kernel/arch/arm32/include/mach/integratorcp/integratorcp.h
===================================================================
--- kernel/arch/arm32/include/mach/integratorcp/integratorcp.h	(revision 99b2564010a554f44b9d4abdeda4d41b63dfd1ae)
+++ kernel/arch/arm32/include/mach/integratorcp/integratorcp.h	(revision ecf083ddad676b0da750a0fddb69925ae0855751)
@@ -105,4 +105,5 @@
 extern void icp_get_memory_extents(uintptr_t *, uintptr_t *);
 extern void icp_frame_init(void);
+extern size_t icp_get_irq_count(void);
 
 extern struct arm_machine_ops icp_machine_ops;
Index: kernel/arch/arm32/include/mach/testarm/testarm.h
===================================================================
--- kernel/arch/arm32/include/mach/testarm/testarm.h	(revision 99b2564010a554f44b9d4abdeda4d41b63dfd1ae)
+++ kernel/arch/arm32/include/mach/testarm/testarm.h	(revision ecf083ddad676b0da750a0fddb69925ae0855751)
@@ -73,4 +73,5 @@
 extern void gxemul_get_memory_extents(uintptr_t *, uintptr_t *);
 extern void gxemul_frame_init(void);
+extern size_t gxemul_get_irq_count(void);
 
 extern struct arm_machine_ops gxemul_machine_ops;
Index: kernel/arch/arm32/include/machine_func.h
===================================================================
--- kernel/arch/arm32/include/machine_func.h	(revision 99b2564010a554f44b9d4abdeda4d41b63dfd1ae)
+++ kernel/arch/arm32/include/machine_func.h	(revision ecf083ddad676b0da750a0fddb69925ae0855751)
@@ -55,4 +55,5 @@
 	void (*machine_output_init)(void);
 	void (*machine_input_init)(void);
+	size_t (*machine_get_irq_count)(void);
 };
 
Index: kernel/arch/arm32/src/mach/gta02/gta02.c
===================================================================
--- kernel/arch/arm32/src/mach/gta02/gta02.c	(revision 99b2564010a554f44b9d4abdeda4d41b63dfd1ae)
+++ kernel/arch/arm32/src/mach/gta02/gta02.c	(revision ecf083ddad676b0da750a0fddb69925ae0855751)
@@ -69,4 +69,5 @@
 static void gta02_output_init(void);
 static void gta02_input_init(void);
+static size_t gta02_get_irq_count(void);
 
 static void gta02_timer_irq_init(void);
@@ -89,5 +90,6 @@
 	gta02_frame_init,
 	gta02_output_init,
-	gta02_input_init
+	gta02_input_init,
+	gta02_get_irq_count
 };
 
@@ -210,4 +212,9 @@
 }
 
+size_t gta02_get_irq_count(void)
+{
+	return GTA02_IRQ_COUNT;
+}
+
 static void gta02_timer_irq_init(void)
 {
Index: kernel/arch/arm32/src/mach/integratorcp/integratorcp.c
===================================================================
--- kernel/arch/arm32/src/mach/integratorcp/integratorcp.c	(revision 99b2564010a554f44b9d4abdeda4d41b63dfd1ae)
+++ kernel/arch/arm32/src/mach/integratorcp/integratorcp.c	(revision ecf083ddad676b0da750a0fddb69925ae0855751)
@@ -64,5 +64,6 @@
 	icp_frame_init,
 	icp_output_init,
-	icp_input_init
+	icp_input_init,
+	icp_get_irq_count
 };
 
@@ -336,4 +337,8 @@
 }
 
+size_t icp_get_irq_count(void)
+{
+	return ICP_IRQ_COUNT;
+}
 
 /** @}
Index: kernel/arch/arm32/src/mach/testarm/testarm.c
===================================================================
--- kernel/arch/arm32/src/mach/testarm/testarm.c	(revision 99b2564010a554f44b9d4abdeda4d41b63dfd1ae)
+++ kernel/arch/arm32/src/mach/testarm/testarm.c	(revision ecf083ddad676b0da750a0fddb69925ae0855751)
@@ -64,5 +64,6 @@
 	gxemul_frame_init,
 	gxemul_output_init,
-	gxemul_input_init
+	gxemul_input_init,
+	gxemul_get_irq_count
 };
 
@@ -126,4 +127,9 @@
 }
 
+size_t gxemul_get_irq_count(void)
+{
+	return GXEMUL_IRQ_COUNT;
+}
+
 /** Starts gxemul Real Time Clock device, which asserts regular interrupts.
  *
Index: kernel/arch/arm32/src/machine_func.c
===================================================================
--- kernel/arch/arm32/src/machine_func.c	(revision 99b2564010a554f44b9d4abdeda4d41b63dfd1ae)
+++ kernel/arch/arm32/src/machine_func.c	(revision ecf083ddad676b0da750a0fddb69925ae0855751)
@@ -128,16 +128,5 @@
 size_t machine_get_irq_count(void)
 {
-	size_t irq_count;
- 
-#if defined(MACHINE_gta02)
-	irq_count = GTA02_IRQ_COUNT;
-#elif defined(MACHINE_testarm)
-	irq_count = GXEMUL_IRQ_COUNT;
-#elif defined(MACHINE_integratorcp)
-	irq_count = ICP_IRQ_COUNT;
-#else
-#error Machine type not defined.
-#endif
-	return irq_count;
+	return (machine_ops->machine_get_irq_count)();
 }
 
