linux-old/include/asm-ppc64/delay.h
<<
>>
Prefs
   1#ifndef _PPC64_DELAY_H
   2#define _PPC64_DELAY_H
   3
   4/*
   5 * Copyright 1996, Paul Mackerras.
   6 *
   7 * This program is free software; you can redistribute it and/or
   8 * modify it under the terms of the GNU General Public License
   9 * as published by the Free Software Foundation; either version
  10 * 2 of the License, or (at your option) any later version.
  11 *
  12 * PPC64 Support added by Dave Engebretsen, Todd Inglett, Mike Corrigan,
  13 * Anton Blanchard.
  14 */
  15
  16#ifndef __ASSEMBLY__
  17extern unsigned long tb_ticks_per_usec;
  18
  19/* define these here to prevent circular dependencies */ 
  20#define __HMT_low()     asm volatile("or 1,1,1")
  21#define __HMT_medium()  asm volatile("or 2,2,2")
  22#define __barrier()     asm volatile("":::"memory")
  23
  24static inline unsigned long __get_tb(void)
  25{
  26        unsigned long rval;
  27
  28        asm volatile("mftb %0" : "=r" (rval));
  29        return rval;
  30}
  31
  32static inline void __delay(unsigned long loops)
  33{
  34        unsigned long start = __get_tb();
  35
  36        while((__get_tb()-start) < loops)
  37                __HMT_low();
  38        __HMT_medium();
  39        __barrier();
  40}
  41
  42static inline void udelay(unsigned long usecs)
  43{
  44        unsigned long loops = tb_ticks_per_usec * usecs;
  45
  46        __delay(loops);
  47}
  48
  49static inline void ndelay(unsigned long nsecs)
  50{
  51        unsigned long loops = (tb_ticks_per_usec * nsecs) / 1000;
  52
  53        __delay(loops);
  54}
  55#endif /* !__ASSEMBLY__ */
  56
  57#endif /* _PPC64_DELAY_H */
  58
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.