#include "mm.h"
 
-static unsigned long phys_initrd_start __initdata = 0;
+static phys_addr_t phys_initrd_start __initdata = 0;
 static unsigned long phys_initrd_size __initdata = 0;
 
 static int __init early_initrd(char *p)
 {
-       unsigned long start, size;
+       phys_addr_t start;
+       unsigned long size;
        char *endp;
 
        start = memparse(p, &endp);
 #ifdef CONFIG_BLK_DEV_INITRD
        if (phys_initrd_size &&
            !memblock_is_region_memory(phys_initrd_start, phys_initrd_size)) {
-               pr_err("INITRD: 0x%08lx+0x%08lx is not a memory region - disabling initrd\n",
-                      phys_initrd_start, phys_initrd_size);
+               pr_err("INITRD: 0x%08llx+0x%08lx is not a memory region - disabling initrd\n",
+                      (u64)phys_initrd_start, phys_initrd_size);
                phys_initrd_start = phys_initrd_size = 0;
        }
        if (phys_initrd_size &&
            memblock_is_region_reserved(phys_initrd_start, phys_initrd_size)) {
-               pr_err("INITRD: 0x%08lx+0x%08lx overlaps in-use memory region - disabling initrd\n",
-                      phys_initrd_start, phys_initrd_size);
+               pr_err("INITRD: 0x%08llx+0x%08lx overlaps in-use memory region - disabling initrd\n",
+                      (u64)phys_initrd_start, phys_initrd_size);
                phys_initrd_start = phys_initrd_size = 0;
        }
        if (phys_initrd_size) {