cpu: o3: lsq: Fix TSO implementation This patch fixes violation of TSO in the O3CPU, as all loads must be ordered with all other loads. In the LQ, if a snoop is observed, all subsequent loads need to be squashed if the system is TSO.
cpu: o3: lsq: Fix TSO implementation
This patch fixes violation of TSO in the O3CPU, as all loads must be
ordered with all other loads. In the LQ, if a snoop is observed, all
subsequent loads need to be squashed if the system is TSO.

Prior to this patch, the following case could be violated:

 P0         | P1          ;
 MOV [x],mail=/usr/spool/mail/nilay | MOV EAX,[y] ;
 MOV [y],mail=/usr/spool/mail/nilay | MOV EBX,[x] ;

exists (1:EAX=1 /\ 1:EBX=0) [is a violation]

The problem was found using litmus [http://diy.inria.fr].

Committed by: Nilay Vaish <nilay@cs.wisc.edu

SanchayanMaity/gem5,powerjg/gem5-ci-test,kaiyuanl/gem5,austinharris/gem5-riscv,gem5/gem5,rallylee/gem5,cancro7/gem5,gem5/gem5,markoshorro/gem5,Weil0ng/gem5,cancro7/gem5,TUD-OS/gem5-dtu,kaiyuanl/gem5,qizenguf/MLC-STT,gedare/gem5,austinharris/gem5-riscv,rallylee/gem5,austinharris/gem5-riscv,austinharris/gem5-riscv,gedare/gem5,KuroeKurose/gem5,briancoutinho0905/2dsampling,HwisooSo/gemV-update,aclifton/cpeg853-gem5,aclifton/cpeg853-gem5,kaiyuanl/gem5,briancoutinho0905/2dsampling,gedare/gem5,briancoutinho0905/2dsampling,powerjg/gem5-ci-test,sobercoder/gem5,markoshorro/gem5,gedare/gem5,qizenguf/MLC-STT,SanchayanMaity/gem5,sobercoder/gem5,KuroeKurose/gem5,Weil0ng/gem5,TUD-OS/gem5-dtu,austinharris/gem5-riscv,Weil0ng/gem5,zlfben/gem5,cancro7/gem5,kaiyuanl/gem5,KuroeKurose/gem5,rjschof/gem5,Weil0ng/gem5,rallylee/gem5,TUD-OS/gem5-dtu,markoshorro/gem5,aclifton/cpeg853-gem5,gem5/gem5,cancro7/gem5,kaiyuanl/gem5,gem5/gem5,briancoutinho0905/2dsampling,sobercoder/gem5,rallylee/gem5,HwisooSo/gemV-update,gem5/gem5,zlfben/gem5,qizenguf/MLC-STT,SanchayanMaity/gem5,zlfben/gem5,rjschof/gem5,austinharris/gem5-riscv,TUD-OS/gem5-dtu,HwisooSo/gemV-update,sobercoder/gem5,zlfben/gem5,kaiyuanl/gem5,cancro7/gem5,KuroeKurose/gem5,zlfben/gem5,gedare/gem5,austinharris/gem5-riscv,rjschof/gem5,SanchayanMaity/gem5,TUD-OS/gem5-dtu,KuroeKurose/gem5,SanchayanMaity/gem5,aclifton/cpeg853-gem5,TUD-OS/gem5-dtu,zlfben/gem5,rallylee/gem5,qizenguf/MLC-STT,qizenguf/MLC-STT,HwisooSo/gemV-update,qizenguf/MLC-STT,cancro7/gem5,briancoutinho0905/2dsampling,briancoutinho0905/2dsampling,sobercoder/gem5,rallylee/gem5,aclifton/cpeg853-gem5,HwisooSo/gemV-update,gedare/gem5,markoshorro/gem5,rjschof/gem5,HwisooSo/gemV-update,gedare/gem5,SanchayanMaity/gem5,KuroeKurose/gem5,gem5/gem5,markoshorro/gem5,KuroeKurose/gem5,Weil0ng/gem5,briancoutinho0905/2dsampling,sobercoder/gem5,SanchayanMaity/gem5,Weil0ng/gem5,kaiyuanl/gem5,powerjg/gem5-ci-test,sobercoder/gem5,powerjg/gem5-ci-test,cancro7/gem5,Weil0ng/gem5,gem5/gem5,powerjg/gem5-ci-test,powerjg/gem5-ci-test,aclifton/cpeg853-gem5,rjschof/gem5,aclifton/cpeg853-gem5,TUD-OS/gem5-dtu,qizenguf/MLC-STT,markoshorro/gem5,rjschof/gem5,powerjg/gem5-ci-test,HwisooSo/gemV-update,rjschof/gem5,zlfben/gem5,rallylee/gem5,markoshorro/gem5