aboutsummaryrefslogtreecommitdiff
path: root/riscv
diff options
context:
space:
mode:
Diffstat (limited to 'riscv')
-rw-r--r--riscv/insns/jal.h2
-rw-r--r--riscv/sim.cc5
2 files changed, 6 insertions, 1 deletions
diff --git a/riscv/insns/jal.h b/riscv/insns/jal.h
index 7995b15..7a70307 100644
--- a/riscv/insns/jal.h
+++ b/riscv/insns/jal.h
@@ -1,2 +1,2 @@
-R[31] = npc;
+R[1] = npc;
npc = JUMP_TARGET;
diff --git a/riscv/sim.cc b/riscv/sim.cc
index ca10e09..8b04aa2 100644
--- a/riscv/sim.cc
+++ b/riscv/sim.cc
@@ -225,6 +225,9 @@ reg_t sim_t::get_mem(const std::vector<std::string>& args)
throw trap_illegal_instruction;
reg_t addr = strtol(args[0].c_str(),NULL,16), val;
+ if(addr == LONG_MAX)
+ addr = strtoul(args[0].c_str(),NULL,16);
+
mmu_t mmu(mem,memsz);
switch(addr % 8)
{
@@ -257,6 +260,8 @@ void sim_t::interactive_until(const std::string& cmd, const std::vector<std::str
std::string scmd = args[0];
reg_t val = strtol(args[args.size()-1].c_str(),NULL,16);
+ if(val == LONG_MAX)
+ val = strtoul(args[args.size()-1].c_str(),NULL,16);
std::vector<std::string> args2;
args2 = std::vector<std::string>(args.begin()+1,args.end()-1);