struct task_struct;                  /* forward decl */
   struct unw_frame_info;               /* forward decl */
 
-  extern void ia64_do_show_stack (struct unw_frame_info *, void *);
   extern unsigned long ia64_get_user_rbs_end (struct task_struct *, struct pt_regs *,
                                              unsigned long *);
   extern long ia64_peek (struct task_struct *, struct switch_stack *, unsigned long,
 
 void (*pm_power_off) (void);
 EXPORT_SYMBOL(pm_power_off);
 
-void
+static void
 ia64_do_show_stack (struct unw_frame_info *info, void *arg)
 {
        unsigned long ip, sp, bsp;
+       const char *loglvl = arg;
 
-       printk("\nCall Trace:\n");
+       printk("%s\nCall Trace:\n", loglvl);
        do {
                unw_get_ip(info, &ip);
                if (ip == 0)
 
                unw_get_sp(info, &sp);
                unw_get_bsp(info, &bsp);
-               printk(" [<%016lx>] %pS\n"
+               printk("%s [<%016lx>] %pS\n"
                         "                                sp=%016lx bsp=%016lx\n",
-                        ip, (void *)ip, sp, bsp);
+                        loglvl, ip, (void *)ip, sp, bsp);
        } while (unw_unwind(info) >= 0);
 }
 
 show_stack (struct task_struct *task, unsigned long *sp)
 {
        if (!task)
-               unw_init_running(ia64_do_show_stack, NULL);
+               unw_init_running(ia64_do_show_stack, (void *)KERN_DEFAULT);
        else {
                struct unw_frame_info info;
 
                unw_init_from_blocked_task(&info, task);
-               ia64_do_show_stack(&info, NULL);
+               ia64_do_show_stack(&info, (void *)KERN_DEFAULT);
        }
 }