From: Gabe Black Date: Wed, 11 Apr 2007 14:16:54 +0000 (+0000) Subject: Use a computed mask to mask out the fetch address and not a hard coded one. X-Git-Tag: m5_2.0_beta4~400 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c382bdf93d036aa97efda7a764a66f1bd36f7466;p=gem5.git Use a computed mask to mask out the fetch address and not a hard coded one. --HG-- extra : convert_revision : c22907bed4b83f0dff51d2283dafe4f76fa9e94a --- diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc index c9d4f4c8f..3d07961f1 100644 --- a/src/cpu/simple/base.cc +++ b/src/cpu/simple/base.cc @@ -335,7 +335,11 @@ BaseSimpleCPU::setupFetchRequest(Request *req) thread->readNextPC()); #endif - req->setVirt(0, thread->readPC() & ~3, sizeof(MachInst), 0, + // This will generate a mask which aligns the pc on MachInst size + // boundaries. It won't work for non-power-of-two sized MachInsts, but + // it will work better than a hard coded mask. + const Addr PCMask = ~(sizeof(MachInst) - 1); + req->setVirt(0, thread->readPC() & PCMask, sizeof(MachInst), 0, thread->readPC()); Fault fault = thread->translateInstReq(req);