36 lines
582 B
C
36 lines
582 B
C
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#include <sys/kassert.h>
|
|
#include <sys/kdebug.h>
|
|
#include <sys/ktime.h>
|
|
|
|
#include <machine/cpu.h>
|
|
#include <machine/cpuop.h>
|
|
|
|
uint64_t
|
|
Time_GetTSC()
|
|
{
|
|
uint64_t ui;
|
|
__asm__ volatile("mrs %0, CNTVCT_EL0" : "=&r" (ui));
|
|
return ui;
|
|
}
|
|
|
|
uint64_t
|
|
Time_GetTSCFreq()
|
|
{
|
|
uint64_t ui;
|
|
__asm__ volatile("mrs %0, CNTFRQ_EL0" : "=&r" (ui));
|
|
return ui;
|
|
}
|
|
|
|
static void
|
|
Debug_ReadTSC(int argc, const char *argv[])
|
|
{
|
|
kprintf("RDTSC: %lld\n", Time_GetTSC());
|
|
}
|
|
|
|
REGISTER_DBGCMD(readtsc, "Print current timestamp", Debug_ReadTSC);
|
|
|