Commit 338b922e authored by malc's avatar malc
Browse files

Mov muldiv64 to qemu-common.h (Thus unbreaking gus)



Signed-off-by: default avatarmalc <av1474@comtv.ru>
parent 174b2877
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@
 */
#include "hw.h"
#include "omap.h"
#include "qemu-timer.h" /* for muldiv64() */

struct clk {
    const char *name;
+24 −0
Original line number Diff line number Diff line
@@ -309,6 +309,30 @@ static inline uint8_t from_bcd(uint8_t val)
    return ((val >> 4) * 10) + (val & 0x0f);
}

/* compute with 96 bit intermediate result: (a*b)/c */
static inline uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c)
{
    union {
        uint64_t ll;
        struct {
#ifdef HOST_WORDS_BIGENDIAN
            uint32_t high, low;
#else
            uint32_t low, high;
#endif
        } l;
    } u, res;
    uint64_t rl, rh;

    u.ll = a;
    rl = (uint64_t)u.l.low * (uint64_t)b;
    rh = (uint64_t)u.l.high * (uint64_t)b;
    rh += (rl >> 32);
    res.l.high = rh / c;
    res.l.low = (((rh % c) << 32) + (rl & 0xffffffff)) / c;
    return res.ll;
}

#include "module.h"

#endif
+0 −24
Original line number Diff line number Diff line
@@ -59,30 +59,6 @@ static inline int64_t get_ticks_per_sec(void)
    return 1000000000LL;
}

/* compute with 96 bit intermediate result: (a*b)/c */
static inline uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c)
{
    union {
        uint64_t ll;
        struct {
#ifdef HOST_WORDS_BIGENDIAN
            uint32_t high, low;
#else
            uint32_t low, high;
#endif
        } l;
    } u, res;
    uint64_t rl, rh;

    u.ll = a;
    rl = (uint64_t)u.l.low * (uint64_t)b;
    rh = (uint64_t)u.l.high * (uint64_t)b;
    rh += (rl >> 32);
    res.l.high = rh / c;
    res.l.low = (((rh % c) << 32) + (rl & 0xffffffff)) / c;
    return res.ll;
}

/* real time host monotonic timer */
static inline int64_t get_clock_realtime(void)
{