if (!mips_frame_info_initialized) 
stack_page = (unsigned long)p->thread_info; if (!stack_page || !mips_frame_info_initialized) 
unsigned long get_wchan(struct task_struct *p){	unsigned long frame, pc;	if (!p || p == current || p->state == TASK_RUNNING)		return 0;	if (!mips_frame_info_initialized)		return 0;	pc = thread_saved_pc(p);	if (!in_sched_functions(pc))		goto out;	if (pc >= (unsigned long) sleep_on_timeout)		goto schedule_timeout_caller;	if (pc >= (unsigned long) sleep_on)		goto schedule_caller;	if (pc >= (unsigned long) interruptible_sleep_on_timeout)		goto schedule_timeout_caller;	if (pc >= (unsigned long)interruptible_sleep_on)		goto schedule_caller;	if (pc >= (unsigned long)wait_for_completion)		goto schedule_caller;	goto schedule_timeout_caller;schedule_caller:	frame = ((unsigned long *)p->thread.reg30)[schedule_frame.frame_offset];	if (pc >= (unsigned long) sleep_on)		pc = ((unsigned long *)frame)[sleep_on_frame.pc_offset];	else		pc = ((unsigned long *)frame)[wait_for_completion_frame.pc_offset];	goto out;schedule_timeout_caller:	/*	 * The schedule_timeout frame	 */	frame = ((unsigned long *)p->thread.reg30)[schedule_frame.frame_offset];	/*	 * frame now points to sleep_on_timeout's frame	 */	pc    = ((unsigned long *)frame)[schedule_timeout_frame.pc_offset];	if (in_sched_functions(pc)) {		/* schedule_timeout called by [interruptible_]sleep_on_timeout */		frame = ((unsigned long *)frame)[schedule_timeout_frame.frame_offset];		pc    = ((unsigned long *)frame)[sleep_on_timeout_frame.pc_offset];	}out:#ifdef CONFIG_64BIT	if (current->thread.mflags & MF_32BIT_REGS) /* Kludge for 32-bit ps  */		pc &= 0xffffffffUL;#endif	return pc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/dc953df1ba5526814982676f47580c8e1bcdbfeb/process.c/clean/arch/mips/kernel/process.c