17d36db35SAvi Kivity #include "libcflat.h" 2e7c37968SGleb Natapov #include "desc.h" 37d36db35SAvi Kivity 47d36db35SAvi Kivity int test_ud2(void) 57d36db35SAvi Kivity { 67d36db35SAvi Kivity asm volatile(ASM_TRY("1f") 77d36db35SAvi Kivity "ud2 \n\t" 87d36db35SAvi Kivity "1:" :); 97d36db35SAvi Kivity return exception_vector(); 107d36db35SAvi Kivity } 117d36db35SAvi Kivity 127d36db35SAvi Kivity int test_gp(void) 137d36db35SAvi Kivity { 147d36db35SAvi Kivity unsigned long tmp; 157d36db35SAvi Kivity 167d36db35SAvi Kivity asm volatile("mov $0xffffffff, %0 \n\t" 177d36db35SAvi Kivity ASM_TRY("1f") 187d36db35SAvi Kivity "mov %0, %%cr4\n\t" 197d36db35SAvi Kivity "1:" 207d36db35SAvi Kivity : "=a"(tmp)); 217d36db35SAvi Kivity return exception_vector(); 227d36db35SAvi Kivity } 237d36db35SAvi Kivity 247d36db35SAvi Kivity int main(void) 257d36db35SAvi Kivity { 267d36db35SAvi Kivity int r; 277d36db35SAvi Kivity 287d36db35SAvi Kivity printf("Starting IDT test\n"); 297d36db35SAvi Kivity setup_idt(); 307d36db35SAvi Kivity r = test_gp(); 31*f3cdd159SJan Kiszka report("Testing #GP", r == GP_VECTOR); 327d36db35SAvi Kivity r = test_ud2(); 33*f3cdd159SJan Kiszka report("Testing #UD", r == UD_VECTOR); 34*f3cdd159SJan Kiszka 35*f3cdd159SJan Kiszka return report_summary(); 367d36db35SAvi Kivity } 37