div64.h

来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 39 行

H
39
字号
#ifndef _ASM_M32R_DIV64#define _ASM_M32R_DIV64/* $Id$ *//* unsigned long long division. * Input: *  unsigned long long  n *  unsigned long  base * Output: *  n = n / base; *  return value = n % base; */#define do_div(n, base)						\({								\	unsigned long _res, _high, _mid, _low;			\								\	_low = (n) & 0xffffffffUL;				\	_high = (n) >> 32;					\	if (_high) {						\		_mid = (_high % (unsigned long)(base)) << 16;	\		_high = _high / (unsigned long)(base);		\		_mid += _low >> 16;				\		_low &= 0x0000ffffUL;				\		_low += (_mid % (unsigned long)(base)) << 16;	\		_mid = _mid / (unsigned long)(base);		\		_res = _low % (unsigned long)(base);		\		_low = _low / (unsigned long)(base);		\		n = _low + ((long long)_mid << 16) +		\			((long long)_high << 32);		\	} else {						\		_res = _low % (unsigned long)(base);		\		n = (_low / (unsigned long)(base));		\	}							\	_res;							\})#endif  /* _ASM_M32R_DIV64 */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?