Port-powerpc archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Question about a probrem in evbppc/ev64260/clock.c
Hi,
I have a question about "decr_intr(...)" in "evbppc/ev64260/clock.c".
In this file, value "lasttb" is updated in every time when it called, and
function "microtime(...)", it called by "hardclock(...)", is called only
in interrupts less than IPL_CLOCK.
It may be clock mismatch, because, during IPL_SCHED that is higher than
IPL_CLOCK, only "ci->ci_lasttb" is updated, but other value is not updated.
In NetBSD/macppc, "clock.c" is changed, however, other PowerPC ports are not
changed.
I don't have skills enough to assert it.
I'd like to have more opinion to assert it.
thanks.
Tomofumi Hayashi
------------------------------ evbppc/ev64260/clock.c
void
decr_intr(struct clockframe *frame)
{
struct cpu_info * const ci = curcpu();
:
:
/*
* lasttb is used during microtime. Set it to the virtual
* start of this tick interval.
*/
ci->ci_lasttb = tb + (decrtick - ticks_per_intr); // (*1)
:
:
if (ci->ci_cpl >= IPL_CLOCK) {
/*
* we interrupted while at higher
* priority, so defer this tick.
*/
ci->ci_tickspending += nticks;
EXT_INTR_STATS_PEND_IRQ(SIR_HWCLOCK);
} else {
int oframepri;
EXT_INTR_STATS_DECL(tstart);
EXT_INTR_STATS_COMMIT_IRQ(SIR_HWCLOCK);
EXT_INTR_STATS_PRE(SIR_HWCLOCK, tstart);
// (*1) should be move to here ????
nticks += ci->ci_tickspending;
ci->ci_tickspending = 0;
:
:
:
----------------------------------
Home |
Main Index |
Thread Index |
Old Index