asm volatile ("lfpc 0(%0)" : : "a" (&zero)); 
asm volatile ("lfpc 0(%0)" : : "a" (&zero), "m" (zero)); 
s390_revalidate_registers(struct mci *mci){	int kill_task;	u64 tmpclock;	u64 zero;	void *fpt_save_area, *fpt_creg_save_area;	kill_task = 0;	zero = 0;	/* General purpose registers */	if (!mci->gr)		/*		 * General purpose registers couldn't be restored and have		 * unknown contents. Process needs to be terminated.		 */		kill_task = 1;	/* Revalidate floating point registers */	if (!mci->fp)		/*		 * Floating point registers can't be restored and		 * therefore the process needs to be terminated.		 */		kill_task = 1;#ifndef __s390x__	asm volatile("ld 0,0(%0)\n"		     "ld 2,8(%0)\n"		     "ld 4,16(%0)\n"		     "ld 6,24(%0)"		     : : "a" (&S390_lowcore.floating_pt_save_area));#endif	if (MACHINE_HAS_IEEE) {#ifdef __s390x__		fpt_save_area = &S390_lowcore.floating_pt_save_area;		fpt_creg_save_area = &S390_lowcore.fpt_creg_save_area;#else		fpt_save_area = (void *) S390_lowcore.extended_save_area_addr;		fpt_creg_save_area = fpt_save_area+128;#endif		/* Floating point control register */		if (!mci->fc) {			/*			 * Floating point control register can't be restored.			 * Task will be terminated.			 */			asm volatile ("lfpc 0(%0)" : : "a" (&zero));			kill_task = 1;		}		else			asm volatile (				"lfpc 0(%0)"				: : "a" (fpt_creg_save_area));		asm volatile("ld  0,0(%0)\n"			     "ld  1,8(%0)\n"			     "ld  2,16(%0)\n"			     "ld  3,24(%0)\n"			     "ld  4,32(%0)\n"			     "ld  5,40(%0)\n"			     "ld  6,48(%0)\n"			     "ld  7,56(%0)\n"			     "ld  8,64(%0)\n"			     "ld  9,72(%0)\n"			     "ld 10,80(%0)\n"			     "ld 11,88(%0)\n"			     "ld 12,96(%0)\n"			     "ld 13,104(%0)\n"			     "ld 14,112(%0)\n"			     "ld 15,120(%0)\n"			     : : "a" (fpt_save_area));	}	/* Revalidate access registers */	asm volatile("lam 0,15,0(%0)"		     : : "a" (&S390_lowcore.access_regs_save_area));	if (!mci->ar)		/*		 * Access registers have unknown contents.		 * Terminating task.		 */		kill_task = 1;	/* Revalidate control registers */	if (!mci->cr)		/*		 * Control registers have unknown contents.		 * Can't recover and therefore stopping machine.		 */		s390_handle_damage("invalid control registers.");	else#ifdef __s390x__		asm volatile("lctlg 0,15,0(%0)"			     : : "a" (&S390_lowcore.cregs_save_area));#else		asm volatile("lctl 0,15,0(%0)"			     : : "a" (&S390_lowcore.cregs_save_area));#endif	/*	 * We don't even try to revalidate the TOD register, since we simply	 * can't write something sensible into that register.	 */#ifdef __s390x__	/*	 * See if we can revalidate the TOD programmable register with its	 * old contents (should be zero) otherwise set it to zero.	 */	if (!mci->pr)		asm volatile("sr 0,0\n"			     "sckpf"			     : : : "0", "cc");	else		asm volatile(			"l 0,0(%0)\n"			"sckpf"			: : "a" (&S390_lowcore.tod_progreg_save_area) : "0", "cc");#endif	/* Revalidate clock comparator register */	asm volatile ("stck 0(%1)\n"		      "sckc 0(%1)"		      : "=m" (tmpclock) : "a" (&(tmpclock)) : "cc", "memory");	/* Check if old PSW is valid */	if (!mci->wp)		/*		 * Can't tell if we come from user or kernel mode		 * -> stopping machine.		 */		s390_handle_damage("old psw invalid.");	if (!mci->ms || !mci->pm || !mci->ia)		kill_task = 1;	return kill_task;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/ae6aa2ea8973e200cb3d0564a64a1b441d233428/s390mach.c/buggy/drivers/s390/s390mach.c