timex.h (1440B)
1/* 2 * This file is subject to the terms and conditions of the GNU General Public 3 * License. See the file "COPYING" in the main directory of this archive 4 * for more details. 5 * 6 * Copyright (C) 2001 - 2013 Tensilica Inc. 7 */ 8 9#ifndef _XTENSA_TIMEX_H 10#define _XTENSA_TIMEX_H 11 12#include <asm/processor.h> 13 14#if XCHAL_NUM_TIMERS > 0 && \ 15 XTENSA_INT_LEVEL(XCHAL_TIMER0_INTERRUPT) <= XCHAL_EXCM_LEVEL 16# define LINUX_TIMER 0 17# define LINUX_TIMER_INT XCHAL_TIMER0_INTERRUPT 18#elif XCHAL_NUM_TIMERS > 1 && \ 19 XTENSA_INT_LEVEL(XCHAL_TIMER1_INTERRUPT) <= XCHAL_EXCM_LEVEL 20# define LINUX_TIMER 1 21# define LINUX_TIMER_INT XCHAL_TIMER1_INTERRUPT 22#elif XCHAL_NUM_TIMERS > 2 && \ 23 XTENSA_INT_LEVEL(XCHAL_TIMER2_INTERRUPT) <= XCHAL_EXCM_LEVEL 24# define LINUX_TIMER 2 25# define LINUX_TIMER_INT XCHAL_TIMER2_INTERRUPT 26#else 27# error "Bad timer number for Linux configurations!" 28#endif 29 30extern unsigned long ccount_freq; 31 32void local_timer_setup(unsigned cpu); 33 34/* 35 * Register access. 36 */ 37 38static inline unsigned long get_ccount (void) 39{ 40 return xtensa_get_sr(ccount); 41} 42 43static inline void set_ccount (unsigned long ccount) 44{ 45 xtensa_set_sr(ccount, ccount); 46} 47 48static inline unsigned long get_linux_timer (void) 49{ 50 return xtensa_get_sr(SREG_CCOMPARE + LINUX_TIMER); 51} 52 53static inline void set_linux_timer (unsigned long ccompare) 54{ 55 xtensa_set_sr(ccompare, SREG_CCOMPARE + LINUX_TIMER); 56} 57 58#include <asm-generic/timex.h> 59 60#endif /* _XTENSA_TIMEX_H */