12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- * Copyright 2010 Tilera Corporation. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
- * NON INFRINGEMENT. See the GNU General Public License for
- * more details.
- */
- #ifndef _ASM_TILE_TIMEX_H
- #define _ASM_TILE_TIMEX_H
- /*
- * This rate should be a multiple of the possible HZ values (100, 250, 1000)
- * and a fraction of the possible hardware timer frequencies. Our timer
- * frequency is highly tunable but also quite precise, so for the primary use
- * of this value (setting ACT_HZ from HZ) we just pick a value that causes
- * ACT_HZ to be set to HZ. We make the value somewhat large just to be
- * more robust in case someone tries out a new value of HZ.
- */
- #define CLOCK_TICK_RATE 1000000
- typedef unsigned long long cycles_t;
- #if CHIP_HAS_SPLIT_CYCLE()
- cycles_t get_cycles(void);
- #define get_cycles_low() __insn_mfspr(SPR_CYCLE_LOW)
- #else
- static inline cycles_t get_cycles(void)
- {
- return __insn_mfspr(SPR_CYCLE);
- }
- #define get_cycles_low() __insn_mfspr(SPR_CYCLE) /* just get all 64 bits */
- #endif
- cycles_t get_clock_rate(void);
- /* Convert nanoseconds to core clock cycles. */
- cycles_t ns2cycles(unsigned long nsecs);
- /* Called at cpu initialization to set some low-level constants. */
- void setup_clock(void);
- /* Called at cpu initialization to start the tile-timer clock device. */
- void setup_tile_timer(void);
- #endif /* _ASM_TILE_TIMEX_H */
|