From 5fb5180a1616b714a289ae4c8ff447e5ee0bddb0 Mon Sep 17 00:00:00 2001 From: Yuri Zaporozhets Date: Sat, 30 Nov 2024 21:56:25 +0100 Subject: bios_emulator: fix incorrect printing of address in "call near immediate" In the x86emuOp_call_near_IMM() function the address of CALL is printed incorrectly when jumping backwards. For example, the correct disassemble of the bytes below would be: 0000E8DE E8DBFF call 0xe8bc (verified by ndisasm). But instead the address is printed as "ffffe8bc". 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 --- drivers/bios_emulator/x86emu/ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/bios_emulator/x86emu/ops.c') diff --git a/drivers/bios_emulator/x86emu/ops.c b/drivers/bios_emulator/x86emu/ops.c index 57422ec3d47..31b52df9bfe 100644 --- a/drivers/bios_emulator/x86emu/ops.c +++ b/drivers/bios_emulator/x86emu/ops.c @@ -4200,7 +4200,7 @@ void x86emuOp_call_near_IMM(u8 X86EMU_UNUSED(op1)) DECODE_PRINTF("CALL\t"); ip = (s16) fetch_word_imm(); ip += (s16) M.x86.R_IP; /* CHECK SIGN */ - DECODE_PRINTF2("%04x\n", ip); + DECODE_PRINTF2("%04x\n", (u16)ip); CALL_TRACE(M.x86.saved_cs, M.x86.saved_ip, M.x86.R_CS, ip, ""); TRACE_AND_STEP(); push_word(M.x86.R_IP); -- cgit v1.2.3 From ae12873de7e57c40f527e913ddcc4be067a70ab1 Mon Sep 17 00:00:00 2001 From: Yuri Zaporozhets Date: Sun, 1 Dec 2024 23:28:49 +0100 Subject: bios_emulator: fix incorrect printing of address in "jump near immediate" 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 --- drivers/bios_emulator/x86emu/ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/bios_emulator/x86emu/ops.c') diff --git a/drivers/bios_emulator/x86emu/ops.c b/drivers/bios_emulator/x86emu/ops.c index 31b52df9bfe..f332be5a6f5 100644 --- a/drivers/bios_emulator/x86emu/ops.c +++ b/drivers/bios_emulator/x86emu/ops.c @@ -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(); -- cgit v1.2.3