summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Roelke <ar4jc@virginia.edu>2017-12-14 23:22:10 -0500
committerAlec Roelke <ar4jc@virginia.edu>2018-01-11 23:11:54 +0000
commitb622601dfbabfb7cebf1a6df2eb8b0440d8365cb (patch)
tree11787d6b15a414ea886534fa9215fd82dc654a94
parent1437a24864c526edc875fb07af6483649455436d (diff)
downloadgem5-b622601dfbabfb7cebf1a6df2eb8b0440d8365cb.tar.xz
arch-riscv: Don't crash when printing unknown CSRs
This patch fixes a potential crash if an unnamed CSR is accessed and debug flags are enabled that print disassembly. Unknown CSRs will be identified as "??" followed by the address that was used. Change-Id: If5ac57f1422bd59c72a1a06206fa9d9dc05d21ef Reviewed-on: https://gem5-review.googlesource.com/7321 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Alec Roelke <ar4jc@virginia.edu>
-rw-r--r--src/arch/riscv/insts/standard.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/arch/riscv/insts/standard.cc b/src/arch/riscv/insts/standard.cc
index bcf0741f9..60cf4fc2b 100644
--- a/src/arch/riscv/insts/standard.cc
+++ b/src/arch/riscv/insts/standard.cc
@@ -60,7 +60,11 @@ CSROp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
ss << mnemonic << ' ' << registerName(_destRegIdx[0]) << ", ";
if (_numSrcRegs > 0)
ss << registerName(_srcRegIdx[0]) << ", ";
- ss << MiscRegNames.at(csr);
+ auto name = MiscRegNames.find(csr);
+ if (name != MiscRegNames.end())
+ ss << name->second;
+ else
+ ss << "?? (" << hex << "0x" << csr << ")";
return ss.str();
}