[MIPS] Kexec: Fix several warnings.
authorRalf Baechle <ralf@linux-mips.org>
Tue, 31 Jul 2007 14:16:32 +0000 (15:16 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Tue, 31 Jul 2007 20:35:35 +0000 (21:35 +0100)
arch/mips/kernel/machine_kexec.c: In function 'machine_kexec':
arch/mips/kernel/machine_kexec.c:54: warning: assignment makes integer from pointer without a cast
arch/mips/kernel/machine_kexec.c:70: warning: assignment makes integer from pointer without a cast
arch/mips/kernel/machine_kexec.c:81: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'long unsigned int'

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/machine_kexec.c

index 8f42fa85ac9e4e274ae46aaf9b22b14f8303fe3c..22960d67cf07c29a6340be7c542b31b98f7ca2aa 100644 (file)
@@ -14,7 +14,7 @@
 #include <asm/page.h>
 
 extern const unsigned char relocate_new_kernel[];
-extern const unsigned int relocate_new_kernel_size;
+extern const size_t relocate_new_kernel_size;
 
 extern unsigned long kexec_start_address;
 extern unsigned long kexec_indirection_page;
@@ -40,6 +40,8 @@ machine_crash_shutdown(struct pt_regs *regs)
 {
 }
 
+typedef void (*noretfun_t)(void) __attribute__((noreturn));
+
 void
 machine_kexec(struct kimage *image)
 {
@@ -51,7 +53,8 @@ machine_kexec(struct kimage *image)
          (unsigned long)page_address(image->control_code_page);
 
        kexec_start_address = image->start;
-       kexec_indirection_page = phys_to_virt(image->head & PAGE_MASK);
+       kexec_indirection_page =
+               (unsigned long) phys_to_virt(image->head & PAGE_MASK);
 
        memcpy((void*)reboot_code_buffer, relocate_new_kernel,
               relocate_new_kernel_size);
@@ -67,7 +70,7 @@ machine_kexec(struct kimage *image)
               phys_to_virt(entry & PAGE_MASK) : ptr + 1) {
                if (*ptr & IND_SOURCE || *ptr & IND_INDIRECTION ||
                    *ptr & IND_DESTINATION)
-                       *ptr = phys_to_virt(*ptr);
+                       *ptr = (unsigned long) phys_to_virt(*ptr);
        }
 
        /*
@@ -78,8 +81,8 @@ machine_kexec(struct kimage *image)
        flush_icache_range(reboot_code_buffer,
                           reboot_code_buffer + KEXEC_CONTROL_CODE_SIZE);
 
-       printk("Will call new kernel at %08x\n", image->start);
+       printk("Will call new kernel at %08lx\n", image->start);
        printk("Bye ...\n");
        flush_cache_all();
-       ((void (*)(void))reboot_code_buffer)();
+       ((noretfun_t) reboot_code_buffer)();
 }