Index: uspace/app/top/screen.c
===================================================================
--- uspace/app/top/screen.c	(revision 1113c9e130ee0cf71775a520394a8c7b73e1cf1e)
+++ uspace/app/top/screen.c	(revision c0f13d2675d8c8db426acccaba56a4377f515dc3)
@@ -325,4 +325,41 @@
 }
 
+static inline void print_exc_head(void)
+{
+	screen_style_inverted();
+	printf("  ID                     Desc    Count   Cycles");
+	screen_newline();
+	screen_style_normal();
+}
+
+static inline void print_exc(data_t *data)
+{
+	ipcarg_t cols;
+	ipcarg_t rows;
+	screen_get_size(&cols, &rows);
+	
+	ipcarg_t col;
+	ipcarg_t row;
+	screen_get_pos(&col, &row);
+	
+	size_t i;
+	for (i = 0; (i < data->exceptions_count) && (row < rows); i++, row++) {
+		uint64_t cycles;
+		char suffix;
+		
+		order_suffix(data->exceptions[i].cycles, &cycles, &suffix);
+		printf("%8u %20s %8" PRIu64 " %8" PRIu64 "%c",
+		     data->exceptions[i].id, data->exceptions[i].desc,
+		     data->exceptions[i].count, cycles, suffix);
+		
+		screen_newline();
+	}
+	
+	while (row < rows) {
+		screen_newline();
+		row++;
+	}
+}
+
 void print_data(data_t *data)
 {
@@ -338,10 +375,17 @@
 	screen_newline();
 	
-	if (operation_type == OP_IPC) {
+	switch (operation_type) {
+	case OP_TASKS:
+		print_task_head();
+		print_tasks(data);
+		break;
+	case OP_IPC:
 		print_ipc_head();
 		print_ipc(data);
-	} else {
-		print_task_head();
-		print_tasks(data);
+		break;
+	case OP_EXC:
+		print_exc_head();
+		print_exc(data);
+		break;
 	}
 	
Index: uspace/app/top/top.c
===================================================================
--- uspace/app/top/top.c	(revision 1113c9e130ee0cf71775a520394a8c7b73e1cf1e)
+++ uspace/app/top/top.c	(revision c0f13d2675d8c8db426acccaba56a4377f515dc3)
@@ -115,4 +115,8 @@
 		return "Cannot get threads";
 	
+	target->exceptions = stats_get_exceptions(&(target->exceptions_count));
+	if (target->exceptions == NULL)
+		return "Cannot get exceptions";
+	
 	/* Get physical memory */
 	target->physmem = stats_get_physmem();
@@ -231,4 +235,7 @@
 	if (target->threads != NULL)
 		free(target->threads);
+	
+	if (target->exceptions != NULL)
+		free(target->exceptions);
 	
 	if (target->physmem != NULL)
@@ -285,4 +292,8 @@
 				operation_type = OP_TASKS;
 				break;
+			case 'e':
+				print_warning("Showing exception statistics");
+				operation_type = OP_EXC;
+				break;
 			default:
 				print_warning("Unknown command: %c", c);
Index: uspace/app/top/top.h
===================================================================
--- uspace/app/top/top.h	(revision 1113c9e130ee0cf71775a520394a8c7b73e1cf1e)
+++ uspace/app/top/top.h	(revision c0f13d2675d8c8db426acccaba56a4377f515dc3)
@@ -46,4 +46,5 @@
 #define OP_TASKS  1
 #define OP_IPC    2
+#define OP_EXC    3
 
 extern int operation_type;
@@ -89,4 +90,7 @@
 	stats_thread_t *threads;
 	
+	size_t exceptions_count;
+	stats_exc_t *exceptions;
+	
 	stats_physmem_t *physmem;
 } data_t;
