Thank you for your answer.
Quoting core RM:
“During the process of performing the invalidation, a cache does not respond to accesses that are not snoop accesses and remains busy. Interrupts may still be recognized and processed, potentially aborting the invalidation operation.”
RTFM ! ^^
Indeed, I was looking in MPC5566RM but not in E200Z6_RM.
But the manual sentence is not very explicit: "potentially aborting". In my case, it is systematic and with an interrupt than is not processed (just pending).
Indeed, from the core point of view, external IT are disabled (MSR[EE] = 0). Only, the interrupt controller (which is not part of the core) shall see it.
Steps to configure the cache:
- Software must ensure that any prior invalidation of the cache is completed
- Check L1CSR0[CABT]. If it is set, wait until complete.
I do exactly these steps, except for step one. Quoting RM about CABT:
"This bit is set by hardware on an aborted condition, and will remain set until cleared by software writing 0 to this bit location."
So, I do not think you should wait until it is cleared.