12 #include <linux/sched.h>
13 #include <linux/signal.h>
14 #include <linux/kernel.h>
16 #include <linux/types.h>
18 #include <linux/string.h>
19 #include <linux/linkage.h>
21 #include <linux/module.h>
23 #include <asm/asm-offsets.h>
24 #include <asm/setup.h>
26 #include <asm/uaccess.h>
27 #include <asm/pgtable.h>
28 #include <asm/siginfo.h>
29 #include <asm/unaligned.h>
77 switch (__frame->tbr &
TBR_TT) {
113 unsigned long x,
y, z;
126 switch (__frame->tbr &
TBR_TT) {
131 p = (
unsigned long __user *) __frame->gr8;
143 spin_lock_irq(&atomic_op_lock);
154 spin_unlock_irq(&atomic_op_lock);
161 p = (
unsigned long __user *) __frame->gr8;
169 spin_lock_irq(&atomic_op_lock);
177 spin_unlock_irq(&atomic_op_lock);
184 p = (
unsigned long __user *) __frame->gr8;
192 spin_lock_irq(&atomic_op_lock);
201 spin_unlock_irq(&atomic_op_lock);
208 p = (
unsigned long __user *) __frame->gr8;
216 spin_lock_irq(&atomic_op_lock);
225 spin_unlock_irq(&atomic_op_lock);
232 p = (
unsigned long __user *) __frame->gr8;
240 spin_lock_irq(&atomic_op_lock);
249 spin_unlock_irq(&atomic_op_lock);
256 p = (
unsigned long __user *) __frame->gr8;
264 spin_lock_irq(&atomic_op_lock);
273 spin_unlock_irq(&atomic_op_lock);
280 p = (
unsigned long __user *) __frame->gr8;
288 spin_lock_irq(&atomic_op_lock);
297 spin_unlock_irq(&atomic_op_lock);
305 spin_unlock_irq(&atomic_op_lock);
314 spin_unlock_irq(&atomic_op_lock);
325 info.si_addr = (
void __user *) __frame->pc;
346 info.si_addr = (
void __user *) __frame->pc;
383 info.si_addr = (
void __user *) ear0;
412 info.si_addr = (
void __user *)
446 info.si_addr = (
void __user *) __frame->pc;
456 unsigned long esr0,
unsigned long esr14,
unsigned long esr15,
457 unsigned long msr0,
unsigned long msr1)
465 esr0, esr14, esr15, msr0, msr1);
486 printk(
"CONTEXT: stack=0x%lx frame=0x%p LR=0x%lx RET=0x%lx\n",
491 "PSR ",
"ISR ",
"CCR ",
"CCCR",
492 "LR ",
"LCR ",
"PC ",
"_stt",
493 "sys ",
"GR8*",
"GNE0",
"GNE1",
495 "TBR ",
"SP ",
"FP ",
"GR3 ",
496 "GR4 ",
"GR5 ",
"GR6 ",
"GR7 ",
497 "GR8 ",
"GR9 ",
"GR10",
"GR11",
498 "GR12",
"GR13",
"GR14",
"GR15",
499 "GR16",
"GR17",
"GR18",
"GR19",
500 "GR20",
"GR21",
"GR22",
"GR23",
501 "GR24",
"GR25",
"GR26",
"GR27",
502 "EFRM",
"CURR",
"GR30",
"BFRM"
512 printk(
"Frame: @%08lx [%s]\n",
513 (
unsigned long) regs,
514 regs->
psr &
PSR_S ?
"kernel" :
"user");
516 reg = (
unsigned long *) regs;
517 for (loop = 0; loop < NR_PT_REGS; loop++) {
520 if (loop == NR_PT_REGS - 1 || loop % 5 == 4)
542 printk(
"\n===================================\n");
560 printk(
"<-- %s Frame: @%p -->\n",
561 frame->
psr &
PSR_S ?
"Kernel Mode" :
"User Mode",
564 reg = (
unsigned long *) frame;
565 for (loop = 0; loop < NR_PT_REGS; loop++) {
568 if (loop == NR_PT_REGS - 1 || loop % 5 == 4)
584 unsigned long tos = 0,
stop = 0,
base;
603 printk(
" %04lx :", tos & 0xffff);
605 printk(
" %08lx", *(
unsigned long *) tos);
623 if (((
unsigned long) frame) +
sizeof(*frame) != tos) {
624 printk(
"-- TOS %08lx does not follow frame %p --\n",
629 show_backtrace_regs(frame);
632 stop = (
unsigned long) frame->next_frame;
638 printk(
"-- next_frame %08lx is invalid (range %08lx-%08lx) --\n",
644 frame = frame->next_frame;
648 show_backtrace_regs(frame0);