89,10 → 89,14 |
} |
|
/* TODO: This is SMP unsafe!!! */ |
uint32_t count_hi = 0; |
static unsigned long nextcount; |
static unsigned long lastcount; |
|
/** Start hardware clock */ |
static void timer_start(void) |
{ |
lastcount = cp0_count_read(); |
nextcount = cp0_compare_value + cp0_count_read(); |
cp0_compare_write(nextcount); |
} |
106,6 → 110,12 |
{ |
unsigned long drift; |
|
if (cp0_count_read() < lastcount) { |
/* Count overflow detection */ |
count_hi++; |
lastcount = cp0_count_read(); |
} |
|
drift = cp0_count_read() - nextcount; |
while (drift > cp0_compare_value) { |
drift -= cp0_compare_value; |