childregs = ((struct pt_regs *)((unsigned long)thread + THREAD_START_SP)) - 1; 
childregs = (void *)thread + THREAD_START_SP - sizeof(*regs); 
copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start,	    unsigned long stk_sz, struct task_struct *p, struct pt_regs *regs){	struct thread_info *thread = p->thread_info;	struct pt_regs *childregs;	childregs = ((struct pt_regs *)((unsigned long)thread + THREAD_START_SP)) - 1;	*childregs = *regs;	childregs->ARM_r0 = 0;	childregs->ARM_sp = stack_start;	memset(&thread->cpu_context, 0, sizeof(struct cpu_context_save));	thread->cpu_context.sp = (unsigned long)childregs;	thread->cpu_context.pc = (unsigned long)ret_from_fork;	if (clone_flags & CLONE_SETTLS)		thread->tp_value = regs->ARM_r3;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c906107bb72b7bd5ecfc98cc807bdb8f34d17501/process.c/clean/arch/arm/kernel/process.c