#include <asm/iommu.h>
 #include <asm/pci-bridge.h>
 #include <asm/machdep.h>
-#include <asm/abs_addr.h>
 #include <asm/pSeries_reconfig.h>
 #include <asm/firmware.h>
 #include <asm/tce.h>
 
        while (npages--) {
                /* can't move this out since we might cross MEMBLOCK boundary */
-               rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT;
+               rpn = __pa(uaddr) >> TCE_SHIFT;
                *tcep = proto_tce | (rpn & TCE_RPN_MASK) << TCE_RPN_SHIFT;
 
                uaddr += TCE_PAGE_SIZE;
        int ret = 0;
        long tcenum_start = tcenum, npages_start = npages;
 
-       rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT;
+       rpn = __pa(uaddr) >> TCE_SHIFT;
        proto_tce = TCE_PCI_READ;
        if (direction != DMA_TO_DEVICE)
                proto_tce |= TCE_PCI_WRITE;
                __get_cpu_var(tce_page) = tcep;
        }
 
-       rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT;
+       rpn = __pa(uaddr) >> TCE_SHIFT;
        proto_tce = TCE_PCI_READ;
        if (direction != DMA_TO_DEVICE)
                proto_tce |= TCE_PCI_WRITE;
 
                rc = plpar_tce_put_indirect((u64)tbl->it_index,
                                            (u64)tcenum << 12,
-                                           (u64)virt_to_abs(tcep),
+                                           (u64)__pa(tcep),
                                            limit);
 
                npages -= limit;
 
                rc = plpar_tce_put_indirect(liobn,
                                            dma_offset,
-                                           (u64)virt_to_abs(tcep),
+                                           (u64)__pa(tcep),
                                            limit);
 
                num_tce -= limit;