arpn = phys_to_abs(prpn << PAGE_SHIFT) >> PAGE_SHIFT; 
static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va,				unsigned long prpn, unsigned long vflags,				unsigned long rflags){	unsigned long arpn;	long slot;	hpte_t lhpte;	int secondary = 0;	/*	 * The hypervisor tries both primary and secondary.	 * If we are being called to insert in the secondary,	 * it means we have already tried both primary and secondary,	 * so we return failure immediately.	 */	if (vflags & HPTE_V_SECONDARY)		return -1;	iSeries_hlock(hpte_group);	slot = HvCallHpt_findValid(&lhpte, va >> PAGE_SHIFT);	BUG_ON(lhpte.v & HPTE_V_VALID);	if (slot == -1)	{ /* No available entry found in either group */		iSeries_hunlock(hpte_group);		return -1;	}	if (slot < 0) {		/* MSB set means secondary group */		vflags |= HPTE_V_SECONDARY;		secondary = 1;		slot &= 0x7fffffffffffffff;	}	arpn = phys_to_abs(prpn << PAGE_SHIFT) >> PAGE_SHIFT;	lhpte.v = (va >> 23) << HPTE_V_AVPN_SHIFT | vflags | HPTE_V_VALID;	lhpte.r = (arpn << HPTE_R_RPN_SHIFT) | rflags;	/* Now fill in the actual HPTE */	HvCallHpt_addValidate(slot, secondary, &lhpte);	iSeries_hunlock(hpte_group);	return (secondary << 3) | (slot & 7);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3c726f8dee6f55e96475574e9f645327e461884c/htab.c/clean/arch/powerpc/platforms/iseries/htab.c