On 24 November 2014 at 09:55, Tom Rini <tr...@ti.com> wrote: > In some cases we need to do math on 64bit quantities. We need to be > using lldiv in these cases rather than letting the compiler do it. In > addition we need to avoid doing % operations on these same quantities. > These changes fix compilation on MIPS/MIPSEL. > > Cc: Daniel Schwierzeck <daniel.schwierz...@gmail.com> > Cc: Suriyan Ramasami <suriya...@gmail.com> > Cc: Simon Glass <s...@chromium.org> > Signed-off-by: Tom Rini <tr...@ti.com>
Reviewed-by: Simon Glass <s...@chromium.org> > --- > fs/ext4/ext4fs.c | 11 ++++++----- > fs/fs.c | 3 ++- > 2 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/fs/ext4/ext4fs.c b/fs/ext4/ext4fs.c > index 943b5bc..258b9379 100644 > --- a/fs/ext4/ext4fs.c > +++ b/fs/ext4/ext4fs.c > @@ -25,6 +25,7 @@ > #include <ext_common.h> > #include <ext4fs.h> > #include "ext4_common.h" > +#include <div64.h> > > int ext4fs_symlinknest; > struct ext_filesystem ext_fs; > @@ -67,11 +68,11 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos, > if (len > filesize) > len = filesize; > > - blockcnt = ((len + pos) + blocksize - 1) / blocksize; > + blockcnt = lldiv(((len + pos) + blocksize - 1), blocksize); > > - for (i = pos / blocksize; i < blockcnt; i++) { > + for (i = lldiv(pos, blocksize); i < blockcnt; i++) { > lbaint_t blknr; > - int blockoff = pos % blocksize; > + int blockoff = pos - (blocksize * i); > int blockend = blocksize; > int skipfirst = 0; > blknr = read_allocated_block(&(node->inode), i); > @@ -82,7 +83,7 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos, > > /* Last block. */ > if (i == blockcnt - 1) { > - blockend = (len + pos) % blocksize; > + blockend = (len + pos) - (blocksize * i); > > /* The last portion is exactly blocksize. */ > if (!blockend) > @@ -90,7 +91,7 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos, > } > > /* First block. */ > - if (i == pos / blocksize) { > + if (i == lldiv(pos, blocksize)) { > skipfirst = blockoff; > blockend -= skipfirst; > } > diff --git a/fs/fs.c b/fs/fs.c > index 3da7860..760f4a6 100644 > --- a/fs/fs.c > +++ b/fs/fs.c > @@ -17,6 +17,7 @@ > #include <config.h> > #include <errno.h> > #include <common.h> > +#include <div64.h> > #include <part.h> > #include <ext4fs.h> > #include <fat.h> > @@ -399,7 +400,7 @@ int do_load(cmd_tbl_t *cmdtp, int flag, int argc, char * > const argv[], > printf("%llu bytes read in %lu ms", len_read, time); > if (time > 0) { > puts(" ("); > - print_size(len_read / time * 1000, "/s"); > + print_size(lldiv(len_read, time * 1000), "/s"); > puts(")"); > } > puts("\n"); > -- > 1.7.9.5 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot