compute_return_epc(regs); 
static inline void simulate_sc(struct pt_regs *regs, unsigned int opcode){	unsigned long __user *vaddr;	unsigned long reg;	long offset;	int signal = 0;	/*	 * analyse the sc instruction that just caused a ri exception	 * and put the referenced address to addr.	 */	/* sign extend offset */	offset = opcode & OFFSET;	offset <<= 16;	offset >>= 16;	vaddr = (unsigned long __user *)	        ((unsigned long)(regs->regs[(opcode & BASE) >> 21]) + offset);	reg = (opcode & RT) >> 16;	if ((unsigned long)vaddr & 3) {		signal = SIGBUS;		goto sig;	}	preempt_disable();	if (ll_bit == 0 || ll_task != current) {		regs->regs[reg] = 0;		preempt_enable();		compute_return_epc(regs);		return;	}	preempt_enable();	if (put_user(regs->regs[reg], vaddr)) {		signal = SIGSEGV;		goto sig;	}	compute_return_epc(regs);	regs->regs[reg] = 1;	return;sig:	force_sig(signal, current);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/05b8042ac6d35383c2fcc171ed932426c4e09ed1/traps.c/buggy/arch/mips/kernel/traps.c