diff options
author | Evgeniy Naydanov <evgeniy.naydanov@syntacore.com> | 2024-09-16 18:01:17 +0300 |
---|---|---|
committer | Evgeniy Naydanov <evgeniy.naydanov@syntacore.com> | 2024-09-16 18:41:08 +0300 |
commit | 4c45762d76ce72df157a2b51993ccd8392104e82 (patch) | |
tree | c20261dfff00ecea3c98b2e9311a220289dabbce | |
parent | 269c57e37629baba43cd6944539df63d0913398c (diff) | |
download | riscv-openocd-4c45762d76ce72df157a2b51993ccd8392104e82.zip riscv-openocd-4c45762d76ce72df157a2b51993ccd8392104e82.tar.gz riscv-openocd-4c45762d76ce72df157a2b51993ccd8392104e82.tar.bz2 |
target/breakpoints: fix types in `watchpoint_add_internal()`
There was a conflict:
1. commit 2cd8ebf44d1a ("breakpoints: use 64-bit type for watchpoint mask
and value")
2. commit 0bf3373e808a ("target/breakpoints: Use 'unsigned int' for
length")
The second commit was created erlier, but merged later so the types of
`mask` and `value` became `uint32_t` in `watchpoint_add_internal()`.
This created a bug:
`WATCHPOINT_IGNORE_DATA_VALUE_MASK` is defined as `(~(uint64_t)0)`.
Truncation to uint32_t makes it so the comparisons with the constant
don't work.
Change-Id: I19c414c351f52aff72a60330d83c29db7bbca375
Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
-rw-r--r-- | src/target/breakpoints.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/target/breakpoints.c b/src/target/breakpoints.c index a1ef3bf..0427ba3 100644 --- a/src/target/breakpoints.c +++ b/src/target/breakpoints.c @@ -542,7 +542,7 @@ struct breakpoint *breakpoint_find(struct target *target, target_addr_t address) } static int watchpoint_add_internal(struct target *target, target_addr_t address, - unsigned int length, enum watchpoint_rw rw, uint32_t value, uint32_t mask) + unsigned int length, enum watchpoint_rw rw, uint64_t value, uint64_t mask) { struct watchpoint *watchpoint = target->watchpoints; struct watchpoint **watchpoint_p = &target->watchpoints; |