Fault initiateMemRead(Addr addr, unsigned size, Request::Flags flags,
const std::vector<bool>& byte_enable = std::vector<bool>());
+ Fault initiateHtmCmd(Request::Flags flags) override;
+
Fault writeMem(uint8_t *data, unsigned size, Addr addr,
Request::Flags flags, uint64_t *res,
const std::vector<bool>& byte_enable = std::vector<bool>());
bool isFirstMicroop() const { return staticInst->isFirstMicroop(); }
bool isMicroBranch() const { return staticInst->isMicroBranch(); }
+ uint64_t getHtmTransactionUid() const override
+ {
+ panic("Not yet implemented\n");
+ return 0;
+ }
+
+ uint64_t newHtmTransactionUid() const override
+ {
+ panic("Not yet implemented\n");
+ return 0;
+ }
+
+ bool inHtmTransactionalState() const override
+ {
+ panic("Not yet implemented\n");
+ return false;
+ }
+
+ uint64_t getHtmTransactionalDepth() const override
+ {
+ panic("Not yet implemented\n");
+ return 0;
+ }
+
/** Temporarily sets this instruction as a serialize before instruction. */
void setSerializeBefore() { status.set(SerializeBefore); }
byte_enable);
}
+template<class Impl>
+Fault
+BaseDynInst<Impl>::initiateHtmCmd(Request::Flags flags)
+{
+ panic("Not yet implemented\n");
+ return NoFault;
+}
+
template<class Impl>
Fault
BaseDynInst<Impl>::writeMem(uint8_t *data, unsigned size, Addr addr,
thread->setMemAccPredicate(val);
}
+ uint64_t
+ getHtmTransactionUid() const override
+ {
+ panic("not yet supported!");
+ return 0;
+ };
+
+ uint64_t
+ newHtmTransactionUid() const override
+ {
+ panic("not yet supported!");
+ return 0;
+ };
+
+ Fault
+ initiateHtmCmd(Request::Flags flags) override
+ {
+ panic("not yet supported!");
+ return NoFault;
+ }
+
+ bool
+ inHtmTransactionalState() const override
+ {
+ panic("not yet supported!");
+ return false;
+ }
+
+ uint64_t
+ getHtmTransactionalDepth() const override
+ {
+ panic("not yet supported!");
+ return 0;
+ }
+
TheISA::PCState pcState() const override { return thread->pcState(); }
void
pcState(const TheISA::PCState &val) override
panic("ExecContext::initiateMemRead() should be overridden\n");
}
+ /**
+ * Initiate an HTM command,
+ * e.g. tell Ruby we're starting/stopping a transaction
+ */
+ virtual Fault initiateHtmCmd(Request::Flags flags) = 0;
/**
* For atomic-mode contexts, perform an atomic memory write operation.
* For timing-mode contexts, initiate a timing memory write operation.
virtual bool readMemAccPredicate() const = 0;
virtual void setMemAccPredicate(bool val) = 0;
+ // hardware transactional memory
+ virtual uint64_t newHtmTransactionUid() const = 0;
+ virtual uint64_t getHtmTransactionUid() const = 0;
+ virtual bool inHtmTransactionalState() const = 0;
+ virtual uint64_t getHtmTransactionalDepth() const = 0;
+
/** @} */
/**
size, addr, flags, nullptr, nullptr, byte_enable);
}
+ Fault
+ initiateHtmCmd(Request::Flags flags) override
+ {
+ panic("ExecContext::initiateHtmCmd() not implemented on MinorCPU\n");
+ return NoFault;
+ }
+
Fault
writeMem(uint8_t *data, unsigned int size, Addr addr,
Request::Flags flags, uint64_t *res,
thread.setMemAccPredicate(val);
}
+ // hardware transactional memory
+ uint64_t
+ getHtmTransactionUid() const override
+ {
+ panic("ExecContext::getHtmTransactionUid() not"
+ "implemented on MinorCPU\n");
+ return 0;
+ }
+
+ uint64_t
+ newHtmTransactionUid() const override
+ {
+ panic("ExecContext::newHtmTransactionUid() not"
+ "implemented on MinorCPU\n");
+ return 0;
+ }
+
+ bool
+ inHtmTransactionalState() const override
+ {
+ // ExecContext::inHtmTransactionalState() not
+ // implemented on MinorCPU
+ return false;
+ }
+
+ uint64_t
+ getHtmTransactionalDepth() const override
+ {
+ panic("ExecContext::getHtmTransactionalDepth() not"
+ "implemented on MinorCPU\n");
+ return 0;
+ }
+
TheISA::PCState
pcState() const override
{
return cpu->initiateMemAMO(addr, size, flags, std::move(amo_op));
}
+ Fault initiateHtmCmd(Request::Flags flags) override
+ {
+ panic("Not yet supported\n");
+ return NoFault;
+ }
+
/**
* Sets the number of consecutive store conditional failures.
*/
thread->setMemAccPredicate(val);
}
+ uint64_t
+ getHtmTransactionUid() const override
+ {
+ panic("Not yet supported\n");
+ return 0;
+ }
+
+ uint64_t
+ newHtmTransactionUid() const override
+ {
+ panic("Not yet supported\n");
+ return 0;
+ }
+
+ bool
+ inHtmTransactionalState() const override
+ {
+ panic("Not yet supported\n");
+ return false;
+ }
+
+ uint64_t
+ getHtmTransactionalDepth() const override
+ {
+ panic("Not yet supported\n");
+ return 0;
+ }
+
/**
* Invalidate a page in the DTLB <i>and</i> ITLB.
*/