cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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 */