summaryrefslogtreecommitdiff
path: root/src/cpu/kvm
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/kvm')
-rw-r--r--src/cpu/kvm/base.hh35
1 files changed, 31 insertions, 4 deletions
diff --git a/src/cpu/kvm/base.hh b/src/cpu/kvm/base.hh
index f46455af6..4546b1071 100644
--- a/src/cpu/kvm/base.hh
+++ b/src/cpu/kvm/base.hh
@@ -93,8 +93,8 @@ class BaseKvmCPU : public BaseCPU
void verifyMemoryMode() const;
- CpuPort &getDataPort() { return dataPort; }
- CpuPort &getInstPort() { return instPort; }
+ MasterPort &getDataPort() { return dataPort; }
+ MasterPort &getInstPort() { return instPort; }
void wakeup();
void activateContext(ThreadID thread_num, Cycles delay);
@@ -403,11 +403,38 @@ class BaseKvmCPU : public BaseCPU
}
/** @} */
+
+ /**
+ * KVM memory port. Uses the default MasterPort behavior, but
+ * panics on timing accesses.
+ */
+ class KVMCpuPort : public MasterPort
+ {
+
+ public:
+ KVMCpuPort(const std::string &_name, BaseKvmCPU *_cpu)
+ : MasterPort(_name, _cpu)
+ { }
+
+ protected:
+ bool recvTimingResp(PacketPtr pkt)
+ {
+ panic("The KVM CPU doesn't expect recvTimingResp!\n");
+ return true;
+ }
+
+ void recvRetry()
+ {
+ panic("The KVM CPU doesn't expect recvRetry!\n");
+ }
+
+ };
+
/** Port for data requests */
- CpuPort dataPort;
+ KVMCpuPort dataPort;
/** Unused dummy port for the instruction interface */
- CpuPort instPort;
+ KVMCpuPort instPort;
/** Pre-allocated MMIO memory request */
Request mmio_req;