Index: arch/ia64/include/asm.h
===================================================================
--- arch/ia64/include/asm.h	(revision 38207b9a51f26e35bdc08cc8200122e5fe9f1c29)
+++ arch/ia64/include/asm.h	(revision 60f6b7c45ff45619f5a597a76dd55463fc15ceef)
@@ -53,3 +53,12 @@
 void asm_delay_loop(__u32 t);
 
+
+#define set_shadow_register(reg,val) {__u64 v = val; __asm__  volatile("mov r15 = %0;;\n""bsw.0;;\n""mov "   #reg   " = r15;;\n""bsw.1;;\n" : : "r" (v) : "r15" ); }
+#define get_shadow_register(reg,val) {__u64 v ; __asm__  volatile("bsw.0;;\n" "mov r15 = r" #reg ";;\n" "bsw.1;;\n" "mov %0 = r15;;\n" : "=r" (v) : : "r15" ); val=v; }
+
+#define get_control_register(reg,val) {__u64 v ; __asm__  volatile("mov r15 = cr" #reg ";;\n" "mov %0 = r15;;\n" : "=r" (v) : : "r15" ); val=v; }
+#define get_aplication_register(reg,val) {__u64 v ; __asm__  volatile("mov r15 = ar" #reg ";;\n" "mov %0 = r15;;\n" : "=r" (v) : : "r15" ); val=v; }
+#define get_psr(val) {__u64 v ; __asm__  volatile("mov r15 = psr;;\n" "mov %0 = r15;;\n" : "=r" (v) : : "r15" ); val=v; }
+
+
 #endif
Index: arch/ia64/src/cpu/cpu.c
===================================================================
--- arch/ia64/src/cpu/cpu.c	(revision 38207b9a51f26e35bdc08cc8200122e5fe9f1c29)
+++ arch/ia64/src/cpu/cpu.c	(revision 60f6b7c45ff45619f5a597a76dd55463fc15ceef)
@@ -2,4 +2,5 @@
 #include <print.h>
 #include <panic.h>
+#include <arch/types.h>
 
 extern int IVT;
@@ -14,13 +15,24 @@
 
     int *p=&IVT;
+    
+    volatile __u64 hlp,hlp2;
 
 
-	__asm__ (
+    int psr = 0x2000;
+
+	__asm__  volatile (
 		"mov r15 = %0;;"
 		"mov cr2 = r15;;"
+		"mov psr.l = %1;;"
 		: 
-		: "r" (p)
+		: "r" (p), "r" (psr)
 		: "r15"
 	);
+
+
+
+	/*Switch register bank of regs r16 .. r31 to 1 It is automaticly cleared on exception*/
+	__asm__ volatile ("bsw.1;;");             
+	
 
 }
Index: arch/ia64/src/interrupt_handler.c
===================================================================
--- arch/ia64/src/interrupt_handler.c	(revision 38207b9a51f26e35bdc08cc8200122e5fe9f1c29)
+++ arch/ia64/src/interrupt_handler.c	(revision 60f6b7c45ff45619f5a597a76dd55463fc15ceef)
@@ -30,5 +30,9 @@
 
 #include <panic.h>
+#include <print.h>
 #include <arch/types.h>
+#include <arch/asm.h>
+
+extern __u64 REG_DUMP;
 
 
@@ -48,17 +52,83 @@
 
 
+#define cr_dump(r) {__u64 val; get_control_register(r,val); printf("cr"#r":%Q\n",val);}
+#define ar_dump(r) {__u64 val; get_aplication_register(r,val); printf("ar"#r":%Q\n",val);}
+
 void universal_handler(void);
 void universal_handler(void)
 {
-	__u64 i;
+	__u64 vector,psr;
+	__u64 *p;
+	int i;
+	
+	
+	get_shadow_register(16,vector);
 
-	__asm__ (
-		"mov  %0 = r12;;"
-		: "=r" (i)
-		: 
-		: "r15"
-	);
+	
+	p=&REG_DUMP;
 
-	panic("\nException:%Q\n",i);
+	for(i=0;i<128;i+=2) printf("gr%d:%Q\tgr%d:%Q\n",i,p[i],i+1,p[i+1]);
+
+
+	cr_dump(0);	
+	cr_dump(1);	
+	cr_dump(2);	
+	cr_dump(8);	
+	cr_dump(16);	
+	cr_dump(17);	
+	cr_dump(19);	
+	cr_dump(20);	
+	cr_dump(21);	
+	cr_dump(22);	
+	cr_dump(23);	
+	cr_dump(24);	
+	cr_dump(25);	
+	cr_dump(64);	
+	cr_dump(65);	
+	cr_dump(66);	
+	cr_dump(67);	
+	cr_dump(68);	
+	cr_dump(69);	
+	cr_dump(70);	
+	cr_dump(71);	
+	cr_dump(72);	
+	cr_dump(73);	
+	cr_dump(74);	
+	cr_dump(80);	
+	cr_dump(81);	
+	
+	ar_dump(0);	
+	ar_dump(1);	
+	ar_dump(2);	
+	ar_dump(3);	
+	ar_dump(4);	
+	ar_dump(5);	
+	ar_dump(6);	
+	ar_dump(7);	
+	ar_dump(16);	
+	ar_dump(17);	
+	ar_dump(18);	
+	ar_dump(19);	
+	ar_dump(21);	
+	ar_dump(24);	
+	ar_dump(25);	
+	ar_dump(26);	
+	ar_dump(27);	
+	ar_dump(28);	
+	ar_dump(29);	
+	ar_dump(30);	
+	ar_dump(32);	
+	ar_dump(36);	
+	ar_dump(40);	
+	ar_dump(44);	
+	ar_dump(64);	
+	ar_dump(65);	
+	ar_dump(66);	
+
+	get_psr(psr);
+
+	printf("\nPSR:%Q\n",psr);
+	
+	panic("\nException:%Q\n",vector);
 }
 
Index: arch/ia64/src/ivt.S
===================================================================
--- arch/ia64/src/ivt.S	(revision 38207b9a51f26e35bdc08cc8200122e5fe9f1c29)
+++ arch/ia64/src/ivt.S	(revision 60f6b7c45ff45619f5a597a76dd55463fc15ceef)
@@ -29,4 +29,329 @@
 
 
+
+dump_gregs:
+mov r16 = REG_DUMP;;
+st8 [r16] = r0;;
+add r16 = 8,r16 ;;
+st8 [r16] = r1;;
+add r16 = 8,r16 ;;
+st8 [r16] = r2;;
+add r16 = 8,r16 ;;
+st8 [r16] = r3;;
+add r16 = 8,r16 ;;
+st8 [r16] = r4;;
+add r16 = 8,r16 ;;
+st8 [r16] = r5;;
+add r16 = 8,r16 ;;
+st8 [r16] = r6;;
+add r16 = 8,r16 ;;
+st8 [r16] = r7;;
+add r16 = 8,r16 ;;
+st8 [r16] = r8;;
+add r16 = 8,r16 ;;
+st8 [r16] = r9;;
+add r16 = 8,r16 ;;
+st8 [r16] = r10;;
+add r16 = 8,r16 ;;
+st8 [r16] = r11;;
+add r16 = 8,r16 ;;
+st8 [r16] = r12;;
+add r16 = 8,r16 ;;
+st8 [r16] = r13;;
+add r16 = 8,r16 ;;
+st8 [r16] = r14;;
+add r16 = 8,r16 ;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+
+bsw.1;;
+mov r15 = r16;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r17;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r18;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r19;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r20;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r21;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r22;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r23;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r24;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r25;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r26;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r27;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r28;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r29;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r30;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+bsw.1;;
+mov r15 = r31;;
+bsw.0;;
+st8 [r16] = r15;;
+add r16 = 8,r16 ;;
+
+
+st8 [r16] = r32;;
+add r16 = 8,r16 ;;
+st8 [r16] = r33;;
+add r16 = 8,r16 ;;
+st8 [r16] = r34;;
+add r16 = 8,r16 ;;
+st8 [r16] = r35;;
+add r16 = 8,r16 ;;
+st8 [r16] = r36;;
+add r16 = 8,r16 ;;
+st8 [r16] = r37;;
+add r16 = 8,r16 ;;
+st8 [r16] = r38;;
+add r16 = 8,r16 ;;
+st8 [r16] = r39;;
+add r16 = 8,r16 ;;
+st8 [r16] = r40;;
+add r16 = 8,r16 ;;
+st8 [r16] = r41;;
+add r16 = 8,r16 ;;
+st8 [r16] = r42;;
+add r16 = 8,r16 ;;
+st8 [r16] = r43;;
+add r16 = 8,r16 ;;
+st8 [r16] = r44;;
+add r16 = 8,r16 ;;
+st8 [r16] = r45;;
+add r16 = 8,r16 ;;
+st8 [r16] = r46;;
+add r16 = 8,r16 ;;
+st8 [r16] = r47;;
+add r16 = 8,r16 ;;
+st8 [r16] = r48;;
+add r16 = 8,r16 ;;
+st8 [r16] = r49;;
+add r16 = 8,r16 ;;
+st8 [r16] = r50;;
+add r16 = 8,r16 ;;
+st8 [r16] = r51;;
+add r16 = 8,r16 ;;
+st8 [r16] = r52;;
+add r16 = 8,r16 ;;
+st8 [r16] = r53;;
+add r16 = 8,r16 ;;
+st8 [r16] = r54;;
+add r16 = 8,r16 ;;
+st8 [r16] = r55;;
+add r16 = 8,r16 ;;
+st8 [r16] = r56;;
+add r16 = 8,r16 ;;
+st8 [r16] = r57;;
+add r16 = 8,r16 ;;
+st8 [r16] = r58;;
+add r16 = 8,r16 ;;
+st8 [r16] = r59;;
+add r16 = 8,r16 ;;
+st8 [r16] = r60;;
+add r16 = 8,r16 ;;
+st8 [r16] = r61;;
+add r16 = 8,r16 ;;
+st8 [r16] = r62;;
+add r16 = 8,r16 ;;
+st8 [r16] = r63;;
+add r16 = 8,r16 ;;
+
+
+
+st8 [r16] = r64;;
+add r16 = 8,r16 ;;
+st8 [r16] = r65;;
+add r16 = 8,r16 ;;
+st8 [r16] = r66;;
+add r16 = 8,r16 ;;
+st8 [r16] = r67;;
+add r16 = 8,r16 ;;
+st8 [r16] = r68;;
+add r16 = 8,r16 ;;
+st8 [r16] = r69;;
+add r16 = 8,r16 ;;
+st8 [r16] = r70;;
+add r16 = 8,r16 ;;
+st8 [r16] = r71;;
+add r16 = 8,r16 ;;
+st8 [r16] = r72;;
+add r16 = 8,r16 ;;
+st8 [r16] = r73;;
+add r16 = 8,r16 ;;
+st8 [r16] = r74;;
+add r16 = 8,r16 ;;
+st8 [r16] = r75;;
+add r16 = 8,r16 ;;
+st8 [r16] = r76;;
+add r16 = 8,r16 ;;
+st8 [r16] = r77;;
+add r16 = 8,r16 ;;
+st8 [r16] = r78;;
+add r16 = 8,r16 ;;
+st8 [r16] = r79;;
+add r16 = 8,r16 ;;
+st8 [r16] = r80;;
+add r16 = 8,r16 ;;
+st8 [r16] = r81;;
+add r16 = 8,r16 ;;
+st8 [r16] = r82;;
+add r16 = 8,r16 ;;
+st8 [r16] = r83;;
+add r16 = 8,r16 ;;
+st8 [r16] = r84;;
+add r16 = 8,r16 ;;
+st8 [r16] = r85;;
+add r16 = 8,r16 ;;
+st8 [r16] = r86;;
+add r16 = 8,r16 ;;
+st8 [r16] = r87;;
+add r16 = 8,r16 ;;
+st8 [r16] = r88;;
+add r16 = 8,r16 ;;
+st8 [r16] = r89;;
+add r16 = 8,r16 ;;
+st8 [r16] = r90;;
+add r16 = 8,r16 ;;
+st8 [r16] = r91;;
+add r16 = 8,r16 ;;
+st8 [r16] = r92;;
+add r16 = 8,r16 ;;
+st8 [r16] = r93;;
+add r16 = 8,r16 ;;
+st8 [r16] = r94;;
+add r16 = 8,r16 ;;
+st8 [r16] = r95;;
+add r16 = 8,r16 ;;
+
+
+
+st8 [r16] = r96;;
+add r16 = 8,r16 ;;
+st8 [r16] = r97;;
+add r16 = 8,r16 ;;
+st8 [r16] = r98;;
+add r16 = 8,r16 ;;
+st8 [r16] = r99;;
+add r16 = 8,r16 ;;
+st8 [r16] = r100;;
+add r16 = 8,r16 ;;
+st8 [r16] = r101;;
+add r16 = 8,r16 ;;
+st8 [r16] = r102;;
+add r16 = 8,r16 ;;
+st8 [r16] = r103;;
+add r16 = 8,r16 ;;
+st8 [r16] = r104;;
+add r16 = 8,r16 ;;
+st8 [r16] = r105;;
+add r16 = 8,r16 ;;
+st8 [r16] = r106;;
+add r16 = 8,r16 ;;
+st8 [r16] = r107;;
+add r16 = 8,r16 ;;
+st8 [r16] = r108;;
+add r16 = 8,r16 ;;
+st8 [r16] = r109;;
+add r16 = 8,r16 ;;
+st8 [r16] = r110;;
+add r16 = 8,r16 ;;
+st8 [r16] = r111;;
+add r16 = 8,r16 ;;
+st8 [r16] = r112;;
+add r16 = 8,r16 ;;
+st8 [r16] = r113;;
+add r16 = 8,r16 ;;
+st8 [r16] = r114;;
+add r16 = 8,r16 ;;
+st8 [r16] = r115;;
+add r16 = 8,r16 ;;
+st8 [r16] = r116;;
+add r16 = 8,r16 ;;
+st8 [r16] = r117;;
+add r16 = 8,r16 ;;
+st8 [r16] = r118;;
+add r16 = 8,r16 ;;
+st8 [r16] = r119;;
+add r16 = 8,r16 ;;
+st8 [r16] = r120;;
+add r16 = 8,r16 ;;
+st8 [r16] = r121;;
+add r16 = 8,r16 ;;
+st8 [r16] = r122;;
+add r16 = 8,r16 ;;
+st8 [r16] = r123;;
+add r16 = 8,r16 ;;
+st8 [r16] = r124;;
+add r16 = 8,r16 ;;
+st8 [r16] = r125;;
+add r16 = 8,r16 ;;
+st8 [r16] = r126;;
+add r16 = 8,r16 ;;
+st8 [r16] = r127;;
+add r16 = 8,r16 ;;
+
+
+
+br.ret.sptk.many b0;;
+
+
+
+
+
 .macro Handler o h
 .org IVT + \o
@@ -36,5 +361,7 @@
 .macro Handler2 o 
 .org IVT + \o
-mov r12 = \o
+br.call.sptk.many b0 = dump_gregs;;
+mov r16 = \o ;;
+bsw.1;;
 br universal_handler;;
 .endm
@@ -72,5 +399,6 @@
 Handler2 0x5200
 Handler2 0x5300
-Handler 0x5400 general_exception
+#Handler 0x5400 general_exception
+Handler2 0x5400
 Handler2 0x5500
 Handler2 0x5600
@@ -127,3 +455,7 @@
 
 .align 32768
-.byte 0
+.global REG_DUMP
+
+REG_DUMP:
+.space 128*8
+
Index: src/main/main.c
===================================================================
--- src/main/main.c	(revision 38207b9a51f26e35bdc08cc8200122e5fe9f1c29)
+++ src/main/main.c	(revision 60f6b7c45ff45619f5a597a76dd55463fc15ceef)
@@ -133,6 +133,4 @@
 void main_bsp_separated_stack(void) 
 {
-
-	int a;
 	vm_t *m;
 	task_t *k;
