diff --git a/src/execute.c b/src/execute.c index fc436af..7ad18da 100644 --- a/src/execute.c +++ b/src/execute.c @@ -225,7 +225,7 @@ static void executeDPRegister(Machine *state, a64inst_instruction *inst) { if (arithmLogicData->type != a64inst_DPR_LOGIC) { fprintf(stderr, "Attempting to perform ROR shift on non-logic register data processing instruction!\n"); } - src2Val = truncateValue(src2Val >> shiftAmount | src2Val << (getMSBPos(regType) - shiftAmount), regType); + src2Val = truncateValue(src2Val >> shiftAmount | src2Val << (getMSBPos(regType) - shiftAmount + 1), regType); break; default: