From ab4ba59cca5094f15987ab16bddbd0ca4ea50a62 Mon Sep 17 00:00:00 2001 From: David Li Date: Mon, 11 Jan 2016 09:29:42 -0700 Subject: Fix BGE, BGEU, funct3 calculation --- src/isa/mod.rs | 2 +- src/simulator.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/isa/mod.rs b/src/isa/mod.rs index 8a6e65b..2c20d05 100644 --- a/src/isa/mod.rs +++ b/src/isa/mod.rs @@ -130,7 +130,7 @@ impl Instruction { } pub fn funct3(&self) -> u32 { - (self.word >> 12) & 0x3 + (self.word >> 12) & 0x7 } pub fn funct7(&self) -> u32 { diff --git a/src/simulator.rs b/src/simulator.rs index 716c0e1..1c87d57 100644 --- a/src/simulator.rs +++ b/src/simulator.rs @@ -112,9 +112,9 @@ impl<'a> Core<'a> { isa::funct3::BEQ => rs1 == rs2, isa::funct3::BNE => rs1 != rs2, isa::funct3::BLT => (rs1 as isa::SignedWord) < (rs2 as isa::SignedWord), - isa::funct3::BGE => (rs1 as isa::SignedWord) > (rs2 as isa::SignedWord), + isa::funct3::BGE => (rs1 as isa::SignedWord) >= (rs2 as isa::SignedWord), isa::funct3::BLTU => rs1 < rs2, - isa::funct3::BGEU => rs1 > rs2, + isa::funct3::BGEU => rs1 >= rs2, _ => { self.trap(Trap::IllegalInstruction { address: pc, -- cgit v1.2.3