As there might be dirty data line on any core of MX6
SOC when power on or reset, we need to do L1 I-cache
invalidation in the resume process and start up
process for all cores.
This is very important for us, as not all of the hardware
will do cache invalidation during power on or reset, so
we need to do the invalidation for all cache(L1, L2,
I and D) before first time enabling. Please keep in mind.
Signed-off-by: Anson Huang <b20788@freescale.com>
offset is passed from GPR parameter, currently we store
it at r8, future code change should avoid using r8.
*****************************************************************************/
+ /* Invalidate L1 I-cache first */
+ mov r1, #0x0
+ mcr p15, 0, r1, c7, c5, 0 @ Invalidate I-Cache
/* count the offset value and store it in r8 */
ldr r3, =mx6_secondary_startup
mrc p15, 0, r0, c0, c0, 5
are running with MMU off.
****************************************************************/
resume:
+ /* Invalidate L1 I-cache first */
+ mov r1, #0x0
+ mcr p15, 0, r1, c7, c5, 0 @ Invalidate I-Cache
ldr r0, =SRC_BASE_ADDR
- mov r1, #0x0
str r1, [r0, #SRC_GPR1_OFFSET] /* clear SRC_GPR1 */
ldr r0, [r0, #SRC_GPR2_OFFSET]