delay.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef _CRIS_DELAY_H
  2. #define _CRIS_DELAY_H
  3. /*
  4.  * Copyright (C) 1998, 1999, 2000, 2001 Axis Communications AB
  5.  *
  6.  * Delay routines, using a pre-computed "loops_per_second" value.
  7.  */
  8. #include <linux/config.h>
  9. #include <linux/linkage.h>
  10. #ifdef CONFIG_SMP
  11. #include <asm/smp.h>
  12. #endif 
  13. extern void __do_delay(void); /* Special register call calling convention */
  14. extern __inline__ void __delay(int loops)
  15. {
  16. __asm__ __volatile__ (
  17.       "move.d %0,$r9nt"
  18.       "beq 2fnt"
  19.       "subq 1,$r9nt"
  20.       "1:nt"
  21.       "bne 1bnt"
  22.       "subq 1,$r9n"
  23.       "2:"
  24.       : : "g" (loops) : "r9");
  25. }
  26. /* Use only for very small delays ( < 1 msec).  */
  27. extern unsigned long loops_per_usec; /* arch/cris/mm/init.c */
  28. extern __inline__ void udelay(unsigned long usecs)
  29. {
  30. __delay(usecs * loops_per_usec);
  31. }
  32. #endif /* defined(_CRIS_DELAY_H) */