aboutsummaryrefslogtreecommitdiff
path: root/arch/score/include/asm/delay.h
diff options
context:
space:
mode:
authorChen Liqin <liqin.chen@sunplusct.com>2009-08-30 10:26:23 +0800
committerChen Liqin <liqin.chen@sunplusct.com>2009-08-30 10:26:23 +0800
commitd27eadc7612404b06f99888c02726ab7d5036e0f (patch)
treeed32b38e1cd4cbc52506c27c8cc353161255c9d6 /arch/score/include/asm/delay.h
parentadda766193ea1cf3137484a9521972d080d0b7af (diff)
parentfbd85b0e26bab0a13dcf860f2c20e86cb0507b61 (diff)
Merge branch 'score' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic into for-linus
* 'score' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic: score: clean up mm/init.c score: make irq.h definitions local score: cleanups: dead code, 0 as pointer, shadowed variables score: fix function prototypes score: add address space annotations score: add missing #includes score: move save arg5 and arg6 instruction in front of enable_irq score: add prototypes for wrapped syscalls score: remove init_mm score: add generic sys_call_table score: remove __{put,get}_user_unknown score: unset __ARCH_WANT_IPC_PARSE_VERSION score: update files according to review comments score: add maintainers for score architecture score: Add support for Sunplus S+core architecture
Diffstat (limited to 'arch/score/include/asm/delay.h')
-rw-r--r--arch/score/include/asm/delay.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/arch/score/include/asm/delay.h b/arch/score/include/asm/delay.h
new file mode 100644
index 00000000000..6726ec199dc
--- /dev/null
+++ b/arch/score/include/asm/delay.h
@@ -0,0 +1,26 @@
+#ifndef _ASM_SCORE_DELAY_H
+#define _ASM_SCORE_DELAY_H
+
+static inline void __delay(unsigned long loops)
+{
+ /* 3 cycles per loop. */
+ __asm__ __volatile__ (
+ "1:\tsubi\t%0, 3\n\t"
+ "cmpz.c\t%0\n\t"
+ "ble\t1b\n\t"
+ : "=r" (loops)
+ : "0" (loops));
+}
+
+static inline void __udelay(unsigned long usecs)
+{
+ unsigned long loops_per_usec;
+
+ loops_per_usec = (loops_per_jiffy * HZ) / 1000000;
+
+ __delay(usecs * loops_per_usec);
+}
+
+#define udelay(usecs) __udelay(usecs)
+
+#endif /* _ASM_SCORE_DELAY_H */