blob: 4bef3b5d964a1aecdec64923883f1424227a7d54 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * Generic __div64_32 wrapper for __xdiv64_32.
3 */
4
5#include <linux/types.h>
6
Paul Mundt075fc192007-07-13 12:27:13 +09007extern uint64_t __xdiv64_32(u64 n, u32 d);
Linus Torvalds1da177e2005-04-16 15:20:36 -07008
Paul Mundt04c7d952007-07-06 10:58:04 +09009uint32_t __div64_32(u64 *xp, u32 y)
Linus Torvalds1da177e2005-04-16 15:20:36 -070010{
Paul Mundt04c7d952007-07-06 10:58:04 +090011 uint32_t rem;
Paul Mundt075fc192007-07-13 12:27:13 +090012 uint64_t q = __xdiv64_32(*xp, y);
Linus Torvalds1da177e2005-04-16 15:20:36 -070013
14 rem = *xp - q * y;
15 *xp = q;
16
17 return rem;
18}