Thanks Steven.
Sorry, I didn't explain our reset/load logic correctly. Geraldine set me straight. :o)
Firstly, our bootloader takes care of all PLL and PCIe configuration. Since we are not powering down during a local reset, I don't think that's likely the cause of the problem.
When a local reset is asserted, a small bit of code is loaded, then the local reset is deasserted, and the start of code is written to a 'magic address' to make the DSP execute the small bit of code. This small bit of code just executes a loop, waiting for another change to the 'magic address' memory location. While this code is running, the main application is loaded to memory.
We know that the bootloader runs successfully after the reset is deasserted, but occasionally the DSP doesn't get any farther.
I'll look into flushing the cache, since I don't think we do that currently for code, only for data.
Thanks again,
Curtis