Index: kernel/genarch/src/kbd/z8530.c
===================================================================
--- kernel/genarch/src/kbd/z8530.c	(revision ec2c55a4c241975f1e193ce31dbbbe525c29fdf1)
+++ kernel/genarch/src/kbd/z8530.c	(revision ee454eb5d8b6afbdf2584335a5838d1980e66cb9)
@@ -39,6 +39,6 @@
 #include <genarch/kbd/scanc.h>
 #include <genarch/kbd/scanc_sun.h>
+#include <arch/drivers/fhc.h>
 #include <arch/drivers/z8530.h>
-#include <arch/drivers/kbd.h>
 #include <arch/interrupt.h>
 #include <cpu.h>
@@ -65,5 +65,4 @@
 };
 
-void z8530_interrupt(int n, istate_t *istate);
 void z8530_wait(void);
 
@@ -72,10 +71,9 @@
 {
 }
+
 /** Resume the former interrupt vector */
 void z8530_release(void)
 {
 }
-
-#include <print.h>
 
 /** Initialize z8530. */
@@ -85,6 +83,7 @@
 	stdin = &kbrd;
 
+	(void) z8530_read_a(RR8);
+
 	z8530_write_a(WR1, WR1_IARCSC);	/* interrupt on all characters */
-	z8530_write_a(WR2, 12);		/* FIXME: IRQ12 ??? */
 
 	/* 8 bits per character and enable receiver */
@@ -92,4 +91,12 @@
 	
 	z8530_write_a(WR9, WR9_MIE);	/* Master Interrupt Enable. */
+	
+	/*
+	 * We need to initialize the FireHose Controller,
+	 * to which is this z8530 attached. Otherwise
+	 * interrupts generated by the z8530 would not
+	 * be forwarded to the CPU.
+	 */
+	fhc_init();
 }
 
@@ -99,6 +106,7 @@
  * @param istate Interrupted state.
  */
-void z8530_interrupt(int n, istate_t *istate)
+void z8530_interrupt(void)
 {
+	z8530_poll();
 }
 
