diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2006-08-16 19:01:11 -0400 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2006-08-16 19:01:11 -0400 |
commit | 2f145ac54ab3a9ed2c00e80460a10782da895604 (patch) | |
tree | 206beb49f35504f0e63e6f833bfc38dfa074c1cb /src/mem/physical.hh | |
parent | bb6af8eb8ad870138030c617f27a1f4193341e8e (diff) | |
download | gem5-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.hh | 25 |
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: |