We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
ARM processors have traditionally not provided automatic coherency management between the I and D sides. So self-modifying code (and similar) has always required manual cache maintenance. You will first need to clean the d cache, and then invalidate the I side.You don't say which processor you're using. If it's the A9 or A5, they have the option of having cache maintenance broadcasting. This is when doing the operation on any one CPU causes the other CPUs to also perform the operation. It requires support to be enabled on each CPU (FW bit in ACTLR) and for you to use the inner shareable versions of the i side operations.