#include <asm/prom.h>
 #include <asm/smp.h>
 
-#define HASH_GROUP_SIZE 0x80   /* size of each hash group, asm/mmu.h */
-
 int default_machine_kexec_prepare(struct kimage *image)
 {
        int i;
         */
        if (htab_address) {
                low = __pa(htab_address);
-               high = low + (htab_hash_mask + 1) * HASH_GROUP_SIZE;
+               high = low + htab_size_bytes;
 
                for (i = 0; i < image->nr_segments; i++) {
                        begin = image->segment[i].mem;
 }
 
 /* Values we need to export to the second kernel via the device tree. */
-static unsigned long htab_base, htab_size, kernel_end;
+static unsigned long htab_base, kernel_end;
 
 static struct property htab_base_prop = {
        .name = "linux,htab-base",
 static struct property htab_size_prop = {
        .name = "linux,htab-size",
        .length = sizeof(unsigned long),
-       .value = (unsigned char *)&htab_size,
+       .value = (unsigned char *)&htab_size_bytes,
 };
 
 static struct property kernel_end_prop = {
 
        htab_base = __pa(htab_address);
        prom_add_property(node, &htab_base_prop);
-
-       htab_size = 1UL << ppc64_pft_size;
        prom_add_property(node, &htab_size_prop);
 
  out:
 
 struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT];
 
 hpte_t *htab_address;
+unsigned long htab_size_bytes;
 unsigned long htab_hash_mask;
 int mmu_linear_psize = MMU_PAGE_4K;
 int mmu_virtual_psize = MMU_PAGE_4K;
 
 void __init htab_initialize(void)
 {
-       unsigned long table, htab_size_bytes;
+       unsigned long table;
        unsigned long pteg_count;
        unsigned long mode_rw;
        unsigned long base = 0, size = 0;