arch/ppc64/kernel/process.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff -puN arch/ppc64/kernel/process.c~ppc64-show_stack arch/ppc64/kernel/process.c
--- 25-power4/arch/ppc64/kernel/process.c~ppc64-show_stack	2003-06-07 13:42:58.000000000 -0700
+++ 25-power4-akpm/arch/ppc64/kernel/process.c	2003-06-07 13:51:09.000000000 -0700
@@ -128,7 +128,6 @@ struct task_struct *__switch_to(struct t
 	return last;
 }
 
-static void show_tsk_stack(struct task_struct *p, unsigned long sp);
 char *ppc_find_proc_name(unsigned *p, char *buf, unsigned buflen);
 
 void show_regs(struct pt_regs * regs)
@@ -171,7 +170,7 @@ void show_regs(struct pt_regs * regs)
 	printk("NIP [%016lx] ", regs->nip);
 	printk("%s\n", ppc_find_proc_name((unsigned *)regs->nip,
 	       name_buf, 256));
-	show_tsk_stack(current, regs->gpr[1]);
+	show_stack(current, (unsigned long *)regs->gpr[1]);
 }
 
 void exit_thread(void)
@@ -516,19 +515,20 @@ unsigned long get_wchan(struct task_stru
 	return 0;
 }
 
-static void show_tsk_stack(struct task_struct *p, unsigned long sp)
+void show_stack(struct task_struct *p, unsigned long *sp)
 {
 	unsigned long ip;
-	unsigned long stack_page = (unsigned long)p->thread_info;
+	unsigned long *stack_page;
 	int count = 0;
 	char name_buf[256];
 
 	if (!p)
 		return;
 
+	stack_page = (unsigned long *)p->thread_info;
 	printk("Call Trace:\n");
 	do {
-		if (__get_user(sp, (unsigned long *)sp))
+		if (__get_user(sp, (unsigned long **)sp))
 			break;
 		if (sp < (stack_page + sizeof(struct thread_struct)) ||
 		    sp >= (stack_page + THREAD_SIZE))
@@ -543,10 +543,10 @@ static void show_tsk_stack(struct task_s
 
 void dump_stack(void)
 {
-	show_tsk_stack(current, (unsigned long)_get_SP());
+	show_stack(current, (unsigned long *)_get_SP());
 }
 
 void show_trace_task(struct task_struct *tsk)
 {
-	show_tsk_stack(tsk, tsk->thread.ksp);
+	show_stack(tsk, (unsigned long *)tsk->thread.ksp);
 }

_