Skip to contentSkip to conversation

mmc: Use lldiv() for 64-bit division in write_raw_image()

PATCH In review Siarhei Siamashka 2 participants 3 messages Oct 28, 2015 – Nov 13, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mmc: Use lldiv() for 64-bit division in write_raw_image()

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

---

I have only tested that the compilation problem disappears for me. It would be best if somebody could confirm whether the fix is correct.

 common/fb_mmc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
common/fb_mmc.c +2 -1
index 0c48cf9..f424bb8 100644
@@ -11,6 +11,7 @@
 #include <aboot.h>
 #include <sparse_format.h>
 #include <mmc.h>
+#include <div64.h>
 
 #ifndef CONFIG_FASTBOOT_GPT_NAME
 #define CONFIG_FASTBOOT_GPT_NAME GPT_ENTRY_NAME
@@ -64,7 +65,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);
Signature · 1 line
2.4.10
#1 lore raw

PATCH 1/1 mmc: Use lldiv() for 64-bit division in write_raw_image()

Quoted 9 lines · Siarhei Siamashka

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

We care about the result not the remainder here so lldiv is correct.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20151028/352c22bb/attachment.sig>
#2 lore raw
In reply to Siarhei Siamashka
Quoted 10 lines · Siarhei Siamashka

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

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20151112/476ccaa4/attachment.sig>