From: Atsushi Nemoto Date: Tue, 23 Oct 2007 12:55:42 +0000 (+0900) Subject: [MIPS] time: Make c0_compare_int_usable faster X-Git-Tag: v2.6.24-rc2~95^2~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3a6c43a78763da67d4049745ce35122734e89fbc;p=platform%2Fkernel%2Flinux-exynos.git [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 --- diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c index 7274fd2..a59f67f 100644 --- a/arch/mips/kernel/cevt-r4k.c +++ b/arch/mips/kernel/cevt-r4k.c @@ -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; /* @@ -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 */