* case of us accidentally initializing the bootmem allocator with
         * an invalid RAM area.
         */
-       reserve_bootmem(__MEMORY_START+PAGE_SIZE,
-               (PFN_PHYS(free_pfn)+bootmap_size+PAGE_SIZE-1)-__MEMORY_START,
-               BOOTMEM_DEFAULT);
+       reserve_bootmem(__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET,
+                       (PFN_PHYS(free_pfn) + bootmap_size + PAGE_SIZE - 1) -
+                       (__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET),
+                       BOOTMEM_DEFAULT);
 
        /*
         * reserve physical page 0 - it's a special BIOS page on many boxes,
         * enabling clean reboots, SMP operation, laptop functions.
         */
-       reserve_bootmem(__MEMORY_START, PAGE_SIZE, BOOTMEM_DEFAULT);
+       reserve_bootmem(__MEMORY_START, CONFIG_ZERO_PAGE_OFFSET,
+                       BOOTMEM_DEFAULT);
 
        sparse_memory_present_with_active_regions(0);