xmon(struct pt_regs *excp) 
int xmon(struct pt_regs *excp) 
xmon(struct pt_regs *excp){	struct pt_regs regs;	int msr, cmd;	get_tb(stop_tb[smp_processor_id()]);	if (excp == NULL) {		asm volatile ("stw	0,0(%0)\n\			lwz	0,0(1)\n\			stw	0,4(%0)\n\			stmw	2,8(%0)" : : "b" (&regs));		regs.nip = regs.link = ((unsigned long *)regs.gpr[1])[1];		regs.msr = get_msr();		regs.ctr = get_ctr();		regs.xer = get_xer();		regs.ccr = get_cr();		regs.trap = 0;		excp = &regs;	}	msr = get_msr();	set_msr(msr & ~0x8000);	/* disable interrupts */	xmon_regs[smp_processor_id()] = excp;	xmon_enter();	excprint(excp);#ifdef CONFIG_SMP	if (test_and_set_bit(smp_processor_id(), &cpus_in_xmon))		for (;;)			;	while (test_and_set_bit(0, &got_xmon)) {		if (take_xmon == smp_processor_id()) {			take_xmon = -1;			break;		}	}	/*	 * XXX: breakpoints are removed while any cpu is in xmon	 */#endif /* CONFIG_SMP */	remove_bpts();#ifdef CONFIG_PMAC_BACKLIGHT	if( setjmp(bus_error_jmp) == 0 ) {		debugger_fault_handler = handle_fault;		sync();		set_backlight_enable(1);		set_backlight_level(BACKLIGHT_MAX);		sync();	}	debugger_fault_handler = NULL;#endif	/* CONFIG_PMAC_BACKLIGHT */	cmd = cmds(excp);	if (cmd == 's') {		xmon_trace[smp_processor_id()] = SSTEP;		excp->msr |= 0x400;	} else if (at_breakpoint(excp->nip)) {		xmon_trace[smp_processor_id()] = BRSTEP;		excp->msr |= 0x400;	} else {		xmon_trace[smp_processor_id()] = 0;		insert_bpts();	}	xmon_leave();	xmon_regs[smp_processor_id()] = NULL;#ifdef CONFIG_SMP	clear_bit(0, &got_xmon);	clear_bit(smp_processor_id(), &cpus_in_xmon);#endif /* CONFIG_SMP */	set_msr(msr);		/* restore interrupt enable */	get_tb(start_tb[smp_processor_id()]);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/7b007de8a90604000329154e87d269db3427d099/xmon.c/clean/arch/ppc/xmon/xmon.c