x86: lib: Fix types and casts for 64-bit compilation
authorSimon Glass <sjg@chromium.org>
Mon, 16 Jan 2017 14:03:42 +0000 (07:03 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Mon, 6 Feb 2017 03:38:46 +0000 (11:38 +0800)
Fix various compiler warnings in the x86 library code.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
arch/x86/lib/bios.c
arch/x86/lib/pinctrl_ich6.c
arch/x86/lib/pirq_routing.c

index 9324bdb83e864eaa2c1e9c331e2a45a9a7ec473d..66d7629a6dd2641ed2e2cc7bd64021f0fd322ab2 100644 (file)
@@ -157,7 +157,7 @@ static void setup_realmode_idt(void)
         for (i = 0; i < 256; i++) {
                idts[i].cs = 0;
                idts[i].offset = 0x1000 + (i * __idt_handler_size);
-               write_idt_stub((void *)((u32)idts[i].offset), i);
+               write_idt_stub((void *)((ulong)idts[i].offset), i);
        }
 
        /*
@@ -227,7 +227,7 @@ static void vbe_set_graphics(int vesa_mode, struct vbe_mode_info *mode_info)
        mode_info->video_mode = (1 << 14) | vesa_mode;
        vbe_get_mode_info(mode_info);
 
-       framebuffer = (unsigned char *)mode_info->vesa.phys_base_ptr;
+       framebuffer = (unsigned char *)(ulong)mode_info->vesa.phys_base_ptr;
        debug("VBE: resolution:  %dx%d@%d\n",
              le16_to_cpu(mode_info->vesa.x_resolution),
              le16_to_cpu(mode_info->vesa.y_resolution),
index 3f94cdf2dacad9dfee75081a22df4764c39b9e14..fb2d2940c9530e3e58506feff5b9a899ff1ddc0b 100644 (file)
@@ -104,7 +104,7 @@ static int ich6_pinctrl_cfg_pin(s32 gpiobase, s32 iobase, int pin_node)
 
        /* if iobase is present, let's configure the pad */
        if (iobase != -1) {
-               int iobase_addr;
+               ulong iobase_addr;
 
                /*
                 * The offset for the same pin for the IOBASE and GPIOBASE are
index a93d355d8a2457e3e049db8b07d1986a6c98a56e..c98526d6aa865688bd17f320c7ef2275c0849436 100644 (file)
@@ -114,14 +114,14 @@ u32 copy_pirq_routing_table(u32 addr, struct irq_routing_table *rt)
        addr = ALIGN(addr, 16);
 
        debug("Copying Interrupt Routing Table to 0x%x\n", addr);
-       memcpy((void *)addr, rt, rt->size);
+       memcpy((void *)(uintptr_t)addr, rt, rt->size);
 
        /*
         * We do the sanity check here against the copied table after memcpy,
         * as something might go wrong after the memcpy, which is normally
         * due to the F segment decode is not turned on to systeam RAM.
         */
-       rom_rt = (struct irq_routing_table *)addr;
+       rom_rt = (struct irq_routing_table *)(uintptr_t)addr;
        if (rom_rt->signature != PIRQ_SIGNATURE ||
            rom_rt->version != PIRQ_VERSION || rom_rt->size % 16) {
                printf("Interrupt Routing Table not valid\n");