diff options
Diffstat (limited to 'sim/lm32/cpu.h')
-rw-r--r-- | sim/lm32/cpu.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sim/lm32/cpu.h b/sim/lm32/cpu.h index 3bb7caf..7484ce9 100644 --- a/sim/lm32/cpu.h +++ b/sim/lm32/cpu.h @@ -198,7 +198,7 @@ struct scache { f_opcode = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \ f_r0 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); \ f_r1 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); \ - f_imm = EXTRACT_LSB0_INT (insn, 32, 15, 16); \ + f_imm = EXTRACT_LSB0_SINT (insn, 32, 15, 16); \ #define EXTRACT_IFMT_ANDI_VARS \ UINT f_opcode; \ @@ -248,7 +248,7 @@ struct scache { #define EXTRACT_IFMT_BI_CODE \ length = 4; \ f_opcode = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \ - f_call = ((pc) + (((int) (((EXTRACT_LSB0_INT (insn, 32, 25, 26)) << (6))) >> (4)))); \ + f_call = ((pc) + (((int) (((EXTRACT_LSB0_SINT (insn, 32, 25, 26)) << (6))) >> (4)))); \ #define EXTRACT_IFMT_BE_VARS \ UINT f_opcode; \ @@ -261,7 +261,7 @@ struct scache { f_opcode = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \ f_r0 = EXTRACT_LSB0_UINT (insn, 32, 25, 5); \ f_r1 = EXTRACT_LSB0_UINT (insn, 32, 20, 5); \ - f_branch = ((pc) + (((int) (((EXTRACT_LSB0_INT (insn, 32, 15, 16)) << (16))) >> (14)))); \ + f_branch = ((pc) + (((int) (((EXTRACT_LSB0_SINT (insn, 32, 15, 16)) << (16))) >> (14)))); \ #define EXTRACT_IFMT_ORI_VARS \ UINT f_opcode; \ |