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_checking() == UD_VECTOR, "RDPRU raises #UD"); 23 24 return report_summary(); 25 } 26