parisc: add show_stack_loglvl()
[sfrench/cifs-2.6.git] / arch / parisc / kernel / traps.c
index 82fc011894889856e52423c1e37fb813d1fd6891..c2411de3730f2c7ea6510f521b786df87cd5e2ba 100644 (file)
@@ -49,7 +49,7 @@
 #include "../math-emu/math-emu.h"      /* for handle_fpe() */
 
 static void parisc_show_stack(struct task_struct *task,
-       struct pt_regs *regs);
+       struct pt_regs *regs, const char *loglvl);
 
 static int printbinary(char *buf, unsigned long x, int nbits)
 {
@@ -155,7 +155,7 @@ void show_regs(struct pt_regs *regs)
                printk("%s IAOQ[1]: %pS\n", level, (void *) regs->iaoq[1]);
                printk("%s RP(r2): %pS\n", level, (void *) regs->gr[2]);
 
-               parisc_show_stack(current, regs);
+               parisc_show_stack(current, regs, KERN_DEFAULT);
        }
 }
 
@@ -170,37 +170,43 @@ static DEFINE_RATELIMIT_STATE(_hppa_rs,
 }
 
 
-static void do_show_stack(struct unwind_frame_info *info)
+static void do_show_stack(struct unwind_frame_info *info, const char *loglvl)
 {
        int i = 1;
 
-       printk(KERN_CRIT "Backtrace:\n");
+       printk("%sBacktrace:\n", loglvl);
        while (i <= MAX_UNWIND_ENTRIES) {
                if (unwind_once(info) < 0 || info->ip == 0)
                        break;
 
                if (__kernel_text_address(info->ip)) {
-                       printk(KERN_CRIT " [<" RFMT ">] %pS\n",
-                               info->ip, (void *) info->ip);
+                       printk("%s [<" RFMT ">] %pS\n",
+                               loglvl, info->ip, (void *) info->ip);
                        i++;
                }
        }
-       printk(KERN_CRIT "\n");
+       printk("%s\n", loglvl);
 }
 
 static void parisc_show_stack(struct task_struct *task,
-       struct pt_regs *regs)
+       struct pt_regs *regs, const char *loglvl)
 {
        struct unwind_frame_info info;
 
        unwind_frame_init_task(&info, task, regs);
 
-       do_show_stack(&info);
+       do_show_stack(&info, loglvl);
+}
+
+void show_stack_loglvl(struct task_struct *t, unsigned long *sp,
+                      const char *loglvl)
+{
+       parisc_show_stack(t, NULL, loglvl);
 }
 
 void show_stack(struct task_struct *t, unsigned long *sp)
 {
-       parisc_show_stack(t, NULL);
+       show_stack_loglvl(t, sp, KERN_CRIT)
 }
 
 int is_valid_bugaddr(unsigned long iaoq)
@@ -446,7 +452,7 @@ void parisc_terminate(char *msg, struct pt_regs *regs, int code, unsigned long o
                /* show_stack(NULL, (unsigned long *)regs->gr[30]); */
                struct unwind_frame_info info;
                unwind_frame_init(&info, current, regs);
-               do_show_stack(&info);
+               do_show_stack(&info, KERN_CRIT);
        }
 
        printk("\n");