summaryrefslogtreecommitdiff
path: root/KNOWN_ISSUES
blob: 0c44b388de7320b3a1c1c76b110dbb0a853fd1ea (plain)
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
Some system biosen (called out to by laptops) use opcodes (e.g. LIDT - 0x0f01)
 that x86emu does not support. This results in the emulator dying horribly,
halfway through the emulation (which will be logged at the end of your trace)

Should this apply to you, the following patch will ignore interrupts calling
to the system bios, and should avoid this problem

diff --git a/libx86emu/ops.c b/libx86emu/ops.c
index 37ae2c9..17eb7a4 100644
--- a/libx86emu/ops.c
+++ b/libx86emu/ops.c
@@ -8856,8 +8856,9 @@ static void x86emuOp_int_IMM(u8 X86EMU_UNUSED(op1))
     START_OF_INSTR();
     DECODE_PRINTF("INT\t");
     intnum = fetch_byte_imm();
-    DECODE_PRINTF2("%x\n", intnum);
+    DECODE_PRINTF2("%x (ignored)\n", intnum);
     TRACE_AND_STEP();
+#if 0
     if (_X86EMU_intrTab[intnum]) {
 	(*_X86EMU_intrTab[intnum])(intnum);
     } else {
@@ -8869,6 +8870,7 @@ static void x86emuOp_int_IMM(u8 X86EMU_UNUSED(op1))
         push_word(M.x86.R_IP);
         M.x86.R_IP = mem_access_word(intnum * 4);
     }
+#endif
     DECODE_CLEAR_SEGOVR();
     END_OF_INSTR();
 }