summaryrefslogtreecommitdiff
path: root/src/mem/physical.hh
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2006-08-16 19:01:11 -0400
committerAli Saidi <saidi@eecs.umich.edu>2006-08-16 19:01:11 -0400
commit2f145ac54ab3a9ed2c00e80460a10782da895604 (patch)
tree206beb49f35504f0e63e6f833bfc38dfa074c1cb /src/mem/physical.hh
parentbb6af8eb8ad870138030c617f27a1f4193341e8e (diff)
downloadgem5-2f145ac54ab3a9ed2c00e80460a10782da895604.tar.xz
Fix Physical Memory to allow memory sizes bigger than 128MB.
Kinda port DRAM to new memory system. The code is *really* ugly (not my fault) and right now something about the stats it uses causes a simulator segfault. src/SConscript: Add dram.cc to sconscript src/mem/physical.cc: src/mem/physical.hh: Add params struct to physical memory, use params, make latency function be virtual src/python/m5/objects/PhysicalMemory.py: Add DRAMMemory python class --HG-- extra : convert_revision : 5bd9f2e071c62da89e8efa46fa016f342c01535d
Diffstat (limited to 'src/mem/physical.hh')
-rw-r--r--src/mem/physical.hh25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/mem/physical.hh b/src/mem/physical.hh
index b549c1f8b..c0a5523ba 100644
--- a/src/mem/physical.hh
+++ b/src/mem/physical.hh
@@ -80,19 +80,28 @@ class PhysicalMemory : public MemObject
const PhysicalMemory &operator=(const PhysicalMemory &specmem);
protected:
- Addr base_addr;
- Addr pmem_size;
- uint8_t *pmem_addr;
+ uint8_t *pmemAddr;
MemoryPort *port;
- int page_ptr;
+ int pagePtr;
Tick lat;
public:
Addr new_page();
- uint64_t size() { return pmem_size; }
+ uint64_t size() { return params()->addrRange.size(); }
+
+ struct Params
+ {
+ std::string name;
+ Range<Addr> addrRange;
+ Tick latency;
+ };
+
+ protected:
+ Params *_params;
public:
- PhysicalMemory(const std::string &n, Tick latency);
+ const Params *params() const { return _params; }
+ PhysicalMemory(Params *p);
virtual ~PhysicalMemory();
public:
@@ -102,9 +111,9 @@ class PhysicalMemory : public MemObject
void virtual init();
unsigned int drain(Event *de);
- private:
+ protected:
Tick doFunctionalAccess(Packet *pkt);
-
+ virtual Tick calculateLatency(Packet *pkt);
void recvStatusChange(Port::Status status);
public: