/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2020-2022 Loongson Technology Corporation Limited */ #ifndef _ASM_TIMEX_H #define _ASM_TIMEX_H #ifdef __KERNEL__ #include #include #include typedef unsigned long cycles_t; #define get_cycles get_cycles static inline cycles_t get_cycles(void) { #ifdef CONFIG_32BIT return rdtime_l(); #else return rdtime_d(); #endif } #ifdef CONFIG_32BIT #define get_cycles_hi get_cycles_hi static inline cycles_t get_cycles_hi(void) { return rdtime_h(); } #endif static inline u64 get_cycles64(void) { #ifdef CONFIG_32BIT u32 hi, lo; do { hi = rdtime_h(); lo = rdtime_l(); } while (hi != rdtime_h()); return ((u64)hi << 32) | lo; #else return rdtime_d(); #endif } #endif /* __KERNEL__ */ #endif /* _ASM_TIMEX_H */