Mikael Starvik | 51533b6 | 2005-07-27 11:44:44 -0700 | [diff] [blame] | 1 | #ifndef _ASM_CRIS_ARCH_DELAY_H |
| 2 | #define _ASM_CRIS_ARCH_DELAY_H |
| 3 | |
Jesper Nilsson | 94ebe16 | 2008-01-28 16:54:51 +0100 | [diff] [blame] | 4 | extern void cris_delay10ns(u32 n10ns); |
| 5 | #define udelay(u) cris_delay10ns((u)*100) |
| 6 | #define ndelay(n) cris_delay10ns(((n)+9)/10) |
| 7 | |
| 8 | /* |
| 9 | * Not used anymore for udelay or ndelay. Referenced by |
| 10 | * e.g. init/calibrate.c. All other references are likely bugs; |
| 11 | * should be replaced by mdelay, udelay or ndelay. |
| 12 | */ |
| 13 | |
Adrian Bunk | d9b5444 | 2005-11-07 00:58:44 -0800 | [diff] [blame] | 14 | static inline void |
Mikael Starvik | 51533b6 | 2005-07-27 11:44:44 -0700 | [diff] [blame] | 15 | __delay(int loops) |
| 16 | { |
| 17 | __asm__ __volatile__ ( |
| 18 | "move.d %0, $r9\n\t" |
| 19 | "beq 2f\n\t" |
| 20 | "subq 1, $r9\n\t" |
| 21 | "1:\n\t" |
| 22 | "bne 1b\n\t" |
| 23 | "subq 1, $r9\n" |
| 24 | "2:" |
| 25 | : : "g" (loops) : "r9"); |
| 26 | } |
| 27 | |
| 28 | #endif /* _ASM_CRIS_ARCH_DELAY_H */ |