Spaces:
Runtime error
Runtime error
File size: 886 Bytes
8df6da4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#include "libcflat.h"
#include "desc.h"
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();
}
|