changeset bdef71accd68 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=bdef71accd68
description:
CPU: Get rid of translate... functions from various interface classes.
diffstat:
19 files changed, 74 insertions(+), 420 deletions(-)
src/arch/x86/isa/microops/ldstop.isa | 13 ---
src/cpu/base_dyn_inst.hh | 56 ---------------
src/cpu/checker/cpu.cc | 55 ---------------
src/cpu/checker/cpu.hh | 4 -
src/cpu/checker/cpu_impl.hh | 2
src/cpu/inorder/cpu.hh | 18 ----
src/cpu/inorder/resources/tlb_unit.cc | 6 +
src/cpu/o3/cpu.hh | 18 ----
src/cpu/o3/fetch_impl.hh | 2
src/cpu/ozone/cpu.hh | 47 +-----------
src/cpu/ozone/front_end_impl.hh | 2
src/cpu/ozone/inorder_back_end.hh | 4 -
src/cpu/simple/atomic.cc | 117 --------------------------------
src/cpu/simple/atomic.hh | 5 -
src/cpu/simple/base.cc | 2
src/cpu/simple/timing.cc | 120 ++++++++++++++-------------------
src/cpu/simple/timing.hh | 6 -
src/cpu/simple_thread.hh | 15 ----
src/mem/request.hh | 2
diffs (truncated from 847 to 300 lines):
diff -r 02e5bc7ca9ba -r bdef71accd68 src/arch/x86/isa/microops/ldstop.isa
--- a/src/arch/x86/isa/microops/ldstop.isa Mon Feb 23 12:22:19 2009 -0800
+++ b/src/arch/x86/isa/microops/ldstop.isa Wed Feb 25 10:15:34 2009 -0800
@@ -454,7 +454,7 @@
Mem = Data;
Base = merge(Base, EA - SegBase, addressSize);
''');
-
+ defineMicroStoreOp('Cda', 'Mem = 0;', "Request::NO_ACCESS")
iop = InstObjParams("lea", "Lea", 'X86ISA::LdStOp',
{"code": "Data = merge(Data, EA, dataSize);",
@@ -493,17 +493,6 @@
microopClasses["tia"] = TiaOp
- iop = InstObjParams("cda", "Cda", 'X86ISA::LdStOp',
- {"code": '''
- Addr paddr;
- fault = xc->translateDataWriteAddr(EA, paddr,
- dataSize, (1 << segment));
- ''',
- "ea_code": calculateEA})
- header_output += MicroLeaDeclare.subst(iop)
- decoder_output += MicroLdStOpConstructor.subst(iop)
- exec_output += MicroLeaExecute.subst(iop)
-
class CdaOp(LdStOp):
def __init__(self, segment, addr, disp = 0,
dataSize="env.dataSize", addressSize="env.addressSize"):
diff -r 02e5bc7ca9ba -r bdef71accd68 src/cpu/base_dyn_inst.hh
--- a/src/cpu/base_dyn_inst.hh Mon Feb 23 12:22:19 2009 -0800
+++ b/src/cpu/base_dyn_inst.hh Wed Feb 25 10:15:34 2009 -0800
@@ -115,9 +115,6 @@
template <class T>
Fault read(Addr addr, T &data, unsigned flags);
- Fault translateDataReadAddr(Addr vaddr, Addr &paddr,
- int size, unsigned flags);
-
/**
* Does a write to a given address.
* @param data The data to be written.
@@ -130,9 +127,6 @@
Fault write(T data, Addr addr, unsigned flags,
uint64_t *res);
- Fault translateDataWriteAddr(Addr vaddr, Addr &paddr,
- int size, unsigned flags);
-
void prefetch(Addr addr, unsigned flags);
void writeHint(Addr addr, int size, unsigned flags);
Fault copySrcTranslate(Addr src);
@@ -857,29 +851,6 @@
};
template<class Impl>
-Fault
-BaseDynInst<Impl>::translateDataReadAddr(Addr vaddr, Addr &paddr,
- int size, unsigned flags)
-{
- if (traceData) {
- traceData->setAddr(vaddr);
- }
-
- reqMade = true;
- Request *req = new Request();
- req->setVirt(asid, vaddr, size, flags, PC);
- req->setThreadContext(thread->contextId(), threadNumber);
-
- fault = cpu->translateDataReadReq(req, thread);
-
- if (fault == NoFault)
- paddr = req->getPaddr();
-
- delete req;
- return fault;
-}
-
-template<class Impl>
template<class T>
inline Fault
BaseDynInst<Impl>::read(Addr addr, T &data, unsigned flags)
@@ -889,7 +860,7 @@
req->setVirt(asid, addr, sizeof(T), flags, this->PC);
req->setThreadContext(thread->contextId(), threadNumber);
- fault = cpu->translateDataReadReq(req, thread);
+ fault = cpu->dtb->translate(req, thread->getTC(), false);
if (req->isUncacheable())
isUncacheable = true;
@@ -931,29 +902,6 @@
}
template<class Impl>
-Fault
-BaseDynInst<Impl>::translateDataWriteAddr(Addr vaddr, Addr &paddr,
- int size, unsigned flags)
-{
- if (traceData) {
- traceData->setAddr(vaddr);
- }
-
- reqMade = true;
- Request *req = new Request();
- req->setVirt(asid, vaddr, size, flags, PC);
- req->setThreadContext(thread->contextId(), threadNumber);
-
- fault = cpu->translateDataWriteReq(req, thread);
-
- if (fault == NoFault)
- paddr = req->getPaddr();
-
- delete req;
- return fault;
-}
-
-template<class Impl>
template<class T>
inline Fault
BaseDynInst<Impl>::write(T data, Addr addr, unsigned flags, uint64_t *res)
@@ -968,7 +916,7 @@
req->setVirt(asid, addr, sizeof(T), flags, this->PC);
req->setThreadContext(thread->contextId(), threadNumber);
- fault = cpu->translateDataWriteReq(req, thread);
+ fault = cpu->dtb->translate(req, thread->getTC(), true);
if (req->isUncacheable())
isUncacheable = true;
diff -r 02e5bc7ca9ba -r bdef71accd68 src/cpu/checker/cpu.cc
--- a/src/cpu/checker/cpu.cc Mon Feb 23 12:22:19 2009 -0800
+++ b/src/cpu/checker/cpu.cc Wed Feb 25 10:15:34 2009 -0800
@@ -159,7 +159,7 @@
memReq->setVirt(0, addr, sizeof(T), flags, thread->readPC());
// translate to physical address
- translateDataReadReq(memReq);
+ dtb->translate(memReq, tc, false);
PacketPtr pkt = new Packet(memReq, Packet::ReadReq, Packet::Broadcast);
@@ -229,7 +229,7 @@
memReq->setVirt(0, addr, sizeof(T), flags, thread->readPC());
// translate to physical address
- thread->translateDataWriteReq(memReq);
+ dtb->translate(memReq, tc, true);
// Can compare the write data and result only if it's cacheable,
// not a store conditional, or is a store conditional that
@@ -325,57 +325,6 @@
#endif // FULL_SYSTEM
bool
-CheckerCPU::translateInstReq(Request *req)
-{
-#if FULL_SYSTEM
- return (thread->translateInstReq(req) == NoFault);
-#else
- thread->translateInstReq(req);
- return true;
-#endif
-}
-
-void
-CheckerCPU::translateDataReadReq(Request *req)
-{
- thread->translateDataReadReq(req);
-
- if (req->getVaddr() != unverifiedReq->getVaddr()) {
- warn("%lli: Request virtual addresses do not match! Inst: %#x, "
- "checker: %#x",
- curTick, unverifiedReq->getVaddr(), req->getVaddr());
- handleError();
- }
- req->setPaddr(unverifiedReq->getPaddr());
-
- if (checkFlags(req)) {
- warn("%lli: Request flags do not match! Inst: %#x, checker: %#x",
- curTick, unverifiedReq->getFlags(), req->getFlags());
- handleError();
- }
-}
-
-void
-CheckerCPU::translateDataWriteReq(Request *req)
-{
- thread->translateDataWriteReq(req);
-
- if (req->getVaddr() != unverifiedReq->getVaddr()) {
- warn("%lli: Request virtual addresses do not match! Inst: %#x, "
- "checker: %#x",
- curTick, unverifiedReq->getVaddr(), req->getVaddr());
- handleError();
- }
- req->setPaddr(unverifiedReq->getPaddr());
-
- if (checkFlags(req)) {
- warn("%lli: Request flags do not match! Inst: %#x, checker: %#x",
- curTick, unverifiedReq->getFlags(), req->getFlags());
- handleError();
- }
-}
-
-bool
CheckerCPU::checkFlags(Request *req)
{
// Remove any dynamic flags that don't have to do with the request itself.
diff -r 02e5bc7ca9ba -r bdef71accd68 src/cpu/checker/cpu.hh
--- a/src/cpu/checker/cpu.hh Mon Feb 23 12:22:19 2009 -0800
+++ b/src/cpu/checker/cpu.hh Wed Feb 25 10:15:34 2009 -0800
@@ -331,10 +331,6 @@
this->dtb->demapPage(vaddr, asn);
}
- bool translateInstReq(Request *req);
- void translateDataWriteReq(Request *req);
- void translateDataReadReq(Request *req);
-
#if FULL_SYSTEM
Fault hwrei() { return thread->hwrei(); }
void ev5_trap(Fault fault) { fault->invoke(tc); }
diff -r 02e5bc7ca9ba -r bdef71accd68 src/cpu/checker/cpu_impl.hh
--- a/src/cpu/checker/cpu_impl.hh Mon Feb 23 12:22:19 2009 -0800
+++ b/src/cpu/checker/cpu_impl.hh Wed Feb 25 10:15:34 2009 -0800
@@ -155,7 +155,7 @@
fetch_PC, thread->contextId(),
inst->threadNumber);
- bool succeeded = translateInstReq(memReq);
+ bool succeeded = itb->translate(memReq, thread);
if (!succeeded) {
if (inst->getFault() == NoFault) {
diff -r 02e5bc7ca9ba -r bdef71accd68 src/cpu/inorder/cpu.hh
--- a/src/cpu/inorder/cpu.hh Mon Feb 23 12:22:19 2009 -0800
+++ b/src/cpu/inorder/cpu.hh Wed Feb 25 10:15:34 2009 -0800
@@ -498,24 +498,6 @@
/** Debug function to print all instructions on the list. */
void dumpInsts();
- /** Translates instruction requestion in syscall emulation mode. */
- Fault translateInstReq(RequestPtr &req, Thread *thread)
- {
- return thread->getProcessPtr()->pTable->translate(req);
- }
-
- /** Translates data read request in syscall emulation mode. */
- Fault translateDataReadReq(RequestPtr &req, Thread *thread)
- {
- return thread->getProcessPtr()->pTable->translate(req);
- }
-
- /** Translates data write request in syscall emulation mode. */
- Fault translateDataWriteReq(RequestPtr &req, Thread *thread)
- {
- return thread->getProcessPtr()->pTable->translate(req);
- }
-
/** Forwards an instruction read to the appropriate data
* resource (indexes into Resource Pool thru "dataPortIdx")
*/
diff -r 02e5bc7ca9ba -r bdef71accd68 src/cpu/inorder/resources/tlb_unit.cc
--- a/src/cpu/inorder/resources/tlb_unit.cc Mon Feb 23 12:22:19 2009 -0800
+++ b/src/cpu/inorder/resources/tlb_unit.cc Wed Feb 25 10:15:34 2009 -0800
@@ -98,7 +98,8 @@
case FetchLookup:
{
tlb_req->fault =
- this->cpu->translateInstReq(tlb_req->memReq, cpu->thread[tid]);
+ this->cpu->itb->translate(tlb_req->memReq,
+ cpu->thread[tid]->getTC());
if (tlb_req->fault != NoFault) {
DPRINTF(Resource, "[tid:%i]: %s encountered while translating "
@@ -128,7 +129,8 @@
tid, seq_num, tlb_req->memReq->getVaddr());
tlb_req->fault =
- this->cpu->translateInstReq(tlb_req->memReq, cpu->thread[tid]);
+ this->cpu->itb->translate(tlb_req->memReq,
+ cpu->thread[tid]->getTC());
if (tlb_req->fault != NoFault) {
DPRINTF(Resource, "[tid:%i]: %s encountered while translating "
diff -r 02e5bc7ca9ba -r bdef71accd68 src/cpu/o3/cpu.hh
--- a/src/cpu/o3/cpu.hh Mon Feb 23 12:22:19 2009 -0800
+++ b/src/cpu/o3/cpu.hh Wed Feb 25 10:15:34 2009 -0800
@@ -279,24 +279,6 @@
this->dtb->demapPage(vaddr, asn);
}
- /** Translates instruction requestion. */
- Fault translateInstReq(RequestPtr &req, Thread *thread)
- {
- return this->itb->translate(req, thread->getTC());
- }
-
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev