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 _______________________________________________ Openocd-development mailing list Openocd-development@lists.berlios.de https://lists.berlios.de/mailman/listinfo/openocd-development