target/arc: do not invalidate icache when (un)setting breakpoints
commitd20304b3fb0f27f62844144837ee5b99ee040bcd
authorArtemiy Volkov <artemiy@synopsys.com>
Thu, 6 Jul 2023 11:25:00 +0000 (6 13:25 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 7 Oct 2023 14:42:13 +0000 (7 14:42 +0000)
tree4d8d11883c2ee40333712296edc7672f7eeb13fe
parentbdf73617e774b0791f9efec6659c78c1f60c03b5
target/arc: do not invalidate icache when (un)setting breakpoints

Currently, instruction cache is being invalidated in
arc_{un,}set_breakpoint() regardless of whether the breakpoint's type is
HW or SW. For SW breakpoints, this has no net effect as the caches are
flushed as a by-product of overwriting instructions in main memory and
is thus merely unnecessary; but for HW breakpoints this invalidation is
not preceded by a flush and might lead to loss of data. This patch
removes the invalidate() call altogether to correct this undesired
behavior for HW breakpoints.

With this patch applied, all supported HW breakpoint tests from the gdb
testsuite are now passing with the arc-openocd backend.

Change-Id: I3d252b97f01f1a1e2bf0eb8fb257bdab0c544bc2
Signed-off-by: Artemiy Volkov <artemiy@synopsys.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7767
Tested-by: jenkins
Reviewed-by: Evgeniy Didin <didin@synopsys.com>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
src/target/arc.c