Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __VDSO_MATH64_H
0003 #define __VDSO_MATH64_H
0004 
0005 static __always_inline u32
0006 __iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder)
0007 {
0008     u32 ret = 0;
0009 
0010     while (dividend >= divisor) {
0011         /* The following asm() prevents the compiler from
0012            optimising this loop into a modulo operation.  */
0013         asm("" : "+rm"(dividend));
0014 
0015         dividend -= divisor;
0016         ret++;
0017     }
0018 
0019     *remainder = dividend;
0020 
0021     return ret;
0022 }
0023 
0024 #endif /* __VDSO_MATH64_H */