git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git]
/
arch
/
alpha
/
kernel
/
traps.c
diff --git
a/arch/alpha/kernel/traps.c
b/arch/alpha/kernel/traps.c
index
5234879
..
2248735
100644
(file)
--- a/
arch/alpha/kernel/traps.c
+++ b/
arch/alpha/kernel/traps.c
@@
-16,6
+16,7
@@
#include <linux/smp_lock.h>
#include <linux/module.h>
#include <linux/init.h>
#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>
#include <asm/gentrap.h>
#include <asm/uaccess.h>
@@
-119,7
+120,7
@@
static void
dik_show_trace(unsigned long *sp)
{
long i = 0;
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;
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;
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 (i > 40) {
printk(" ...");
break;
@@
-220,12
+223,12
@@
do_entArith(unsigned long summary, unsigned long write_mask,
if (si_code == 0)
return;
}
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_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);
}
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"),
data[0]);
}
die_if_kernel((type == 1 ? "Kernel Bug" : "Instruction fault"),
- regs, type,
0
);
+ regs, type,
NULL
);
}
switch (type) {
}
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_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 */
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_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_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_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_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;
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_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;
}
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_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);
}
send_sig_info(SIGILL, &info, current);
}
@@
-407,12
+410,12
@@
do_entDbg(struct pt_regs *regs)
{
siginfo_t info;
{
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_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);
}
force_sig_info(SIGILL, &info, current);
}
@@
-762,7
+765,7
@@
static int unauser_reg_offsets[32] = {
#undef R
asmlinkage void
#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;
unsigned long reg, struct pt_regs *regs)
{
static int cnt = 0;