]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/div64.h
Merge branch 'u-boot/master'
[karo-tx-uboot.git] / include / div64.h
index 2e0ba8389e11d992fda785f191d326dfbb74b94a..d83314435d860d59ffb9d5a14284d70a3c3a4453 100644 (file)
@@ -8,9 +8,9 @@
  *
  * uint32_t do_div(uint64_t *n, uint32_t base)
  * {
- *     uint32_t remainder = *n % base;
- *     *n = *n / base;
- *     return remainder;
+ *     uint32_t remainder = *n % base;
+ *     *n = *n / base;
+ *     return remainder;
  * }
  *
  * NOTE: macro parameter n is evaluated multiple times,
@@ -31,9 +31,19 @@ extern uint32_t __div64_32(uint64_t *dividend, uint32_t divisor);
        if (((n) >> 32) == 0) {                 \
                __rem = (uint32_t)(n) % __base;         \
                (n) = (uint32_t)(n) / __base;           \
-       } else                                          \
+       } else                                          \
                __rem = __div64_32(&(n), __base);       \
        __rem;                                          \
  })
 
+/* Wrapper for do_div(). Doesn't modify dividend and returns
+ * the result, not reminder.
+ */
+static inline uint64_t lldiv(uint64_t dividend, uint32_t divisor)
+{
+       uint64_t __res = dividend;
+       do_div(__res, divisor);
+       return(__res);
+}
+
 #endif /* _ASM_GENERIC_DIV64_H */