mtd: nand: omap: Fix comment in platform data using wrong Kconfig symbol
[linux/fpc-iii.git] / arch / riscv / include / asm / timex.h
blob2f26989cb864bedaa1eb0bd53456ae33fcdcaabe
1 /*
2 * Copyright (C) 2012 Regents of the University of California
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.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
14 #ifndef _ASM_RISCV_TIMEX_H
15 #define _ASM_RISCV_TIMEX_H
17 #include <asm/param.h>
19 typedef unsigned long cycles_t;
21 static inline cycles_t get_cycles_inline(void)
23 cycles_t n;
25 __asm__ __volatile__ (
26 "rdtime %0"
27 : "=r" (n));
28 return n;
30 #define get_cycles get_cycles_inline
32 #ifdef CONFIG_64BIT
33 static inline uint64_t get_cycles64(void)
35 return get_cycles();
37 #else
38 static inline uint64_t get_cycles64(void)
40 u32 lo, hi, tmp;
41 __asm__ __volatile__ (
42 "1:\n"
43 "rdtimeh %0\n"
44 "rdtime %1\n"
45 "rdtimeh %2\n"
46 "bne %0, %2, 1b"
47 : "=&r" (hi), "=&r" (lo), "=&r" (tmp));
48 return ((u64)hi << 32) | lo;
50 #endif
52 #define ARCH_HAS_READ_CURRENT_TIMER
54 static inline int read_current_timer(unsigned long *timer_val)
56 *timer_val = get_cycles();
57 return 0;
60 #endif /* _ASM_RISCV_TIMEX_H */