timer.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
- /* $Id: timer.h,v 1.3 2000/05/09 17:40:15 davem Exp $
- * timer.h: System timer definitions for sun5.
- *
- * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
- */
- #ifndef _SPARC64_TIMER_H
- #define _SPARC64_TIMER_H
- /* How timers work:
- *
- * On uniprocessors we just use counter zero for the system wide
- * ticker, this performs thread scheduling, clock book keeping,
- * and runs timer based events. Previously we used the Ultra
- * %tick interrupt for this purpose.
- *
- * On multiprocessors we pick one cpu as the master level 10 tick
- * processor. Here this counter zero tick handles clock book
- * keeping and timer events only. Each Ultra has it's level
- * 14 %tick interrupt set to fire off as well, even the master
- * tick cpu runs this locally. This ticker performs thread
- * scheduling, system/user tick counting for the current thread,
- * and also profiling if enabled.
- */
- #include <linux/config.h>
- /* Two timers, traditionally steered to PIL's 10 and 14 respectively.
- * But since INO packets are used on sun5, we could use any PIL level
- * we like, however for now we use the normal ones.
- *
- * The 'reg' and 'interrupts' properties for these live in nodes named
- * 'counter-timer'. The first of three 'reg' properties describe where
- * the sun5_timer registers are. The other two I have no idea. (XXX)
- */
- struct sun5_timer {
- u64 count0;
- u64 limit0;
- u64 count1;
- u64 limit1;
- };
- #define SUN5_LIMIT_ENABLE 0x80000000
- #define SUN5_LIMIT_TOZERO 0x40000000
- #define SUN5_LIMIT_ZRESTART 0x20000000
- #define SUN5_LIMIT_CMASK 0x1fffffff
- /* Given a HZ value, set the limit register to so that the timer IRQ
- * gets delivered that often.
- */
- #define SUN5_HZ_TO_LIMIT(__hz) (1000000/(__hz))
- #ifdef CONFIG_SMP
- extern unsigned long timer_tick_offset;
- extern void timer_tick_interrupt(struct pt_regs *);
- #endif
- #endif /* _SPARC64_TIMER_H */