summaryrefslogtreecommitdiff
path: root/src/python/m5/objects/BaseCPU.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/python/m5/objects/BaseCPU.py')
-rw-r--r--src/python/m5/objects/BaseCPU.py28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/python/m5/objects/BaseCPU.py b/src/python/m5/objects/BaseCPU.py
index 5bf98be9c..4144397a6 100644
--- a/src/python/m5/objects/BaseCPU.py
+++ b/src/python/m5/objects/BaseCPU.py
@@ -1,5 +1,7 @@
from m5 import build_env
from m5.config import *
+from AlphaTLB import AlphaDTB, AlphaITB
+from Bus import Bus
class BaseCPU(SimObject):
type = 'BaseCPU'
@@ -8,8 +10,8 @@ class BaseCPU(SimObject):
system = Param.System(Parent.any, "system object")
if build_env['FULL_SYSTEM']:
- dtb = Param.AlphaDTB("Data TLB")
- itb = Param.AlphaITB("Instruction TLB")
+ dtb = Param.AlphaDTB(AlphaDTB(), "Data TLB")
+ itb = Param.AlphaITB(AlphaITB(), "Instruction TLB")
cpu_id = Param.Int(-1, "CPU identifier")
else:
workload = VectorParam.Process("processes to run")
@@ -27,3 +29,25 @@ class BaseCPU(SimObject):
"defer registration with system (for sampling)")
clock = Param.Clock(Parent.clock, "clock speed")
+
+ _mem_ports = []
+
+ def connectMemPorts(self, bus):
+ for p in self._mem_ports:
+ exec('self.%s = bus.port' % p)
+
+ def addPrivateSplitL1Caches(self, ic, dc):
+ assert(len(self._mem_ports) == 2)
+ self.icache = ic
+ self.dcache = dc
+ self.icache_port = ic.cpu_side
+ self.dcache_port = dc.cpu_side
+ self._mem_ports = ['icache.mem_side', 'dcache.mem_side']
+
+ def addTwoLevelCacheHierarchy(self, ic, dc, l2c):
+ self.addPrivateSplitL1Caches(ic, dc)
+ self.toL2Bus = Bus()
+ self.connectMemPorts(self.toL2Bus)
+ self.l2cache = l2c
+ self.l2cache.cpu_side = toL2Bus.port
+ self._mem_ports = ['l2cache.mem_side']