3 /* mul64fract(uvlong*r, uvlong a, uvlong b)
5 * Multiply two 64 numbers and return the middle 64 bits of the 128 bit result.
7 * The assumption is that one of the numbers is a
8 * fixed point number with the integer portion in the
9 * high word and the fraction in the low word.
11 * There should be an assembler version of this routine
12 * for each architecture. This one is intended to
15 * ignored r0 = lo(a0*b0)
16 * lsw of result r1 = hi(a0*b0) +lo(a0*b1) +lo(a1*b0)
17 * msw of result r2 = hi(a0*b1) +hi(a1*b0) +lo(a1*b1)
18 * ignored r3 = hi(a1*b1)
22 mul64fract(uvlong *r, uvlong a, uvlong b)
28 bl = b & 0xffffffffULL;
30 al = a & 0xffffffffULL;