Index: arch/ia64/include/interrupt.h
===================================================================
--- arch/ia64/include/interrupt.h	(revision afc12d0ad189570f94281b317d71fd3372c458ba)
+++ arch/ia64/include/interrupt.h	(revision a175a672ae67972fd0aeeaae855819ca1135ee7c)
@@ -121,6 +121,5 @@
 static inline int istate_from_uspace(istate_t *istate)
 {
-	panic("TODO: istate_from_uspace not yet implemented");
-	return 0;
+	return (istate->cr_iip)<0xe000000000000000ULL;
 }
 
Index: arch/ia64/src/interrupt.c
===================================================================
--- arch/ia64/src/interrupt.c	(revision afc12d0ad189570f94281b317d71fd3372c458ba)
+++ arch/ia64/src/interrupt.c	(revision a175a672ae67972fd0aeeaae855819ca1135ee7c)
@@ -225,4 +225,5 @@
 void universal_handler(__u64 vector, istate_t *istate)
 {
+	fault_if_from_uspace(istate,"Interruption: %#hx (%s)\n",(__u16) vector, vector_to_string(vector));
 	dump_interrupted_context(istate);
 	panic("Interruption: %#hx (%s)\n", (__u16) vector, vector_to_string(vector));
@@ -268,4 +269,5 @@
 		return;
 	}
+	return;
 	panic("not implemented\n");
 	/* TODO */
Index: arch/ia64/src/mm/tlb.c
===================================================================
--- arch/ia64/src/mm/tlb.c	(revision afc12d0ad189570f94281b317d71fd3372c458ba)
+++ arch/ia64/src/mm/tlb.c	(revision a175a672ae67972fd0aeeaae855819ca1135ee7c)
@@ -46,4 +46,5 @@
 #include <print.h>
 #include <arch.h>
+#include <interrupt.h>
 
 /** Invalidate all TLB entries. */
@@ -453,4 +454,5 @@
 		page_table_unlock(AS, true);
 		if (as_page_fault(va, PF_ACCESS_EXEC, istate) == AS_PF_FAULT) {
+			fault_if_from_uspace(istate,"Page fault at %P",va);
 			panic("%s: va=%p, rid=%d, iip=%p\n", __FUNCTION__, va, rid, istate->cr_iip);
 		}
@@ -499,4 +501,5 @@
 		page_table_unlock(AS, true);
 		if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) {
+			fault_if_from_uspace(istate,"Page fault at %P",va);
 			panic("%s: va=%p, rid=%d, iip=%p\n", __FUNCTION__, va, rid, istate->cr_iip);
 		}
@@ -544,4 +547,5 @@
 	} else {
 		if (as_page_fault(va, PF_ACCESS_WRITE, istate) == AS_PF_FAULT) {
+			fault_if_from_uspace(istate,"Page fault at %P",va);
 			panic("%s: va=%p, rid=%d, iip=%p\n", __FUNCTION__, va, rid, istate->cr_iip);
 			t->d = true;
@@ -580,4 +584,5 @@
 	} else {
 		if (as_page_fault(va, PF_ACCESS_EXEC, istate) == AS_PF_FAULT) {
+			fault_if_from_uspace(istate,"Page fault at %P",va);
 			panic("%s: va=%p, rid=%d, iip=%p\n", __FUNCTION__, va, rid, istate->cr_iip);
 			t->a = true;
@@ -616,4 +621,5 @@
 	} else {
 		if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) {
+			fault_if_from_uspace(istate,"Page fault at %P",va);
 			panic("%s: va=%p, rid=%d, iip=%p\n", __FUNCTION__, va, rid, istate->cr_iip);
 			t->a = true;
@@ -657,4 +663,5 @@
 		page_table_unlock(AS, true);
 		if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) {
+			fault_if_from_uspace(istate,"Page fault at %P",va);
 			panic("%s: va=%p, rid=%d\n", __FUNCTION__, va, rid);
 		}
