[funini.com] -> [kei@sodan] -> Kernel Reading

root/include/asm-m68k/div64.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


#ifndef _M68K_DIV64_H
#define _M68K_DIV64_H

#include <linux/types.h>

/* n = n / base; return rem; */

#define do_div(n, base) ({                                      \
        union {                                                 \
                unsigned long n32[2];                           \
                unsigned long long n64;                         \
        } __n;                                                  \
        unsigned long __rem, __upper;                           \
                                                                \
        __n.n64 = (n);                                          \
        if ((__upper = __n.n32[0])) {                           \
                asm ("divul.l %2,%1:%0"                         \
                        : "=d" (__n.n32[0]), "=d" (__upper)     \
                        : "d" (base), "0" (__n.n32[0]));        \
        }                                                       \
        asm ("divu.l %2,%1:%0"                                  \
                : "=d" (__n.n32[1]), "=d" (__rem)               \
                : "d" (base), "1" (__upper), "0" (__n.n32[1])); \
        (n) = __n.n64;                                          \
        __rem;                                                  \
})

#endif /* _M68K_DIV64_H */

/* [<][>][^][v][top][bottom][index][help] */

[funini.com] -> [kei@sodan] -> Kernel Reading