rpn = virt_to_abs(uaddr) >> PAGE_SHIFT; 
rpn = virt_to_abs(uaddr) >> DART_PAGE_SHIFT; 
static void dart_build(struct iommu_table *tbl, long index, 		       long npages, unsigned long uaddr,		       enum dma_data_direction direction){	unsigned int *dp;	unsigned int rpn;	DBG("dart: build at: %lx, %lx, addr: %x\n", index, npages, uaddr);	dp = ((unsigned int*)tbl->it_base) + index;		/* On U3, all memory is contigous, so we can move this	 * out of the loop.	 */	while (npages--) {		rpn = virt_to_abs(uaddr) >> PAGE_SHIFT;		*(dp++) = DARTMAP_VALID | (rpn & DARTMAP_RPNMASK);		rpn++;		uaddr += PAGE_SIZE;	}	dart_dirty = 1;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d0035c62d9145a2ce3057c8182a7ff0b4921a41c/u3_iommu.c/buggy/arch/ppc64/kernel/u3_iommu.c