math64.h (468B)
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 */