xref: /kvm-unit-tests/x86/rdpru.c (revision 14b54ed754c8a8cae7a22895e4a0b745a3227a4b)
1 /* RDPRU test */
2 
3 #include "libcflat.h"
4 #include "processor.h"
5 #include "desc.h"
6 
rdpru_safe(void)7 static int rdpru_safe(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 
main(int ac,char ** av)15 int main(int ac, char **av)
16 {
17 	if (this_cpu_has(X86_FEATURE_RDPRU))
18 		report_skip("RDPRU raises #UD");
19 	else
20 		report(rdpru_safe() == UD_VECTOR, "RDPRU raises #UD");
21 
22 	return report_summary();
23 }
24