Index: arch/ppc32/src/interrupt.c
===================================================================
--- arch/ppc32/src/interrupt.c	(revision 874621f88e11575154ad0c2e08fc906a8d92e4c0)
+++ arch/ppc32/src/interrupt.c	(revision ae971b3e902b87e9e944e1e94506f329e69c3e97)
@@ -46,4 +46,16 @@
 
 
+/** Handler of external interrupts */
+static void exception_external(int n, istate_t *istate)
+{
+	int inum;
+
+	while ((inum = pic_get_pending()) != -1) {
+		exc_dispatch(inum + INT_OFFSET, istate);
+		pic_ack_interrupt(inum);
+	}
+}
+
+
 static void exception_decrementer(int n, istate_t *istate)
 {
@@ -56,5 +68,14 @@
 void interrupt_init(void)
 {
+	exc_register(VECTOR_DATA_STORAGE, "data_storage", pht_refill);
+	exc_register(VECTOR_INSTRUCTION_STORAGE, "instruction_storage", pht_refill);
+	exc_register(VECTOR_EXTERNAL, "external", exception_external);
 	exc_register(VECTOR_DECREMENTER, "timer", exception_decrementer);
+}
+
+
+static void ipc_int(int n, istate_t *istate)
+{
+	ipc_irq_send_notif(n - INT_OFFSET);
 }
 
@@ -63,16 +84,4 @@
 void irq_ipc_bind_arch(__native irq)
 {
-	panic("not implemented\n");
-	/* TODO */
+	int_register(irq, "ipc_int", ipc_int);
 }
-
-/** Handler of externul interrupts */
-void extint_handler(int n, istate_t *istate)
-{
-	int inum;
-
-	while ((inum = pic_get_pending()) != -1) {
-		exc_dispatch(inum+INT_OFFSET, istate);
-		pic_ack_interrupt(inum);
-	}
-}
