#define H_VMALLOC_SIZE (H_KERN_VIRT_SIZE >> 1)
 #define H_VMALLOC_END  (H_VMALLOC_START + H_VMALLOC_SIZE)
 
+#define H_KERN_IO_START        H_VMALLOC_END
+
 /*
  * Region IDs
  */
 
 
 extern unsigned long __kernel_virt_start;
 extern unsigned long __kernel_virt_size;
+extern unsigned long __kernel_io_start;
 #define KERN_VIRT_START __kernel_virt_start
 #define KERN_VIRT_SIZE  __kernel_virt_size
+#define KERN_IO_START  __kernel_io_start
 extern struct page *vmemmap;
 extern unsigned long ioremap_bot;
 extern unsigned long pci_io_base;
  *  PHB_IO_BASE = ISA_IO_BASE + 64K to ISA_IO_BASE + 2G, PHB IO spaces
  * IOREMAP_BASE = ISA_IO_BASE + 2G to VMALLOC_START + PGTABLE_RANGE
  */
-#define KERN_IO_START  (KERN_VIRT_START + (KERN_VIRT_SIZE >> 1))
 #define FULL_IO_SIZE   0x80000000ul
 #define  ISA_IO_BASE   (KERN_IO_START)
 #define  ISA_IO_END    (KERN_IO_START + 0x10000ul)
 
  */
 #define RADIX_VMEMMAP_BASE             (RADIX_VMALLOC_END)
 
+#define RADIX_KERN_IO_START    (RADIX_KERN_VIRT_START + (RADIX_KERN_VIRT_SIZE >> 1))
+
 #ifndef __ASSEMBLY__
 #define RADIX_PTE_TABLE_SIZE   (sizeof(pte_t) << RADIX_PTE_INDEX_SIZE)
 #define RADIX_PMD_TABLE_SIZE   (sizeof(pmd_t) << RADIX_PMD_INDEX_SIZE)
 
        __kernel_virt_size = H_KERN_VIRT_SIZE;
        __vmalloc_start = H_VMALLOC_START;
        __vmalloc_end = H_VMALLOC_END;
+       __kernel_io_start = H_KERN_IO_START;
        vmemmap = (struct page *)H_VMEMMAP_BASE;
        ioremap_bot = IOREMAP_BASE;
 
 
        __kernel_virt_size = RADIX_KERN_VIRT_SIZE;
        __vmalloc_start = RADIX_VMALLOC_START;
        __vmalloc_end = RADIX_VMALLOC_END;
+       __kernel_io_start = RADIX_KERN_IO_START;
        vmemmap = (struct page *)RADIX_VMEMMAP_BASE;
        ioremap_bot = IOREMAP_BASE;
 
 
 EXPORT_SYMBOL(__vmalloc_start);
 unsigned long __vmalloc_end;
 EXPORT_SYMBOL(__vmalloc_end);
+unsigned long __kernel_io_start;
+EXPORT_SYMBOL(__kernel_io_start);
 struct page *vmemmap;
 EXPORT_SYMBOL(vmemmap);
 unsigned long __pte_frag_nr;