On Thu, Sep 9, 2010 at 10:53 PM, Michael Schwingen
<rincew...@discworld.dascon.de> wrote:
> Drasko DRASKOVIC wrote:
>> For the quick and dirty solution, I created int
>> arm946e_write_memory(struct target *target, uint32_t address, uint32_t
>> size, uint32_t count, uint8_t *buffer) to replace currently used
>> arm7_9_write_memory().
>> Inside it I just call existing arm7_9_write_memory() and then
>> invalidate the instruction cache, like this :
>>
>> printf ("Invalidate I$\n");
>> retval = arm966e_write_cp15(target, 0x0f, 0);
>>
>> I do not look if caches are I$ is turned on (I know it is), I just
>> want to invalidate it on every mem write. This should solve the
>> problem with breakpoint not deleted from the cache. But it does not!
>> So breakpoint is hit over and over again, like before.
>>
> I don't know anything about the ARM9 cache structure, but if the data
> cache is enabled, you might need to flush the data cache after writing,
> because otherwise the instruction cache will pick up the old contents
> from main memory, while the newly written values are in the data cache only.
>
> That assumes that your memory write goes through the data cache - if the
> writes go directly to memory, then the above problem can not happen.
>
> cu
> Michael

Well, I tried this one too - same result... I am staring to believe
that the problem is not the cache - if it was the cache then the same
breakpoint would be hit even if it was deleted from memory (but not
from instruction cache), but here the old breakpoint will not me let
proceed, i.e. step or continue. Might be something due to the
interrupt handling ?

BR,
Drasko
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to