]> git.hungrycats.org Git - linux/commitdiff
[PATCH] Add v850 versions of dump_stack and show_stack
authorMiles Bader <miles@lsi.nec.co.jp>
Tue, 26 Nov 2002 13:19:40 +0000 (05:19 -0800)
committerLinus Torvalds <torvalds@home.transmeta.com>
Tue, 26 Nov 2002 13:19:40 +0000 (05:19 -0800)
Add v850 versions of dump_stack and show_stack
Also move v850 show_regs to same source file (bug.c)

arch/v850/kernel/bug.c
arch/v850/kernel/process.c

index a5a0d5f89ad4250d634b34c7fbdbe91cf1529f73..e06bfeb99e9fa80dce7e4423b95c8c6ca7060d1d 100644 (file)
@@ -60,3 +60,76 @@ void unexpected_reset (unsigned long ret_addr, unsigned long kmode,
        machine_halt ();
 }
 #endif /* CONFIG_RESET_GUARD */
+
+\f
+
+struct spec_reg_name {
+       const char *name;
+       int gpr;
+};
+
+struct spec_reg_name spec_reg_names[] = {
+       { "sp", GPR_SP },
+       { "gp", GPR_GP },
+       { "tp", GPR_TP },
+       { "ep", GPR_EP },
+       { "lp", GPR_LP },
+       { 0, 0 }
+};
+
+void show_regs (struct pt_regs *regs)
+{
+       int gpr_base, gpr_offs;
+
+       printk ("     pc 0x%08lx    psw 0x%08lx                       kernel_mode %d\n",
+               regs->pc, regs->psw, regs->kernel_mode);
+       printk ("   ctpc 0x%08lx  ctpsw 0x%08lx   ctbp 0x%08lx\n",
+               regs->ctpc, regs->ctpsw, regs->ctbp);
+
+       for (gpr_base = 0; gpr_base < NUM_GPRS; gpr_base += 4) {
+               for (gpr_offs = 0; gpr_offs < 4; gpr_offs++) {
+                       int gpr = gpr_base + gpr_offs;
+                       long val = regs->gpr[gpr];
+                       struct spec_reg_name *srn;
+
+                       for (srn = spec_reg_names; srn->name; srn++)
+                               if (srn->gpr == gpr)
+                                       break;
+
+                       if (srn->name)
+                               printk ("%7s 0x%08lx", srn->name, val);
+                       else
+                               printk ("    r%02d 0x%08lx", gpr, val);
+               }
+
+               printk ("\n");
+       }
+}
+
+void show_stack (unsigned long *sp)
+{
+       unsigned long end;
+       unsigned long addr = (unsigned long)sp;
+
+       if (! addr)
+               addr = stack_addr ();
+
+       addr = addr & ~3;
+       end = (addr + THREAD_SIZE - 1) & THREAD_MASK;
+
+       while (addr < end) {
+               printk ("%8lX: ", addr);
+               while (addr < end) {
+                       printk (" %8lX", *(unsigned long *)addr);
+                       addr += sizeof (unsigned long);
+                       if (! (addr & 0xF))
+                               break;
+               }
+               printk ("\n");
+       }
+}
+
+void dump_stack ()
+{
+       show_stack (0);
+}
index 99e57c8fa2553f4b34646d0058280f75344c19e2..7aa282274460ef1703934c204639a6a389dfa487 100644 (file)
@@ -58,49 +58,6 @@ void cpu_idle (void)
        (*idle) ();
 }
 
-struct spec_reg_name {
-       const char *name;
-       int gpr;
-};
-
-struct spec_reg_name spec_reg_names[] = {
-       { "sp", GPR_SP },
-       { "gp", GPR_GP },
-       { "tp", GPR_TP },
-       { "ep", GPR_EP },
-       { "lp", GPR_LP },
-       { 0, 0 }
-};
-
-void show_regs (struct pt_regs *regs)
-{
-       int gpr_base, gpr_offs;
-
-       printk ("     pc 0x%08lx    psw 0x%08lx                       kernel_mode %d\n",
-               regs->pc, regs->psw, regs->kernel_mode);
-       printk ("   ctpc 0x%08lx  ctpsw 0x%08lx   ctbp 0x%08lx\n",
-               regs->ctpc, regs->ctpsw, regs->ctbp);
-
-       for (gpr_base = 0; gpr_base < NUM_GPRS; gpr_base += 4) {
-               for (gpr_offs = 0; gpr_offs < 4; gpr_offs++) {
-                       int gpr = gpr_base + gpr_offs;
-                       long val = regs->gpr[gpr];
-                       struct spec_reg_name *srn;
-
-                       for (srn = spec_reg_names; srn->name; srn++)
-                               if (srn->gpr == gpr)
-                                       break;
-
-                       if (srn->name)
-                               printk ("%7s 0x%08lx", srn->name, val);
-                       else
-                               printk ("    r%02d 0x%08lx", gpr, val);
-               }
-
-               printk ("\n");
-       }
-}
-
 /*
  * This is the mechanism for creating a new kernel thread.
  *