Skip to content

Commit

Permalink
[MIPS] time: Make c0_compare_int_usable faster
Browse files Browse the repository at this point in the history
Try increasingly longer time periods starting of at 0x10 cycles.  This
should be fast on hardware and work nicely with emulators.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Atsushi Nemoto authored and Ralf Baechle committed Oct 29, 2007
1 parent c637fec commit 3a6c43a
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions arch/mips/kernel/cevt-r4k.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ static int c0_compare_int_pending(void)

static int c0_compare_int_usable(void)
{
const unsigned int delta = 0x300000;
unsigned int delta;
unsigned int cnt;

/*
Expand All @@ -192,9 +192,15 @@ static int c0_compare_int_usable(void)
return 0;
}

cnt = read_c0_count();
cnt += delta;
write_c0_compare(cnt);
for (delta = 0x10; delta <= 0x400000; delta <<= 1) {
cnt = read_c0_count();
cnt += delta;
write_c0_compare(cnt);
irq_disable_hazard();
if ((int)(read_c0_count() - cnt) < 0)
break;
/* increase delta if the timer was already expired */
}

while ((int)(read_c0_count() - cnt) <= 0)
; /* Wait for expiry */
Expand Down

0 comments on commit 3a6c43a

Please sign in to comment.