Review Board 2.0.15


ARM: Adding a bogus fault that does nothing. This fault can used to flush the pipe,

Review Request #230 - Created Aug. 23, 2010 and submitted

Information
Ali Saidi
gem5
Reviewers
Default
ARM: Adding a bogus fault that does nothing. This fault can used to flush the pipe,
not including the faulting instruction.

The particular case I needed this was for a self-modifying code. It needed to
drain the store queue and force the following instruction to refetch from
icache. DCCMVAC cp15 mcr instruction is modified to raise this fault.

   
Posted (Aug. 23, 2010, 3:56 a.m.)
How about using the IsSerializing/IsSerializeAfter flags? I think that's a little different where code is fetched but stopped from going through decode, maybe, so those might not work. Otherwise the code looks fine. The first summary line is too long and gets cut off.
  1. Tried that first, but it doesn't work. The serializing flags stall the processor until all instructions ahead have been committed, but that says nothing about the store buffer state. The stores (to the instruction stream), were sitting in the store buffer and hadn't actually made it on the "bus" yet. I think this does a pretty realistic thing when a complete flush needs to happen.
  2. I believe that. I may need to do something similar in x86 then, too.