xref: /kvm-unit-tests/x86/rdpru.c (revision e36a9c28fc8f8f59e0e30db244af0b17c6d04be9)
1 /* RDPRU test */
2 
3 #include "libcflat.h"
4 #include "processor.h"
5 #include "desc.h"
6 
7 static int rdpru_checking(void)
8 {
9 	asm volatile (ASM_TRY("1f")
10 		      ".byte 0x0f,0x01,0xfd \n\t" /* rdpru */
11 		      "1:" : : "c" (0) : "eax", "edx");
12 	return exception_vector();
13 }
14 
15 int main(int ac, char **av)
16 {
17 	setup_idt();
18 
19 	if (this_cpu_has(X86_FEATURE_RDPRU))
20 		report_skip("RDPRU raises #UD");
21 	else
22 		report("RDPRU raises #UD", rdpru_checking() == UD_VECTOR);
23 
24 	return report_summary();
25 }
26