> On Jun 26, 2020, at 12:05 AM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > 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. Err… So it means I need to debug why it does not work for *me*…