From 6db627f459c3f26dc5d5178a6d800dbb18066fc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Fabre?= Date: Sun, 13 Mar 2022 23:16:11 +0100 Subject: [PATCH] fixed BFINS instruction when width+offset > 32 --- m68k_in.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/m68k_in.c b/m68k_in.c index e5811b3..f0585fe 100644 --- a/m68k_in.c +++ b/m68k_in.c @@ -2950,7 +2950,8 @@ M68KMAKE_OP(bfins, 32, ., .) if((width + offset) > 32) { mask_byte = MASK_OUT_ABOVE_8(mask_base); - insert_byte = MASK_OUT_ABOVE_8(insert_base); + + insert_byte = MASK_OUT_ABOVE_8(insert_base << (8 - (offset & 7))); // JFF: else offset isn't taken into account data_byte = m68ki_read_8(ea+4); FLAG_Z |= (data_byte & mask_byte); m68ki_write_8(ea+4, (data_byte & ~mask_byte) | insert_byte);