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(void)
25 __asm__ __volatile__ (
32 static inline uint64_t get_cycles64(void)
37 static inline uint64_t get_cycles64(void)
40 __asm__ __volatile__ (
46 : "=&r" (hi), "=&r" (lo), "=&r" (tmp));
47 return ((u64)hi << 32) | lo;
51 #define ARCH_HAS_READ_CURRENT_TIMER
53 static inline int read_current_timer(unsigned long *timer_val)
55 *timer_val = get_cycles();
59 #endif /* _ASM_RISCV_TIMEX_H */