Obtain time stamp disable (TSD) flag in user-mode

Obtain time stamp disable (TSD) flag in user-mode

Bild des Benutzers freeze2046

I need to check if the rdtsc instruction is supported by the processor and the operating system. The processor part is easy been done, but I have problem to check if the operation system is supporting this in other privileges than 0.

The general way is to read bit 2 from the control register CR4, but I cannot do this in PL3. Is there any workaround? I don't want to cause a Privileged Instruction exception.

2 Beiträge / 0 neu
Letzter Beitrag
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.
Bild des Benutzers Chris Hooper

If you are on Linux, you can use something like the following:

#include
#include

bool
is_rdtsc_supported(void)
{
int tsc_supported = PR_TSC_SIGSEGV;

if (prctl(PR_GET_TSC, &tsc_supported) < 0)
return false;

return tsc_supported == PR_TSC_ENABLE;
}

Melden Sie sich an, um einen Kommentar zu hinterlassen.