From f3700051a4da6cd017e5ce41f2732f3fc3e86e2d Mon Sep 17 00:00:00 2001 From: fares Date: Fri, 22 Nov 2019 01:13:54 -0500 Subject: [PATCH] Fixed long jumps --- simX/enc.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/simX/enc.cpp b/simX/enc.cpp index 16007652..09a3253c 100644 --- a/simX/enc.cpp +++ b/simX/enc.cpp @@ -219,7 +219,13 @@ Instruction *WordDecoder::decode(const std::vector &v, Size &idx, trace_in imeed = 0 | (bits_10_1 << 1) | (bit_11 << 11) | (bits_19_12 << 12) | (bit_20 << 20); - inst.setSrcImm(signExt(imeed, 20, j_immed_mask)); + if (bit_20) + { + imeed |= ~j_immed_mask; + } + + // inst.setSrcImm(signExt(imeed, 20, j_immed_mask)); + inst.setSrcImm(imeed); usedImm = true; trace_inst->valid_inst = true;