X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Falpha%2Fkernel%2Ftraps.c;h=2248735b8f5ee1b838d7e1df90d02d548e0bf9d4;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=52348791ce1e976fb738b8fa3c302225cfdfe327;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c index 52348791c..2248735b8 100644 --- a/arch/alpha/kernel/traps.c +++ b/arch/alpha/kernel/traps.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -119,7 +120,7 @@ static void dik_show_trace(unsigned long *sp) { long i = 0; - printk("Trace:"); + printk("Trace:\n"); while (0x1ff8 & (unsigned long) sp) { extern char _stext[], _etext[]; unsigned long tmp = *sp; @@ -128,7 +129,9 @@ dik_show_trace(unsigned long *sp) continue; if (tmp >= (unsigned long) &_etext) continue; - printk("%lx%c", tmp, ' '); + printk("[<%lx>]", tmp); + print_symbol(" %s", tmp); + printk("\n"); if (i > 40) { printk(" ..."); break; @@ -220,12 +223,12 @@ do_entArith(unsigned long summary, unsigned long write_mask, if (si_code == 0) return; } - die_if_kernel("Arithmetic fault", regs, 0, 0); + die_if_kernel("Arithmetic fault", regs, 0, NULL); info.si_signo = SIGFPE; info.si_errno = 0; info.si_code = si_code; - info.si_addr = (void *) regs->pc; + info.si_addr = (void __user *) regs->pc; send_sig_info(SIGFPE, &info, current); } @@ -244,7 +247,7 @@ do_entIF(unsigned long type, struct pt_regs *regs) data[0]); } die_if_kernel((type == 1 ? "Kernel Bug" : "Instruction fault"), - regs, type, 0); + regs, type, NULL); } switch (type) { @@ -253,7 +256,7 @@ do_entIF(unsigned long type, struct pt_regs *regs) info.si_errno = 0; info.si_code = TRAP_BRKPT; info.si_trapno = 0; - info.si_addr = (void *) regs->pc; + info.si_addr = (void __user *) regs->pc; if (ptrace_cancel_bpt(current)) { regs->pc -= 4; /* make pc point to former bpt */ @@ -266,13 +269,13 @@ do_entIF(unsigned long type, struct pt_regs *regs) info.si_signo = SIGTRAP; info.si_errno = 0; info.si_code = __SI_FAULT; - info.si_addr = (void *) regs->pc; + info.si_addr = (void __user *) regs->pc; info.si_trapno = 0; send_sig_info(SIGTRAP, &info, current); return; case 2: /* gentrap */ - info.si_addr = (void *) regs->pc; + info.si_addr = (void __user *) regs->pc; info.si_trapno = regs->r16; switch ((long) regs->r16) { case GEN_INTOVF: @@ -334,7 +337,7 @@ do_entIF(unsigned long type, struct pt_regs *regs) info.si_signo = signo; info.si_errno = 0; info.si_code = code; - info.si_addr = (void *) regs->pc; + info.si_addr = (void __user *) regs->pc; send_sig_info(signo, &info, current); return; @@ -362,7 +365,7 @@ do_entIF(unsigned long type, struct pt_regs *regs) info.si_signo = SIGFPE; info.si_errno = 0; info.si_code = si_code; - info.si_addr = (void *) regs->pc; + info.si_addr = (void __user *) regs->pc; send_sig_info(SIGFPE, &info, current); return; } @@ -391,7 +394,7 @@ do_entIF(unsigned long type, struct pt_regs *regs) info.si_signo = SIGILL; info.si_errno = 0; info.si_code = ILL_ILLOPC; - info.si_addr = (void *) regs->pc; + info.si_addr = (void __user *) regs->pc; send_sig_info(SIGILL, &info, current); } @@ -407,12 +410,12 @@ do_entDbg(struct pt_regs *regs) { siginfo_t info; - die_if_kernel("Instruction fault", regs, 0, 0); + die_if_kernel("Instruction fault", regs, 0, NULL); info.si_signo = SIGILL; info.si_errno = 0; info.si_code = ILL_ILLOPC; - info.si_addr = (void *) regs->pc; + info.si_addr = (void __user *) regs->pc; force_sig_info(SIGILL, &info, current); } @@ -762,7 +765,7 @@ static int unauser_reg_offsets[32] = { #undef R asmlinkage void -do_entUnaUser(void * va, unsigned long opcode, +do_entUnaUser(void __user * va, unsigned long opcode, unsigned long reg, struct pt_regs *regs) { static int cnt = 0;