diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2007-03-09 18:32:13 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2007-03-09 18:32:13 -0500 |
commit | df1ea2cf05e41c0be33eeb9f91c3adfb985005c2 (patch) | |
tree | 0c9c9001bcedaa8ae986bbc638a92d1465cc89a9 /src/cpu/base.cc | |
parent | f1e3e1c3053866f63f3826126260f43bf0c7d0c7 (diff) | |
parent | dc4d47bad4f95501ebd144dc4aa53aa17563abcc (diff) | |
download | gem5-df1ea2cf05e41c0be33eeb9f91c3adfb985005c2.tar.xz |
Merge zizzer.eecs.umich.edu:/bk/newmem
into zower.eecs.umich.edu:/home/gblack/m5/newmem-statetrace
--HG--
extra : convert_revision : 82a956ffc1bedb2c0d05c4ea3469f843f559a475
Diffstat (limited to 'src/cpu/base.cc')
-rw-r--r-- | src/cpu/base.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/cpu/base.cc b/src/cpu/base.cc index 104b3b6bb..3e0be6ad8 100644 --- a/src/cpu/base.cc +++ b/src/cpu/base.cc @@ -319,7 +319,7 @@ BaseCPU::switchOut() } void -BaseCPU::takeOverFrom(BaseCPU *oldCPU) +BaseCPU::takeOverFrom(BaseCPU *oldCPU, Port *ic, Port *dc) { assert(threadContexts.size() == oldCPU->threadContexts.size()); @@ -352,6 +352,26 @@ BaseCPU::takeOverFrom(BaseCPU *oldCPU) // if (profileEvent) // profileEvent->schedule(curTick); #endif + + // Connect new CPU to old CPU's memory only if new CPU isn't + // connected to anything. Also connect old CPU's memory to new + // CPU. + Port *peer; + if (ic->getPeer() == NULL) { + peer = oldCPU->getPort("icache_port")->getPeer(); + ic->setPeer(peer); + } else { + peer = ic->getPeer(); + } + peer->setPeer(ic); + + if (dc->getPeer() == NULL) { + peer = oldCPU->getPort("dcache_port")->getPeer(); + dc->setPeer(peer); + } else { + peer = dc->getPeer(); + } + peer->setPeer(dc); } |