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