riscv: remove NonSpeculative flag from fence inst
Fence instruction origially had two flags NonSpeculative and
MemBarrier. In O3 model, MemBarrier instructions are inserted
into the instruction queue by the InstructionQueue::insertBarrier (at
src/cpu/o3/iew_impl.hh:1083). Barrier instructions are implicitly
assumed to be non-speculative.
Adding NonSpeculative flag to fence instruction makes it inserted into
the instruction queue twice (at src/cpu/o3/iew_impl.hh:1083 and :1111).
This can lead to a deadlock if both pointers to the instruction are not
cleared from the queue when the instruction retires.
This patch removes NonSpeculative flag from the fence inst.
Reviewed-by: Jason Lowe-Power <firstname.lastname@example.org>
Reviewed-by: Alec Roelke <email@example.com>
Maintainer: Alec Roelke <firstname.lastname@example.org>
1 file changed