Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
xtensa
include
asm
timex.h
Go to the documentation of this file.
1
/*
2
* include/asm-xtensa/timex.h
3
*
4
* This file is subject to the terms and conditions of the GNU General Public
5
* License. See the file "COPYING" in the main directory of this archive
6
* for more details.
7
*
8
* Copyright (C) 2001 - 2005 Tensilica Inc.
9
*/
10
11
#ifndef _XTENSA_TIMEX_H
12
#define _XTENSA_TIMEX_H
13
14
#ifdef __KERNEL__
15
16
#include <asm/processor.h>
17
#include <
linux/stringify.h
>
18
19
#define _INTLEVEL(x) XCHAL_INT ## x ## _LEVEL
20
#define INTLEVEL(x) _INTLEVEL(x)
21
22
#if INTLEVEL(XCHAL_TIMER0_INTERRUPT) == 1
23
# define LINUX_TIMER 0
24
# define LINUX_TIMER_INT XCHAL_TIMER0_INTERRUPT
25
#elif INTLEVEL(XCHAL_TIMER1_INTERRUPT) == 1
26
# define LINUX_TIMER 1
27
# define LINUX_TIMER_INT XCHAL_TIMER1_INTERRUPT
28
#elif INTLEVEL(XCHAL_TIMER2_INTERRUPT) == 1
29
# define LINUX_TIMER 2
30
# define LINUX_TIMER_INT XCHAL_TIMER2_INTERRUPT
31
#else
32
# error "Bad timer number for Linux configurations!"
33
#endif
34
35
#define LINUX_TIMER_MASK (1L << LINUX_TIMER_INT)
36
37
#define CLOCK_TICK_RATE 1193180
/* (everyone is using this value) */
38
#define CLOCK_TICK_FACTOR 20
/* Factor of both 10^6 and CLOCK_TICK_RATE */
39
40
#ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT
41
extern
unsigned
long
ccount_per_jiffy;
42
extern
unsigned
long
nsec_per_ccount;
43
#define CCOUNT_PER_JIFFY ccount_per_jiffy
44
#define NSEC_PER_CCOUNT nsec_per_ccount
45
#else
46
#define CCOUNT_PER_JIFFY (CONFIG_XTENSA_CPU_CLOCK*(1000000UL/HZ))
47
#define NSEC_PER_CCOUNT (1000UL / CONFIG_XTENSA_CPU_CLOCK)
48
#endif
49
50
51
typedef
unsigned
long
long
cycles_t
;
52
53
/*
54
* Only used for SMP.
55
*/
56
57
extern
cycles_t
cacheflush_time;
58
59
#define get_cycles() (0)
60
61
62
/*
63
* Register access.
64
*/
65
66
#define WSR_CCOUNT(r) asm volatile ("wsr %0, ccount" :: "a" (r))
67
#define RSR_CCOUNT(r) asm volatile ("rsr %0, ccount" : "=a" (r))
68
#define WSR_CCOMPARE(x,r) asm volatile ("wsr %0,"__stringify(SREG_CCOMPARE)"+"__stringify(x) :: "a"(r))
69
#define RSR_CCOMPARE(x,r) asm volatile ("rsr %0,"__stringify(SREG_CCOMPARE)"+"__stringify(x) : "=a"(r))
70
71
static
inline
unsigned
long
get_ccount (
void
)
72
{
73
unsigned
long
ccount;
74
RSR_CCOUNT(ccount);
75
return
ccount;
76
}
77
78
static
inline
void
set_ccount (
unsigned
long
ccount)
79
{
80
WSR_CCOUNT(ccount);
81
}
82
83
static
inline
unsigned
long
get_linux_timer (
void
)
84
{
85
unsigned
ccompare;
86
RSR_CCOMPARE(LINUX_TIMER, ccompare);
87
return
ccompare;
88
}
89
90
static
inline
void
set_linux_timer (
unsigned
long
ccompare)
91
{
92
WSR_CCOMPARE(LINUX_TIMER, ccompare);
93
}
94
95
#endif
/* __KERNEL__ */
96
#endif
/* _XTENSA_TIMEX_H */
Generated on Thu Jan 10 2013 12:50:40 for Linux Kernel by
1.8.2