arch-arm: Move the memacc_code before op_wb in fp loads
authorGiacomo Travaglini <giacomo.travaglini@arm.com>
Tue, 11 Jun 2019 09:02:16 +0000 (10:02 +0100)
committerGiacomo Travaglini <giacomo.travaglini@arm.com>
Mon, 17 Jun 2019 08:18:59 +0000 (08:18 +0000)
commit8e3164a90b50a18fb2906a18f353189902fce26e
treeee1620324efea597d9e84277c853dd46a5aaef9b
parentd3accb8ba3a65127ca214f19a85ff6ddf50a3c7a
arch-arm: Move the memacc_code before op_wb in fp loads

This is trying to fix the bug that arises when a memory exception
is generated during a fp flavoured load (A memory load targeting
a SIMD & FP register).
With the previous template a fault was not stopping the register
value to be modified (wrong)

if (fault == NoFault) {
    fault = readMemAtomic(xc, traceData, EA, Mem, memAccessFlags);
    %(memacc_code)s;
}

if (fault == NoFault) {
    %(op_wb)s;
}

The patch introduces a Load64FpExecute template which is moving the
register write (memacc_code) just before the op_wb

Change-Id: I1c89c525dfa7a4ef489abe0872cd7baacdd6ce3c
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19228
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/arm/isa/insts/ldr64.isa
src/arch/arm/isa/templates/mem64.isa