mmc: Use lldiv() for 64-bit division in write_raw_image()
authorSiarhei Siamashka <siarhei.siamashka@gmail.com>
Wed, 28 Oct 2015 04:24:16 +0000 (06:24 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 12 Nov 2015 20:58:59 +0000 (15:58 -0500)
This fixes compilation problems when using a hardfloat toolchain on
ARM, which manifest themselves as "libgcc.a(_udivmoddi4.o) uses
VFP register arguments, u-boot does not".

These problems have been reported in the U-Boot mailing list:
    http://lists.denx.de/pipermail/u-boot/2015-October/230314.html
    http://lists.denx.de/pipermail/u-boot/2015-October/231908.html

Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
common/fb_mmc.c

index e4fbd8dfa7562749d306e45e2b9426328ecb57cc..b480e76554bca8d1debe33103f38249e7401439e 100644 (file)
@@ -13,6 +13,7 @@
 #include <part.h>
 #include <sparse_format.h>
 #include <mmc.h>
+#include <div64.h>
 
 #ifndef CONFIG_FASTBOOT_GPT_NAME
 #define CONFIG_FASTBOOT_GPT_NAME GPT_ENTRY_NAME
@@ -73,7 +74,7 @@ static void write_raw_image(block_dev_desc_t *dev_desc, disk_partition_t *info,
 
        /* determine number of blocks to write */
        blkcnt = ((download_bytes + (info->blksz - 1)) & ~(info->blksz - 1));
-       blkcnt = blkcnt / info->blksz;
+       blkcnt = lldiv(blkcnt, info->blksz);
 
        if (blkcnt > info->size) {
                error("too large for partition: '%s'\n", part_name);