fastmodel: Fix building with Fast Model.

Some build errors had crept in over time. This change fixes them.

Change-Id: I457d32190aa65b0ecd2d6de3f4f5d42d922ae5d5
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/46120
Reviewed-by: Yu-hsin Wang <yuhsingw@google.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Gabe Black
2021-05-27 17:16:13 -07:00
parent b04bf8f729
commit 9c6df1b55b
7 changed files with 36 additions and 22 deletions

View File

@@ -28,6 +28,7 @@
#include "arch/arm/fastmodel/CortexA76/cortex_a76.hh"
#include "arch/arm/fastmodel/iris/cpu.hh"
#include "arch/arm/regs/misc.hh"
#include "base/logging.hh"
#include "dev/arm/base_gic.hh"
#include "sim/core.hh"

View File

@@ -70,7 +70,7 @@ SCGIC::Terminator::sendTowardsCPU(uint8_t len, const uint8_t *data)
SCGIC::SCGIC(const SCFastModelGICParams &params,
sc_core::sc_module_name _name)
: scx_evs_GIC(_name)
: scx_evs_GIC(_name), _params(params)
{
signalInterrupt.bind(signal_interrupt);

View File

@@ -81,6 +81,7 @@ class SCGIC : public scx_evs_GIC
};
std::unique_ptr<Terminator> terminator;
const SCFastModelGICParams &_params;
public:
SCGIC(const SCFastModelGICParams &p) : SCGIC(p, p.name.c_str()) {}

View File

@@ -28,8 +28,8 @@
#include "arch/arm/fastmodel/iris/isa.hh"
#include "arch/arm/regs/misc.hh"
#include "base/logging.hh"
#include "cpu/thread_context.hh"
#include "params/IrisISA.hh"
#include "sim/serialize.hh"
void
@@ -40,3 +40,9 @@ Iris::ISA::serialize(CheckpointOut &cp) const
miscRegs[i] = tc->readMiscRegNoEffect(i);
SERIALIZE_ARRAY(miscRegs, ArmISA::NUM_PHYS_MISCREGS);
}
void
Iris::ISA::copyRegsFrom(ThreadContext *src)
{
panic("copyRegsFrom not implemented");
}

View File

@@ -39,13 +39,15 @@ class ISA : public BaseISA
public:
ISA(const Params &p) : BaseISA(p) {}
void serialize(CheckpointOut &cp) const;
void serialize(CheckpointOut &cp) const override;
void copyRegsFrom(ThreadContext *src) override;
bool
inUserMode() const override
{
CPSR cpsr = tc->readMiscRegNoEffect(MISCREG_CPSR);
return ::inUserMode(cpsr);
ArmISA::CPSR cpsr = tc->readMiscRegNoEffect(ArmISA::MISCREG_CPSR);
return ArmISA::inUserMode(cpsr);
}
};

View File

@@ -670,7 +670,7 @@ ThreadContext::readVecReg(const RegId &reg_id) const
call().resource_read(_instId, result, vecRegIds.at(idx));
size_t data_size = result.data.size() * (sizeof(*result.data.data()));
size_t size = std::min(data_size, reg.size());
memcpy(reg.raw_ptr<void>(), (void *)result.data.data(), size);
memcpy(reg.as<uint8_t>(), (void *)result.data.data(), size);
return reg;
}

View File

@@ -32,6 +32,7 @@
#include <map>
#include <memory>
#include "arch/arm/regs/vec.hh"
#include "cpu/base.hh"
#include "cpu/thread_context.hh"
#include "iris/IrisInstance.h"
@@ -276,21 +277,22 @@ class ThreadContext : public ::ThreadContext
panic("%s not implemented.", __FUNCTION__);
}
const VecRegContainer &readVecReg(const RegId &reg) const override;
VecRegContainer &
const ArmISA::VecRegContainer &readVecReg(const RegId &reg) const override;
ArmISA::VecRegContainer &
getWritableVecReg(const RegId &reg) override
{
panic("%s not implemented.", __FUNCTION__);
}
const VecElem &
const ArmISA::VecElem &
readVecElem(const RegId &reg) const override
{
panic("%s not implemented.", __FUNCTION__);
}
const VecPredRegContainer &readVecPredReg(const RegId &reg) const override;
VecPredRegContainer &
const ArmISA::VecPredRegContainer &
readVecPredReg(const RegId &reg) const override;
ArmISA::VecPredRegContainer &
getWritableVecPredReg(const RegId &reg) override
{
panic("%s not implemented.", __FUNCTION__);
@@ -311,20 +313,20 @@ class ThreadContext : public ::ThreadContext
}
void
setVecReg(const RegId &reg, const VecRegContainer &val) override
setVecReg(const RegId &reg, const ArmISA::VecRegContainer &val) override
{
panic("%s not implemented.", __FUNCTION__);
}
void
setVecElem(const RegId& reg, const VecElem& val) override
setVecElem(const RegId& reg, const ArmISA::VecElem& val) override
{
panic("%s not implemented.", __FUNCTION__);
}
void
setVecPredReg(const RegId &reg,
const VecPredRegContainer &val) override
const ArmISA::VecPredRegContainer &val) override
{
panic("%s not implemented.", __FUNCTION__);
}
@@ -403,38 +405,40 @@ class ThreadContext : public ::ThreadContext
panic("%s not implemented.", __FUNCTION__);
}
const VecRegContainer &readVecRegFlat(RegIndex idx) const override;
VecRegContainer &
const ArmISA::VecRegContainer &readVecRegFlat(RegIndex idx) const override;
ArmISA::VecRegContainer &
getWritableVecRegFlat(RegIndex idx) override
{
panic("%s not implemented.", __FUNCTION__);
}
void
setVecRegFlat(RegIndex idx, const VecRegContainer &val) override
setVecRegFlat(RegIndex idx, const ArmISA::VecRegContainer &val) override
{
panic("%s not implemented.", __FUNCTION__);
}
const VecElem&
const ArmISA::VecElem&
readVecElemFlat(RegIndex idx, const ElemIndex& elemIdx) const override
{
panic("%s not implemented.", __FUNCTION__);
}
void
setVecElemFlat(RegIndex idx, const ElemIndex &elemIdx,
const VecElem &val) override
const ArmISA::VecElem &val) override
{
panic("%s not implemented.", __FUNCTION__);
}
const VecPredRegContainer &readVecPredRegFlat(RegIndex idx) const override;
VecPredRegContainer &
const ArmISA::VecPredRegContainer &
readVecPredRegFlat(RegIndex idx) const override;
ArmISA::VecPredRegContainer &
getWritableVecPredRegFlat(RegIndex idx) override
{
panic("%s not implemented.", __FUNCTION__);
}
void
setVecPredRegFlat(RegIndex idx, const VecPredRegContainer &val) override
setVecPredRegFlat(RegIndex idx,
const ArmISA::VecPredRegContainer &val) override
{
panic("%s not implemented.", __FUNCTION__);
}