diff options
| author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2017-02-02 11:58:10 -0500 |
|---|---|---|
| committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2017-03-08 02:18:16 -0500 |
| commit | 89b126bcef6bac4cd6c78c67b58407f4ff2182c4 (patch) | |
| tree | 3b57b068871d21b3e7f7d564b4322a3b1e59ffc8 | |
| parent | 875e24f01d2775e4229abf8eb82e97e0884c97c7 (diff) | |
arm64: add cycles.h
Required for get_cycles() in userspace. This is required to compile
the tools. Whether or not get_cycles() works in userspace depends on
whether the kernel has enabled access to the CNTVCT_EL0 register from
userspace (= exception level EL0).
| -rw-r--r-- | arch/arm64/include/asm/cycles.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/cycles.h b/arch/arm64/include/asm/cycles.h new file mode 100644 index 0000000..e832d82 --- /dev/null +++ b/arch/arm64/include/asm/cycles.h | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | #ifndef ASM_CYCLES_H | ||
| 2 | #define ASM_CYCLES_H | ||
| 3 | |||
| 4 | #include <stdint.h> | ||
| 5 | #include <inttypes.h> | ||
| 6 | |||
| 7 | typedef uint64_t cycles_t; | ||
| 8 | |||
| 9 | #define CYCLES_FMT PRIu64 | ||
| 10 | |||
| 11 | static inline cycles_t get_cycles(void) | ||
| 12 | { | ||
| 13 | cycles_t c; | ||
| 14 | asm volatile( | ||
| 15 | "isb\n" | ||
| 16 | "mrs %0, cntvct_el0" : "=r" (c)); | ||
| 17 | return c; | ||
| 18 | } | ||
| 19 | |||
| 20 | #endif | ||
