You mention this is an SMP system, you are not trying to enable the cache twice in parallel from multiples cores by and chance are you? It is obviously a shared resource, so you will usually need to bootstrap CPU0, init the L2, and then start up the other cores.My only other thought is to check you have barriers in all of the appropriate places to ensure you are not getting memory accesses leaking across critical instructions.