Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/arch
On Mon, Mar 10, 2008 at 10:19:41PM +0000, David Laight wrote:
> On Mon, Mar 10, 2008 at 10:03:40PM +0000, Andrew Doran wrote:
> >
> > Log Message:
> > Implement an optimized, preemption-safe asm version of tsc_get_timecount().
> > The C version needs work to be preemption safe. Cuts the clock cycles
> > for microtime() from 950 down to 300 on a Pentium D.
>
> I'm not sure about this bit:
>
> + movl $0, %edx
> + subl CC_CC(%edi), %eax /* cc -= cc->cc_cc; */
> + adcl $0, %edx /* if (cc < 0) cc += 0x100000000; */
> + mull CC_DELTA(%edi) /* rcc = (cc * ci->ci_cc.cc_delta) */
> + divl CC_DENOM(%edi) /* / ci->ci_cc.cc_denom */
> + addl CC_VAL(%edi), %eax /* + ci->ci_cc.cc_val; */
>
> I thought 'mull' did '%edx:%eax = %eax * mem32' so the value of %edx
> on entry is rather irrelevant.
Spot on, it's not right. I'll think of a way around it.
kThanks,
Andrew
Home |
Main Index |
Thread Index |
Old Index