sc_to_sc(UPT_SC(&p->thread.regs.regs), UPT_SC(&current->thread.regs.regs)); 
sc_to_sc(UPT_SC(&p->thread.regs.regs), UPT_SC(&regs->regs)); 
int copy_thread_tt(int nr, unsigned long clone_flags, unsigned long sp,		   unsigned long stack_top, struct task_struct * p, 		   struct pt_regs *regs){	int (*tramp)(void *);	int new_pid, err;	unsigned long stack;		if(current->thread.forking)		tramp = fork_tramp;	else {		tramp = new_thread_proc;		p->thread.request.u.thread = current->thread.request.u.thread;	}	err = os_pipe(p->thread.mode.tt.switch_pipe, 1, 1);	if(err < 0){		printk("copy_thread : pipe failed, err = %d\n", -err);		return(err);	}	stack = alloc_stack(0, 0);	if(stack == 0){		printk(KERN_ERR "copy_thread : failed to allocate "		       "temporary stack\n");		return(-ENOMEM);	}	clone_flags &= CLONE_VM;	p->thread.temp_stack = stack;	new_pid = start_fork_tramp(p->thread_info, stack, clone_flags, tramp);	if(new_pid < 0){		printk(KERN_ERR "copy_thread : clone failed - errno = %d\n", 		       -new_pid);		return(new_pid);	}	if(current->thread.forking){		sc_to_sc(UPT_SC(&p->thread.regs.regs), 			 UPT_SC(&current->thread.regs.regs));		SC_SET_SYSCALL_RETURN(UPT_SC(&p->thread.regs.regs), 0);		if(sp != 0) SC_SP(UPT_SC(&p->thread.regs.regs)) = sp;	}	p->thread.mode.tt.extern_pid = new_pid;	current->thread.request.op = OP_FORK;	current->thread.request.u.fork.pid = new_pid;	os_usr1_process(os_getpid());	/* Enable the signal and then disable it to ensure that it is handled	 * here, and nowhere else.	 */	change_sig(SIGUSR1, 1);	change_sig(SIGUSR1, 0);	err = 0;	return(err);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/e0877f07e85a46e4fde32bd84f08551d360839fe/process_kern.c/clean/arch/um/kernel/tt/process_kern.c