Linux Audio

Check our new training course

Loading...
 1/* SPDX-License-Identifier: GPL-2.0 */
 2#ifndef __VDSO_MATH64_H
 3#define __VDSO_MATH64_H
 4
 5static __always_inline u32
 6__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder)
 7{
 8	u32 ret = 0;
 9
10	while (dividend >= divisor) {
11		/* The following asm() prevents the compiler from
12		   optimising this loop into a modulo operation.  */
13		asm("" : "+rm"(dividend));
14
15		dividend -= divisor;
16		ret++;
17	}
18
19	*remainder = dividend;
20
21	return ret;
22}
23
24#endif /* __VDSO_MATH64_H */