On 25/06/20 21:18, Paolo Bonzini wrote: > On 25/06/20 20:59, Nadav Amit wrote: >> I think that there is a hidden assumption about the IDT location in >> realmode’s test_int(), which this would break: >> >> static void test_int(void) >> { >> init_inregs(NULL); >> >> boot_idt[11] = 0x1000; /* Store a pointer to address 0x1000 in IDT entry 0x11 */ >> *(u8 *)(0x1000) = 0xcf; /* 0x1000 contains an IRET instruction */ >> >> MK_INSN(int11, "int $0x11\n\t"); >> >> exec_in_big_real_mode(&insn_int11); >> report("int 1", 0, 1); >> } > > Uuuuuuuuuuuuuuuumph... you're right. :( Will send a patch tomorrow. Actually the IDTR is not reloaded by exec_in_big_real_mode, so this (while a bit weird) works fine. Paolo