From 9e3d79694ca9e204bcbfa9c197db17b581dc7a29 Mon Sep 17 00:00:00 2001 From: Ron Dreslinski Date: Fri, 7 Apr 2006 15:54:48 -0400 Subject: Move to a model with a unified request object. Constructor takes a bool to signify that it is either a cpu_request or not a cpu_request. When accedding variables of a cpu_request it asserts that it is a cpu_request. It also asserts that a value being read has been written at some point in time prior (not gaurnteeing it is up to date, but it was at least written before read). There is also a isCpuReq() function to determine if this is a cpu_request. It should be called before accesing a cpu_request only variable. SConscript: Add compilation support for request.cc arch/alpha/tlb.cc: arch/alpha/tlb.hh: cpu/cpu_exec_context.hh: cpu/exec_context.hh: cpu/simple/cpu.cc: cpu/simple/cpu.hh: dev/io_device.cc: mem/page_table.cc: mem/page_table.hh: mem/port.cc: Update for unified request object and accessor functions. mem/request.hh: Remove CpuRequest, make it a unified object. Make variables private with accessor functions. May want to move things from .cc file into header (usually a assert() and either returning a value, or writting two). --HG-- extra : convert_revision : f1e45cc490dadc7a418634539b03c3e72684a6e3 --- mem/page_table.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'mem/page_table.cc') diff --git a/mem/page_table.cc b/mem/page_table.cc index 714ddde35..c4e1ea193 100644 --- a/mem/page_table.cc +++ b/mem/page_table.cc @@ -121,11 +121,14 @@ PageTable::translate(Addr vaddr, Addr &paddr) Fault -PageTable::translate(CpuRequestPtr &req) +PageTable::translate(RequestPtr &req) { - assert(pageAlign(req->vaddr + req->size - 1) == pageAlign(req->vaddr)); - if (!translate(req->vaddr, req->paddr)) { + Addr paddr; + assert(pageAlign(req->getVaddr() + req->getSize() - 1) + == pageAlign(req->getVaddr())); + if (!translate(req->getVaddr(), paddr)) { return genMachineCheckFault(); } - return page_check(req->paddr, req->size); + req->setPaddr(paddr); + return page_check(req->getPaddr(), req->getSize()); } -- cgit v1.2.3