blob: 8a3be56edf45f298a4e99f64f959285f7512a023 [file] [log] [blame]
#include "sim/renode/kelvin_renode_register_info.h"
#include "riscv/riscv_debug_info.h"
#include "mpact/sim/generic/type_helpers.h"
namespace kelvin::sim {
KelvinRenodeRegisterInfo *KelvinRenodeRegisterInfo::instance_ = nullptr;
void KelvinRenodeRegisterInfo::InitializeRenodeRegisterInfo() {
using DbgReg = mpact::sim::riscv::DebugRegisterEnum;
renode_register_info_ = {
{*DbgReg::kPc, 32, true, false}, {*DbgReg::kX0, 32, true, true},
{*DbgReg::kX1, 32, true, false}, {*DbgReg::kX2, 32, true, false},
{*DbgReg::kX3, 32, true, false}, {*DbgReg::kX4, 32, true, false},
{*DbgReg::kX5, 32, true, false}, {*DbgReg::kX6, 32, true, false},
{*DbgReg::kX7, 32, true, false}, {*DbgReg::kX8, 32, true, false},
{*DbgReg::kX9, 32, true, false}, {*DbgReg::kX10, 32, true, false},
{*DbgReg::kX11, 32, true, false}, {*DbgReg::kX12, 32, true, false},
{*DbgReg::kX13, 32, true, false}, {*DbgReg::kX14, 32, true, false},
{*DbgReg::kX15, 32, true, false}, {*DbgReg::kX16, 32, true, false},
{*DbgReg::kX17, 32, true, false}, {*DbgReg::kX18, 32, true, false},
{*DbgReg::kX19, 32, true, false}, {*DbgReg::kX20, 32, true, false},
{*DbgReg::kX21, 32, true, false}, {*DbgReg::kX22, 32, true, false},
{*DbgReg::kX23, 32, true, false}, {*DbgReg::kX24, 32, true, false},
{*DbgReg::kX25, 32, true, false}, {*DbgReg::kX26, 32, true, false},
{*DbgReg::kX27, 32, true, false}, {*DbgReg::kX28, 32, true, false},
{*DbgReg::kX29, 32, true, false}, {*DbgReg::kX30, 32, true, false},
{*DbgReg::kX31, 32, true, false},
};
}
KelvinRenodeRegisterInfo::KelvinRenodeRegisterInfo() {
InitializeRenodeRegisterInfo();
}
const KelvinRenodeRegisterInfo::RenodeRegisterInfo &
KelvinRenodeRegisterInfo::GetRenodeRegisterInfo() {
return Instance()->GetRenodeRegisterInfoPrivate();
}
KelvinRenodeRegisterInfo *KelvinRenodeRegisterInfo::Instance() {
if (instance_ == nullptr) {
instance_ = new KelvinRenodeRegisterInfo();
}
return instance_;
}
const KelvinRenodeRegisterInfo::RenodeRegisterInfo &
KelvinRenodeRegisterInfo::GetRenodeRegisterInfoPrivate() {
return renode_register_info_;
}
} // namespace kelvin::sim