bios_emulator: fix incorrect printing of address in "jump near immediate"
authorYuri Zaporozhets <yuriz@qrv-systems.net>
Sun, 1 Dec 2024 22:28:49 +0000 (23:28 +0100)
committerTom Rini <trini@konsulko.com>
Sun, 15 Dec 2024 17:39:23 +0000 (11:39 -0600)
In the x86emuOp_jump_call_near_IMM() function the target address is
printed incorrectly when jumping backwards. For example instead of
"jmp 0xe8bc" the string "jmp ffffe8bc" is printed. That's because
of the following macro:

    DECODE_PRINTF2("%04x\n", ip);

while it should be

    DECODE_PRINTF2("%04x\n", (u16)ip);

Signed-off-by: Yuri Zaporozhets <yuriz@qrv-systems.net>
drivers/bios_emulator/x86emu/ops.c

index 31b52df..f332be5 100644 (file)
@@ -4221,7 +4221,7 @@ void x86emuOp_jump_near_IMM(u8 X86EMU_UNUSED(op1))
     DECODE_PRINTF("JMP\t");
     ip = (s16)fetch_word_imm();
     ip += (s16)M.x86.R_IP;
-    DECODE_PRINTF2("%04x\n", ip);
+    DECODE_PRINTF2("%04x\n", (u16)ip);
     TRACE_AND_STEP();
     M.x86.R_IP = (u16)ip;
     DECODE_CLEAR_SEGOVR();