|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef AVUTIL_RISCV_TIMER_H |
|
#define AVUTIL_RISCV_TIMER_H |
|
|
|
#include "config.h" |
|
|
|
#if HAVE_INLINE_ASM |
|
#include <stdint.h> |
|
|
|
static inline uint64_t ff_read_time(void) |
|
{ |
|
#if (__riscv_xlen >= 64) |
|
uintptr_t cycles; |
|
|
|
__asm__ ("rdtime %0" : "=r" (cycles)); |
|
|
|
#else |
|
uint64_t cycles; |
|
uint32_t hi, lo, check; |
|
|
|
__asm__ ( |
|
"1: rdtimeh %0\n" |
|
" rdtime %1\n" |
|
" rdtimeh %2\n" |
|
" bne %0, %2, 1b\n" : "=r" (hi), "=r" (lo), "=r" (check)); |
|
|
|
cycles = (((uint64_t)hi) << 32) | lo; |
|
|
|
#endif |
|
return cycles; |
|
} |
|
|
|
#define AV_READ_TIME ff_read_time |
|
#define FF_TIMER_UNITS "ticks" |
|
|
|
#endif |
|
#endif |
|
|