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)
25 __asm__
__volatile__ (
30 #define get_cycles get_cycles_inline
33 static inline uint64_t get_cycles64(void)
38 static inline uint64_t get_cycles64(void)
41 __asm__
__volatile__ (
47 : "=&r" (hi
), "=&r" (lo
), "=&r" (tmp
));
48 return ((u64
)hi
<< 32) | lo
;
52 #define ARCH_HAS_READ_CURRENT_TIMER
54 static inline int read_current_timer(unsigned long *timer_val
)
56 *timer_val
= get_cycles();
60 #endif /* _ASM_RISCV_TIMEX_H */