| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /* 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 <linux/compiler.h>
- #include <asm/cpu.h>
- #include <asm/cpu-features.h>
- 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 */
|