diff options
author | Ben Warren <biggerbadderben@gmail.com> | 2008-06-08 22:04:22 -0700 |
---|---|---|
committer | Ben Warren <biggerbadderben@gmail.com> | 2008-06-08 22:04:22 -0700 |
commit | e44f3ea4e801d37ef293284cb57b9637382f211a (patch) | |
tree | 09e6e9e68764e65ef7115db18319ec7e57c90b41 /cpu/at32ap/interrupts.c | |
parent | 0e38c938ed4bcadb4f4fc1419a541431e94fc202 (diff) | |
parent | 8155efbd7ae9c65564ca98affe94631d612ae088 (diff) |
Merge branch 'master' of git://git.denx.de/u-boot
Diffstat (limited to 'cpu/at32ap/interrupts.c')
-rw-r--r-- | cpu/at32ap/interrupts.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/cpu/at32ap/interrupts.c b/cpu/at32ap/interrupts.c index bef1f30d79d..160838eeeb3 100644 --- a/cpu/at32ap/interrupts.c +++ b/cpu/at32ap/interrupts.c @@ -98,18 +98,16 @@ void set_timer(unsigned long t) */ void udelay(unsigned long usec) { - unsigned long now, end; + unsigned long cycles; + unsigned long base; + unsigned long now; - now = sysreg_read(COUNT); + base = sysreg_read(COUNT); + cycles = ((usec * (get_tbclk() / 10000)) + 50) / 100; - end = ((usec * (get_tbclk() / 10000)) + 50) / 100; - end += now; - - while (now > end) - now = sysreg_read(COUNT); - - while (now < end) + do { now = sysreg_read(COUNT); + } while ((now - base) < cycles); } static int set_interrupt_handler(unsigned int nr, void (*handler)(void), |