Commit | Line | Data |
---|---|---|
867e359b CM |
1 | /* |
2 | * Copyright 2010 Tilera Corporation. All Rights Reserved. | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or | |
5 | * modify it under the terms of the GNU General Public License | |
6 | * as published by the Free Software Foundation, version 2. | |
7 | * | |
8 | * This program is distributed in the hope that it will be useful, but | |
9 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | |
11 | * NON INFRINGEMENT. See the GNU General Public License for | |
12 | * more details. | |
13 | */ | |
14 | ||
15 | #ifndef _ASM_TILE_TIMEX_H | |
16 | #define _ASM_TILE_TIMEX_H | |
17 | ||
18 | /* | |
19 | * This rate should be a multiple of the possible HZ values (100, 250, 1000) | |
20 | * and a fraction of the possible hardware timer frequencies. Our timer | |
21 | * frequency is highly tunable but also quite precise, so for the primary use | |
22 | * of this value (setting ACT_HZ from HZ) we just pick a value that causes | |
23 | * ACT_HZ to be set to HZ. We make the value somewhat large just to be | |
24 | * more robust in case someone tries out a new value of HZ. | |
25 | */ | |
26 | #define CLOCK_TICK_RATE 1000000 | |
27 | ||
28 | typedef unsigned long long cycles_t; | |
29 | ||
30 | #if CHIP_HAS_SPLIT_CYCLE() | |
31 | cycles_t get_cycles(void); | |
32 | #else | |
33 | static inline cycles_t get_cycles(void) | |
34 | { | |
35 | return __insn_mfspr(SPR_CYCLE); | |
36 | } | |
37 | #endif | |
38 | ||
39 | cycles_t get_clock_rate(void); | |
40 | ||
41 | /* Called at cpu initialization to set some low-level constants. */ | |
42 | void setup_clock(void); | |
43 | ||
44 | /* Called at cpu initialization to start the tile-timer clock device. */ | |
45 | void setup_tile_timer(void); | |
46 | ||
47 | #endif /* _ASM_TILE_TIMEX_H */ |