diff options
Diffstat (limited to 'arch/sparc/kernel/process_32.c')
| -rw-r--r-- | arch/sparc/kernel/process_32.c | 44 | 
1 files changed, 13 insertions, 31 deletions
| diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c index 62eede13831a..fdd819dfdacf 100644 --- a/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c @@ -64,23 +64,12 @@ extern void fpsave(unsigned long *, unsigned long *, void *, unsigned long *);  struct task_struct *last_task_used_math = NULL;  struct thread_info *current_set[NR_CPUS]; -/* - * the idle loop on a Sparc... ;) - */ -void cpu_idle(void) +/* Idle loop support. */ +void arch_cpu_idle(void)  { -	set_thread_flag(TIF_POLLING_NRFLAG); - -	/* endless idle loop with no priority at all */ -	for (;;) { -		while (!need_resched()) { -			if (sparc_idle) -				(*sparc_idle)(); -			else -				cpu_relax(); -		} -		schedule_preempt_disabled(); -	} +	if (sparc_idle) +		(*sparc_idle)(); +	local_irq_enable();  }  /* XXX cli/sti -> local_irq_xxx here, check this works once SMP is fixed. */ @@ -123,6 +112,8 @@ void show_regs(struct pt_regs *r)  {  	struct reg_window32 *rw = (struct reg_window32 *) r->u_regs[14]; +	show_regs_print_info(KERN_DEFAULT); +          printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx    %s\n",  	       r->psr, r->pc, r->npc, r->y, print_tainted());  	printk("PC: <%pS>\n", (void *) r->pc); @@ -153,11 +144,13 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)  	struct reg_window32 *rw;  	int count = 0; -	if (tsk != NULL) -		task_base = (unsigned long) task_stack_page(tsk); -	else -		task_base = (unsigned long) current_thread_info(); +	if (!tsk) +		tsk = current; +	if (tsk == current && !_ksp) +		__asm__ __volatile__("mov	%%fp, %0" : "=r" (_ksp)); + +	task_base = (unsigned long) task_stack_page(tsk);  	fp = (unsigned long) _ksp;  	do {  		/* Bogus frame pointer? */ @@ -173,17 +166,6 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)  	printk("\n");  } -void dump_stack(void) -{ -	unsigned long *ksp; - -	__asm__ __volatile__("mov	%%fp, %0" -			     : "=r" (ksp)); -	show_stack(current, ksp); -} - -EXPORT_SYMBOL(dump_stack); -  /*   * Note: sparc64 has a pretty intricated thread_saved_pc, check it out.   */ | 
