blob: 0b67fbc44f6fefb59790b1f43cccc706ec6cf77e [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001// SPDX-License-Identifier: GPL-2.0
Linus Torvalds1da177e2005-04-16 15:20:36 -07002/*
3 * Generic __div64_32 wrapper for __xdiv64_32.
4 */
5
6#include <linux/types.h>
Paul Mundtfa439722008-09-04 18:53:58 +09007#include <asm/div64.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -07008
Paul Mundt075fc192007-07-13 12:27:13 +09009extern uint64_t __xdiv64_32(u64 n, u32 d);
Linus Torvalds1da177e2005-04-16 15:20:36 -070010
Paul Mundt04c7d952007-07-06 10:58:04 +090011uint32_t __div64_32(u64 *xp, u32 y)
Linus Torvalds1da177e2005-04-16 15:20:36 -070012{
Paul Mundt04c7d952007-07-06 10:58:04 +090013 uint32_t rem;
Paul Mundt075fc192007-07-13 12:27:13 +090014 uint64_t q = __xdiv64_32(*xp, y);
Linus Torvalds1da177e2005-04-16 15:20:36 -070015
16 rem = *xp - q * y;
17 *xp = q;
18
19 return rem;
20}