From 40c5fac9f66992a8d1db9b55bb5c6c174f819b6a Mon Sep 17 00:00:00 2001 From: Themis Demetriades Date: Wed, 5 Jun 2024 23:43:36 +0100 Subject: [PATCH] Fixed bug with movk overwriting wrong bits w/ S --- src/execute.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/execute.c b/src/execute.c index 9c8734b..24e002d 100644 --- a/src/execute.c +++ b/src/execute.c @@ -169,7 +169,7 @@ static void executeDPImmediate(Machine *state, a64inst_instruction *inst) { case(a64inst_MOVK):; dword result = readRegister(state, dest, regType); - result = (result & ~(((1 << DPI_WIDEMOV_SHIFT) - 1) << shiftScalar)) | wideMovImm; + result = (result & ~(((1 << DPI_WIDEMOV_SHIFT) - 1) << shiftScalar * DPI_WIDEMOV_SHIFT)) | wideMovImm; writeRegister(state, dest, regType, result); break;