powerpc/boot: Rework of_claim() to make it 64bit friendly
authorCédric Le Goater <clg@fr.ibm.com>
Thu, 24 Apr 2014 07:23:30 +0000 (09:23 +0200)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 28 Apr 2014 07:35:43 +0000 (17:35 +1000)
This patch fixes 64bit compile warnings and updates the wrapper code
to converge the kernel code in prom_init.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/boot/of.c
arch/powerpc/boot/of.h
arch/powerpc/boot/oflib.c

index 62e2f43ec1df1144d3a790e1f3cf3e3263fdca47..7ca910cb2fc64f0ad8fa85ed2f5b056495773324 100644 (file)
@@ -40,8 +40,8 @@ static void *of_try_claim(unsigned long size)
 #ifdef DEBUG
                printf("    trying: 0x%08lx\n\r", claim_base);
 #endif
-               addr = (unsigned long)of_claim(claim_base, size, 0);
-               if ((void *)addr != (void *)-1)
+               addr = (unsigned long) of_claim(claim_base, size, 0);
+               if (addr != PROM_ERROR)
                        break;
        }
        if (addr == 0)
index 0f058ef69521c00000fed729ef5abb4f202b577a..504a0a31b685b5c72ffaa9f5011deb52af4f07ad 100644 (file)
@@ -6,7 +6,8 @@ typedef void *ihandle;
 
 void of_init(void *promptr);
 int of_call_prom(const char *service, int nargs, int nret, ...);
-void *of_claim(unsigned long virt, unsigned long size, unsigned long align);
+unsigned int of_claim(unsigned long virt, unsigned long size,
+       unsigned long align);
 void *of_vmlinux_alloc(unsigned long size);
 void of_exit(void);
 void *of_finddevice(const char *name);
index 7f61f2eb56535a773a490185d5fe1cbbaab482aa..329437d0e943adf69b50726cdc815c1a301d0bcb 100644 (file)
@@ -147,7 +147,8 @@ static int check_of_version(void)
        return 1;
 }
 
-void *of_claim(unsigned long virt, unsigned long size, unsigned long align)
+unsigned int of_claim(unsigned long virt, unsigned long size,
+                     unsigned long align)
 {
        int ret;
        prom_arg_t result;
@@ -155,32 +156,32 @@ void *of_claim(unsigned long virt, unsigned long size, unsigned long align)
        if (need_map < 0)
                need_map = check_of_version();
        if (align || !need_map)
-               return (void *) of_call_prom("claim", 3, 1, virt, size, align);
+               return of_call_prom("claim", 3, 1, virt, size, align);
 
        ret = of_call_prom_ret("call-method", 5, 2, &result, "claim", memory,
                               align, size, virt);
        if (ret != 0 || result == -1)
-               return (void *) -1;
+               return  -1;
        ret = of_call_prom_ret("call-method", 5, 2, &result, "claim", chosen_mmu,
                               align, size, virt);
        /* 0x12 == coherent + read/write */
        ret = of_call_prom("call-method", 6, 1, "map", chosen_mmu,
                           0x12, size, virt, virt);
-       return (void *) virt;
+       return virt;
 }
 
 void *of_vmlinux_alloc(unsigned long size)
 {
        unsigned long start = (unsigned long)_start, end = (unsigned long)_end;
-       void *addr;
+       unsigned long addr;
        void *p;
 
        /* With some older POWER4 firmware we need to claim the area the kernel
         * will reside in.  Newer firmwares don't need this so we just ignore
         * the return value.
         */
-       addr = of_claim(start, end - start, 0);
-       printf("Trying to claim from 0x%lx to 0x%lx (0x%lx) got %p\r\n",
+       addr = (unsigned long) of_claim(start, end - start, 0);
+       printf("Trying to claim from 0x%lx to 0x%lx (0x%lx) got %lx\r\n",
               start, end, end - start, addr);
 
        p = malloc(size);