imported patch pagewalker.patch
--HG-- extra : convert_revision : 8ddde313f2249e1346fa51372a156f0d2ddc3b8f
This commit is contained in:
parent
ce26c3ccec
commit
ab598eadbf
2 changed files with 6 additions and 2 deletions
|
@ -101,6 +101,8 @@ class BaseCPU(SimObject):
|
||||||
tracer = Param.InstTracer(default_tracer, "Instruction tracer")
|
tracer = Param.InstTracer(default_tracer, "Instruction tracer")
|
||||||
|
|
||||||
_mem_ports = []
|
_mem_ports = []
|
||||||
|
if build_env['TARGET_ISA'] == 'x86' and build_env['FULL_SYSTEM']:
|
||||||
|
_mem_ports = ["itb.walker.port", "dtb.walker.port"]
|
||||||
|
|
||||||
def connectMemPorts(self, bus):
|
def connectMemPorts(self, bus):
|
||||||
for p in self._mem_ports:
|
for p in self._mem_ports:
|
||||||
|
@ -108,12 +110,14 @@ class BaseCPU(SimObject):
|
||||||
exec('self.%s = bus.port' % p)
|
exec('self.%s = bus.port' % p)
|
||||||
|
|
||||||
def addPrivateSplitL1Caches(self, ic, dc):
|
def addPrivateSplitL1Caches(self, ic, dc):
|
||||||
assert(len(self._mem_ports) == 2 or len(self._mem_ports) == 3)
|
assert(len(self._mem_ports) < 6)
|
||||||
self.icache = ic
|
self.icache = ic
|
||||||
self.dcache = dc
|
self.dcache = dc
|
||||||
self.icache_port = ic.cpu_side
|
self.icache_port = ic.cpu_side
|
||||||
self.dcache_port = dc.cpu_side
|
self.dcache_port = dc.cpu_side
|
||||||
self._mem_ports = ['icache.mem_side', 'dcache.mem_side']
|
self._mem_ports = ['icache.mem_side', 'dcache.mem_side']
|
||||||
|
if build_env['TARGET_ISA'] == 'x86' and build_env['FULL_SYSTEM']:
|
||||||
|
self._mem_ports += ["itb.walker_port", "dtb.walker_port"]
|
||||||
|
|
||||||
def addTwoLevelCacheHierarchy(self, ic, dc, l2c):
|
def addTwoLevelCacheHierarchy(self, ic, dc, l2c):
|
||||||
self.addPrivateSplitL1Caches(ic, dc)
|
self.addPrivateSplitL1Caches(ic, dc)
|
||||||
|
|
|
@ -466,9 +466,9 @@ BaseSimpleCPU::advancePC(Fault fault)
|
||||||
if (fault != NoFault) {
|
if (fault != NoFault) {
|
||||||
curMacroStaticInst = StaticInst::nullStaticInstPtr;
|
curMacroStaticInst = StaticInst::nullStaticInstPtr;
|
||||||
predecoder.reset();
|
predecoder.reset();
|
||||||
fault->invoke(tc);
|
|
||||||
thread->setMicroPC(0);
|
thread->setMicroPC(0);
|
||||||
thread->setNextMicroPC(1);
|
thread->setNextMicroPC(1);
|
||||||
|
fault->invoke(tc);
|
||||||
} else {
|
} else {
|
||||||
//If we're at the last micro op for this instruction
|
//If we're at the last micro op for this instruction
|
||||||
if (curStaticInst && curStaticInst->isLastMicroop()) {
|
if (curStaticInst && curStaticInst->isLastMicroop()) {
|
||||||
|
|
Loading…
Reference in a new issue