hoi :) On Tue, Dec 07, 2004 at 05:56:38PM -0800, john stultz wrote: > +struct timesource_t { usually only typedefs end with _t > + char* name; > + int priority; > + enum { > + TIMESOURCE_FUNCTION, > + TIMESOURCE_MMIO_32, > + TIMESOURCE_MMIO_64 > + } type; > + cycle_t (*read_fnct)(void); > + void* ptr; This could be made __iomem if it is intended to point to an IO memory region. Hmm, but then there is no ioread64, so I guess I'm wrong. > + cycle_t mask; > + u32 mult; > + u32 shift; > +}; > +static inline nsec_t cyc2ns(struct timesource_t* ts, cycle_t cycles, cycle_t* rem) > +{ > + u64 ret; > + ret = (u64)cycles; > + ret *= ts->mult; > + ret >>= ts->shift; > + if (rem) /* XXX we still need to do remainder math */ > + *rem = (cycle_t)0; > + return (nsec_t)ret; > +} well, the math is simple: if (rem) *rem = ret & (1 << ts->shift -1); ret >>= ts->shift; -- Martin Waitz