diff options
Diffstat (limited to 'src/cpu/base_dyn_inst.hh')
-rw-r--r-- | src/cpu/base_dyn_inst.hh | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/cpu/base_dyn_inst.hh b/src/cpu/base_dyn_inst.hh index aae3af495..c2ef253a7 100644 --- a/src/cpu/base_dyn_inst.hh +++ b/src/cpu/base_dyn_inst.hh @@ -215,7 +215,12 @@ class BaseDynInst : public ExecContext, public RefCounted Addr effAddr; /** The effective physical address. */ - Addr physEffAddr; + Addr physEffAddrLow; + + /** The effective physical address + * of the second request for a split request + */ + Addr physEffAddrHigh; /** The memory request flags (from translation). */ unsigned memReqFlags; @@ -1056,7 +1061,15 @@ BaseDynInst<Impl>::finishTranslation(WholeTranslationState *state) instFlags[IsStrictlyOrdered] = state->isStrictlyOrdered(); if (fault == NoFault) { - physEffAddr = state->getPaddr(); + // save Paddr for a single req + physEffAddrLow = state->getPaddr(); + + // case for the request that has been split + if (state->isSplit) { + physEffAddrLow = state->sreqLow->getPaddr(); + physEffAddrHigh = state->sreqHigh->getPaddr(); + } + memReqFlags = state->getFlags(); if (state->mainReq->isCondSwap()) { |