#include <linux/smp_lock.h>
#include <linux/module.h>
#include <linux/init.h>
+#include <linux/kallsyms.h>
#include <asm/gentrap.h>
#include <asm/uaccess.h>
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;
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;
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);
}
data[0]);
}
die_if_kernel((type == 1 ? "Kernel Bug" : "Instruction fault"),
- regs, type, 0);
+ regs, type, NULL);
}
switch (type) {
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 */
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:
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;
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;
}
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);
}
{
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);
}
#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;