Spaces:
Runtime error
Runtime error
| int test_ud2(bool *rflags_rf) | |
| { | |
| asm volatile(ASM_TRY("1f") | |
| "ud2 \n\t" | |
| "1:" :); | |
| *rflags_rf = exception_rflags_rf(); | |
| return exception_vector(); | |
| } | |
| int test_gp(bool *rflags_rf) | |
| { | |
| unsigned long tmp; | |
| asm volatile("mov $0xffffffff, %0 \n\t" | |
| ASM_TRY("1f") | |
| "mov %0, %%cr4\n\t" | |
| "1:" | |
| : "=a"(tmp)); | |
| *rflags_rf = exception_rflags_rf(); | |
| return exception_vector(); | |
| } | |
| int main(void) | |
| { | |
| int r; | |
| bool rflags_rf; | |
| printf("Starting IDT test\n"); | |
| setup_idt(); | |
| r = test_gp(&rflags_rf); | |
| report("Testing #GP", r == GP_VECTOR); | |
| report("Testing #GP rflags.rf", rflags_rf); | |
| r = test_ud2(&rflags_rf); | |
| report("Testing #UD", r == UD_VECTOR); | |
| report("Testing #UD rflags.rf", rflags_rf); | |
| return report_summary(); | |
| } | |