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

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id: timer.h,v 1.3 2000/05/09 17:40:15 davem Exp $
  2.  * timer.h: System timer definitions for sun5.
  3.  *
  4.  * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
  5.  */
  6. #ifndef _SPARC64_TIMER_H
  7. #define _SPARC64_TIMER_H
  8. /* How timers work:
  9.  *
  10.  * On uniprocessors we just use counter zero for the system wide
  11.  * ticker, this performs thread scheduling, clock book keeping,
  12.  * and runs timer based events.  Previously we used the Ultra
  13.  * %tick interrupt for this purpose.
  14.  *
  15.  * On multiprocessors we pick one cpu as the master level 10 tick
  16.  * processor.  Here this counter zero tick handles clock book
  17.  * keeping and timer events only.  Each Ultra has it's level
  18.  * 14 %tick interrupt set to fire off as well, even the master
  19.  * tick cpu runs this locally.  This ticker performs thread
  20.  * scheduling, system/user tick counting for the current thread,
  21.  * and also profiling if enabled.
  22.  */
  23. #include <linux/config.h>
  24. /* Two timers, traditionally steered to PIL's 10 and 14 respectively.
  25.  * But since INO packets are used on sun5, we could use any PIL level
  26.  * we like, however for now we use the normal ones.
  27.  *
  28.  * The 'reg' and 'interrupts' properties for these live in nodes named
  29.  * 'counter-timer'.  The first of three 'reg' properties describe where
  30.  * the sun5_timer registers are.  The other two I have no idea. (XXX)
  31.  */
  32. struct sun5_timer {
  33. u64 count0;
  34. u64 limit0;
  35. u64 count1;
  36. u64 limit1;
  37. };
  38. #define SUN5_LIMIT_ENABLE 0x80000000
  39. #define SUN5_LIMIT_TOZERO 0x40000000
  40. #define SUN5_LIMIT_ZRESTART 0x20000000
  41. #define SUN5_LIMIT_CMASK 0x1fffffff
  42. /* Given a HZ value, set the limit register to so that the timer IRQ
  43.  * gets delivered that often.
  44.  */
  45. #define SUN5_HZ_TO_LIMIT(__hz)  (1000000/(__hz))
  46. #ifdef CONFIG_SMP
  47. extern unsigned long timer_tick_offset;
  48. extern void timer_tick_interrupt(struct pt_regs *);
  49. #endif
  50. #endif /* _SPARC64_TIMER_H */