cpu: Fix Minor SMT WFI/drain interaction issues
authorMitch Hayenga <mitch.hayenga@arm.com>
Thu, 21 Jul 2016 16:19:16 +0000 (17:19 +0100)
committerMitch Hayenga <mitch.hayenga@arm.com>
Thu, 21 Jul 2016 16:19:16 +0000 (17:19 +0100)
commit752f1c1fe9e74ebb0d373276b332b3242e589208
tree66681f689812f3bba1b8c5f9b1cd301fe5490310
parentff4009ac005be0347015f8ba5a8e37a3aa930e69
cpu: Fix Minor SMT WFI/drain interaction issues

The behavior of WFI is to cause minor to cease evaluating
pipeline logic until an interrupt is observed, however
a user may wish to drain the system while a core is sleeping
due to a WFI.  This patch makes WFI drain.  If an actual
drain occurs during a WFI, the CPU is already drained and will
immediately be ready for swapping, checkpointing, etc.  This
should not negatively impact performance as WFI instructions
are 'stream-changing' (treated like unpredicted branches), so
all remaining instructions are wrong-path and will be squashed
rapidly.

Change-Id: I63833d5acb53d8dde78f9f0c9611de0ece385e45
src/cpu/minor/decode.cc
src/cpu/minor/execute.cc
src/cpu/minor/fetch1.cc
src/cpu/minor/fetch2.cc