[MIPS] time: Make c0_compare_int_usable faster
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>
This commit is contained in:
committed by
Ralf Baechle
parent
c637fecb4f
commit
3a6c43a787
@@ -179,7 +179,7 @@ static int c0_compare_int_pending(void)
|
|||||||
|
|
||||||
static int c0_compare_int_usable(void)
|
static int c0_compare_int_usable(void)
|
||||||
{
|
{
|
||||||
const unsigned int delta = 0x300000;
|
unsigned int delta;
|
||||||
unsigned int cnt;
|
unsigned int cnt;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -192,9 +192,15 @@ static int c0_compare_int_usable(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
cnt = read_c0_count();
|
for (delta = 0x10; delta <= 0x400000; delta <<= 1) {
|
||||||
cnt += delta;
|
cnt = read_c0_count();
|
||||||
write_c0_compare(cnt);
|
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)
|
while ((int)(read_c0_count() - cnt) <= 0)
|
||||||
; /* Wait for expiry */
|
; /* Wait for expiry */
|
||||||
|
Reference in New Issue
Block a user