-rw-r--r-- 549 libcpucycles-20230105/cpucycles/riscv64-rdcycle.c raw
// version 20230105
// public domain
// djb
// adapted from supercop/cpucycles/riscv.c
// which has code from djb and Romain Dolbeau
#include "cpucycles_internal.h"
#ifndef __riscv_xlen
#error this code is only for riscv platforms
#endif
#if __riscv_xlen != 64
#error this code is only for riscv64 platforms
#endif
long long ticks(void)
{
long long result;
asm volatile("rdcycle %0" : "=r" (result));
return result;
}
long long ticks_setup(void)
{
if (!cpucycles_works(ticks)) return cpucycles_SKIP;
return cpucycles_CYCLECOUNTER;
}