asm volatile("mov %%fs,%0":"=m" (tsk->thread.saved_fs)); asm volatile("mov %%gs,%0":"=m" (tsk->thread.saved_gs)); 
savesegment(fs, tsk->thread.saved_fs); savesegment(gs, tsk->thread.saved_gs); 
static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk){	struct tss_struct *tss;/* * make sure the vm86() system call doesn't try to do anything silly */	info->regs.__null_ds = 0;	info->regs.__null_es = 0;/* we are clearing fs,gs later just before "jmp resume_userspace", * because starting with Linux 2.1.x they aren't no longer saved/restored *//* * The eflags register is also special: we cannot trust that the user * has set it up safely, so this makes sure interrupt etc flags are * inherited from protected mode. */ 	VEFLAGS = info->regs.eflags;	info->regs.eflags &= SAFE_MASK;	info->regs.eflags |= info->regs32->eflags & ~SAFE_MASK;	info->regs.eflags |= VM_MASK;	switch (info->cpu_type) {		case CPU_286:			tsk->thread.v86mask = 0;			break;		case CPU_386:			tsk->thread.v86mask = NT_MASK | IOPL_MASK;			break;		case CPU_486:			tsk->thread.v86mask = AC_MASK | NT_MASK | IOPL_MASK;			break;		default:			tsk->thread.v86mask = ID_MASK | AC_MASK | NT_MASK | IOPL_MASK;			break;	}/* * Save old state, set default return value (%eax) to 0 */	info->regs32->eax = 0;	tsk->thread.saved_esp0 = tsk->thread.esp0;	asm volatile("mov %%fs,%0":"=m" (tsk->thread.saved_fs));	asm volatile("mov %%gs,%0":"=m" (tsk->thread.saved_gs));	tss = &per_cpu(init_tss, get_cpu());	tsk->thread.esp0 = (unsigned long) &info->VM86_TSS_ESP0;	if (cpu_has_sep)		tsk->thread.sysenter_cs = 0;	load_esp0(tss, &tsk->thread);	put_cpu();	tsk->thread.screen_bitmap = info->screen_bitmap;	if (info->flags & VM86_SCREEN_BITMAP)		mark_screen_rdonly(tsk);	__asm__ __volatile__(		"xorl %%eax,%%eax; movl %%eax,%%fs; movl %%eax,%%gs\n\t"		"movl %0,%%esp\n\t"		"movl %1,%%ebp\n\t"		"jmp resume_userspace"		: /* no outputs */		:"r" (&info->regs), "r" (tsk->thread_info) : "ax");	/* we never return here */}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4d37e7e3fd851428dede4d05d3e69d03795a744a/vm86.c/clean/arch/i386/kernel/vm86.c