diff --git a/grub-lakitu/grub-core/loader/i386/efi/linux.c b/grub-lakitu/grub-core/loader/i386/efi/linux.c
index 4683ee2..19f91cf 100644
--- a/grub-lakitu/grub-core/loader/i386/efi/linux.c
+++ b/grub-lakitu/grub-core/loader/i386/efi/linux.c
@@ -61,13 +61,18 @@
   grub_dl_unref (my_mod);
   loaded = 0;
   if (initrd_mem)
-    grub_efi_free_pages((grub_efi_physical_address_t)initrd_mem, BYTES_TO_PAGES(params->ramdisk_size));
+    grub_efi_free_pages ((grub_efi_physical_address_t)(grub_addr_t)initrd_mem,
+			 BYTES_TO_PAGES(params->ramdisk_size));
   if (linux_cmdline)
-    grub_efi_free_pages((grub_efi_physical_address_t)linux_cmdline, BYTES_TO_PAGES(params->cmdline_size + 1));
+    grub_efi_free_pages ((grub_efi_physical_address_t)(grub_addr_t)
+			 linux_cmdline,
+			 BYTES_TO_PAGES(params->cmdline_size + 1));
   if (kernel_mem)
-    grub_efi_free_pages((grub_efi_physical_address_t)kernel_mem, BYTES_TO_PAGES(kernel_size));
+    grub_efi_free_pages ((grub_efi_physical_address_t)(grub_addr_t)kernel_mem,
+			 BYTES_TO_PAGES(kernel_size));
   if (params)
-    grub_efi_free_pages((grub_efi_physical_address_t)params, BYTES_TO_PAGES(16384));
+    grub_efi_free_pages ((grub_efi_physical_address_t)(grub_addr_t)params,
+			 BYTES_TO_PAGES(16384));
   return GRUB_ERR_NONE;
 }
 
@@ -117,7 +122,7 @@
   grub_dprintf ("linuxefi", "initrd_mem = %lx\n", (unsigned long) initrd_mem);
 
   params->ramdisk_size = size;
-  params->ramdisk_image = (grub_uint32_t)(grub_uint64_t) initrd_mem;
+  params->ramdisk_image = (grub_uint32_t)(grub_addr_t) initrd_mem;
 
   ptr = initrd_mem;
 
@@ -144,7 +149,8 @@
   grub_free (files);
 
   if (initrd_mem && grub_errno)
-    grub_efi_free_pages((grub_efi_physical_address_t)initrd_mem, BYTES_TO_PAGES(size));
+    grub_efi_free_pages ((grub_efi_physical_address_t)(grub_addr_t)initrd_mem,
+			 BYTES_TO_PAGES(size));
 
   return grub_errno;
 }
@@ -252,7 +258,7 @@
 			      lh.cmdline_size - (sizeof (LINUX_IMAGE) - 1),
                               GRUB_VERIFY_KERNEL_CMDLINE);
 
-  lh.cmd_line_ptr = (grub_uint32_t)(grub_uint64_t)linux_cmdline;
+  lh.cmd_line_ptr = (grub_uint32_t)(grub_addr_t)linux_cmdline;
 
   handover_offset = lh.handover_offset;
 
@@ -297,13 +303,17 @@
     }
 
   if (linux_cmdline && !loaded)
-    grub_efi_free_pages((grub_efi_physical_address_t)linux_cmdline, BYTES_TO_PAGES(lh.cmdline_size + 1));
+    grub_efi_free_pages ((grub_efi_physical_address_t)(grub_addr_t)
+			 linux_cmdline,
+			 BYTES_TO_PAGES(lh.cmdline_size + 1));
 
   if (kernel_mem && !loaded)
-    grub_efi_free_pages((grub_efi_physical_address_t)kernel_mem, BYTES_TO_PAGES(kernel_size));
+    grub_efi_free_pages ((grub_efi_physical_address_t)(grub_addr_t)kernel_mem,
+			 BYTES_TO_PAGES(kernel_size));
 
   if (params && !loaded)
-    grub_efi_free_pages((grub_efi_physical_address_t)params, BYTES_TO_PAGES(16384));
+    grub_efi_free_pages ((grub_efi_physical_address_t)(grub_addr_t)params,
+			 BYTES_TO_PAGES(16384));
 
   return grub_errno;
 }
