tce.te_rpn = (virt_to_abs(uaddr)) >> PAGE_SHIFT; 
tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT; 
static void tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum,				long npages, unsigned long uaddr,				enum dma_data_direction direction){	u64 rc;	union tce_entry tce;	tce.te_word = 0;	tce.te_rpn = (virt_to_abs(uaddr)) >> PAGE_SHIFT;	tce.te_rdwr = 1;	if (direction != DMA_TO_DEVICE)		tce.te_pciwr = 1;	while (npages--) {		rc = plpar_tce_put((u64)tbl->it_index, 				   (u64)tcenum << 12, 				   tce.te_word );				if (rc && printk_ratelimit()) {			printk("tce_build_pSeriesLP: plpar_tce_put failed. rc=%ld\n", rc);			printk("\tindex   = 0x%lx\n", (u64)tbl->it_index);			printk("\ttcenum  = 0x%lx\n", (u64)tcenum);			printk("\ttce val = 0x%lx\n", tce.te_word );			show_stack(current, (unsigned long *)__get_SP());		}					tcenum++;		tce.te_rpn++;	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d0035c62d9145a2ce3057c8182a7ff0b4921a41c/pSeries_iommu.c/clean/arch/ppc64/kernel/pSeries_iommu.c