1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License.  See the file "COPYING" in the main directory of this archive
4 * for more details.
5 */
6#ifndef _ASM_DIV64_H
7#define _ASM_DIV64_H
8
9/*
10 * Don't use this one in new code
11 */
12#define do_div64_32(res, high, low, base) ({ \
13	unsigned int __quot, __mod; \
14	unsigned long __div; \
15	unsigned int __low, __high, __base; \
16	\
17	__high = (high); \
18	__low = (low); \
19	__div = __high; \
20	__div = __div << 32 | __low; \
21	__base = (base); \
22	\
23	__mod = __div % __base; \
24	__div = __div / __base; \
25	\
26	__quot = __div; \
27	(res) = __quot; \
28	__mod; })
29
30/*
31 * Hey, we're already 64-bit, no
32 * need to play games..
33 */
34#define do_div(n, base) ({ \
35	unsigned long __quot; \
36	unsigned int __mod; \
37	unsigned long __div; \
38	unsigned int __base; \
39	\
40	__div = (n); \
41	__base = (base); \
42	\
43	__mod = __div % __base; \
44	__quot = __div / __base; \
45	\
46	(n) = __quot; \
47	__mod; })
48
49#endif /* _ASM_DIV64_H */
50