| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef __VDSO_MATH64_H | |
| #define __VDSO_MATH64_H | |
| static __always_inline u32 | |
| __iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder) | |
| { | |
| u32 ret = 0; | |
| while (dividend >= divisor) { | |
| /* The following asm() prevents the compiler from | |
| optimising this loop into a modulo operation. */ | |
| asm("" : "+rm"(dividend)); | |
| dividend -= divisor; | |
| ret++; | |
| } | |
| *remainder = dividend; | |
| return ret; | |
| } | |
| #endif /* __VDSO_MATH64_H */ |