aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arc/lib/cache.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/arc/lib/cache.c b/arch/arc/lib/cache.c
index b6ec8311..f1436bf 100644
--- a/arch/arc/lib/cache.c
+++ b/arch/arc/lib/cache.c
@@ -59,10 +59,16 @@ static unsigned int __before_slc_op(const int op)
static void __after_slc_op(const int op, unsigned int reg)
{
- if (op & OP_FLUSH) /* flush / flush-n-inv both wait */
+ if (op & OP_FLUSH) { /* flush / flush-n-inv both wait */
+ /*
+ * Make sure "busy" bit reports correct status,
+ * see STAR 9001165532
+ */
+ read_aux_reg(ARC_AUX_SLC_CTRL);
while (read_aux_reg(ARC_AUX_SLC_CTRL) &
DC_CTRL_FLUSH_STATUS)
;
+ }
/* Switch back to default Invalidate mode */
if (op == OP_INV)