fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / xtensa / kernel / traps.c
index 225d64d..693ab26 100644 (file)
@@ -75,7 +75,7 @@ extern void system_call (struct pt_regs*);
 #define USER           0x02
 
 #define COPROCESSOR(x)                                                 \
-{ XCHAL_EXCCAUSE_COPROCESSOR ## x ## _DISABLED, USER, fast_coprocessor }
+{ EXCCAUSE_COPROCESSOR ## x ## _DISABLED, USER, fast_coprocessor }
 
 typedef struct {
        int cause;
@@ -85,38 +85,38 @@ typedef struct {
 
 dispatch_init_table_t __init dispatch_init_table[] = {
 
-{ XCHAL_EXCCAUSE_ILLEGAL_INSTRUCTION,  0,         do_illegal_instruction},
-{ XCHAL_EXCCAUSE_SYSTEM_CALL,          KRNL,      fast_syscall_kernel },
-{ XCHAL_EXCCAUSE_SYSTEM_CALL,          USER,      fast_syscall_user },
-{ XCHAL_EXCCAUSE_SYSTEM_CALL,          0,         system_call },
-/* XCHAL_EXCCAUSE_INSTRUCTION_FETCH unhandled */
-/* XCHAL_EXCCAUSE_LOAD_STORE_ERROR unhandled*/
-{ XCHAL_EXCCAUSE_LEVEL1_INTERRUPT,     0,         do_interrupt },
-{ XCHAL_EXCCAUSE_ALLOCA,               USER|KRNL, fast_alloca },
-/* XCHAL_EXCCAUSE_INTEGER_DIVIDE_BY_ZERO unhandled */
-/* XCHAL_EXCCAUSE_PRIVILEGED unhandled */
+{ EXCCAUSE_ILLEGAL_INSTRUCTION,        0,         do_illegal_instruction},
+{ EXCCAUSE_SYSTEM_CALL,                KRNL,      fast_syscall_kernel },
+{ EXCCAUSE_SYSTEM_CALL,                USER,      fast_syscall_user },
+{ EXCCAUSE_SYSTEM_CALL,                0,         system_call },
+/* EXCCAUSE_INSTRUCTION_FETCH unhandled */
+/* EXCCAUSE_LOAD_STORE_ERROR unhandled*/
+{ EXCCAUSE_LEVEL1_INTERRUPT,   0,         do_interrupt },
+{ EXCCAUSE_ALLOCA,             USER|KRNL, fast_alloca },
+/* EXCCAUSE_INTEGER_DIVIDE_BY_ZERO unhandled */
+/* EXCCAUSE_PRIVILEGED unhandled */
 #if XCHAL_UNALIGNED_LOAD_EXCEPTION || XCHAL_UNALIGNED_STORE_EXCEPTION
 #ifdef CONFIG_UNALIGNED_USER
-{ XCHAL_EXCCAUSE_UNALIGNED,            USER,      fast_unaligned },
+{ EXCCAUSE_UNALIGNED,          USER,      fast_unaligned },
 #else
-{ XCHAL_EXCCAUSE_UNALIGNED,            0,         do_unaligned_user },
+{ EXCCAUSE_UNALIGNED,          0,         do_unaligned_user },
 #endif
-{ XCHAL_EXCCAUSE_UNALIGNED,            KRNL,      fast_unaligned },
+{ EXCCAUSE_UNALIGNED,          KRNL,      fast_unaligned },
 #endif
-{ XCHAL_EXCCAUSE_ITLB_MISS,            0,         do_page_fault },
-{ XCHAL_EXCCAUSE_ITLB_MISS,            USER|KRNL, fast_second_level_miss},
-{ XCHAL_EXCCAUSE_ITLB_MULTIHIT,                0,         do_multihit },
-{ XCHAL_EXCCAUSE_ITLB_PRIVILEGE,       0,         do_page_fault },
-/* XCHAL_EXCCAUSE_SIZE_RESTRICTION unhandled */
-{ XCHAL_EXCCAUSE_FETCH_CACHE_ATTRIBUTE,        0,         do_page_fault },
-{ XCHAL_EXCCAUSE_DTLB_MISS,            USER|KRNL, fast_second_level_miss},
-{ XCHAL_EXCCAUSE_DTLB_MISS,            0,         do_page_fault },
-{ XCHAL_EXCCAUSE_DTLB_MULTIHIT,                0,         do_multihit },
-{ XCHAL_EXCCAUSE_DTLB_PRIVILEGE,       0,         do_page_fault },
-/* XCHAL_EXCCAUSE_DTLB_SIZE_RESTRICTION unhandled */
-{ XCHAL_EXCCAUSE_STORE_CACHE_ATTRIBUTE,        USER|KRNL, fast_store_prohibited },
-{ XCHAL_EXCCAUSE_STORE_CACHE_ATTRIBUTE,        0,         do_page_fault },
-{ XCHAL_EXCCAUSE_LOAD_CACHE_ATTRIBUTE, 0,         do_page_fault },
+{ EXCCAUSE_ITLB_MISS,          0,         do_page_fault },
+{ EXCCAUSE_ITLB_MISS,          USER|KRNL, fast_second_level_miss},
+{ EXCCAUSE_ITLB_MULTIHIT,              0,         do_multihit },
+{ EXCCAUSE_ITLB_PRIVILEGE,     0,         do_page_fault },
+/* EXCCAUSE_SIZE_RESTRICTION unhandled */
+{ EXCCAUSE_FETCH_CACHE_ATTRIBUTE,      0,         do_page_fault },
+{ EXCCAUSE_DTLB_MISS,          USER|KRNL, fast_second_level_miss},
+{ EXCCAUSE_DTLB_MISS,          0,         do_page_fault },
+{ EXCCAUSE_DTLB_MULTIHIT,              0,         do_multihit },
+{ EXCCAUSE_DTLB_PRIVILEGE,     0,         do_page_fault },
+/* EXCCAUSE_DTLB_SIZE_RESTRICTION unhandled */
+{ EXCCAUSE_STORE_CACHE_ATTRIBUTE,      USER|KRNL, fast_store_prohibited },
+{ EXCCAUSE_STORE_CACHE_ATTRIBUTE,      0,         do_page_fault },
+{ EXCCAUSE_LOAD_CACHE_ATTRIBUTE,       0,         do_page_fault },
 /* XCCHAL_EXCCAUSE_FLOATING_POINT unhandled */
 #if (XCHAL_CP_MASK & 1)
 COPROCESSOR(0),
@@ -461,7 +461,7 @@ void show_code(unsigned int *pc)
        }
 }
 
-spinlock_t die_lock = SPIN_LOCK_UNLOCKED;
+DEFINE_SPINLOCK(die_lock);
 
 void die(const char * str, struct pt_regs * regs, long err)
 {
@@ -487,11 +487,9 @@ void die(const char * str, struct pt_regs * regs, long err)
        if (in_interrupt())
                panic("Fatal exception in interrupt");
 
-       if (panic_on_oops) {
-               printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n");
-               ssleep(5);
+       if (panic_on_oops)
                panic("Fatal exception");
-       }
+
        do_exit(err);
 }