Fix wrong end-of-region calculation 98/4798/2
authorPiotr Kasprzyk <ciri@ciri.pl>
Sat, 8 Dec 2018 02:27:51 +0000 (03:27 +0100)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Fri, 18 Oct 2019 08:19:09 +0000 (09:19 +0100)
Correct check for end-of-region is:
$BASE + $LEN > $ADDRESS

And it is currently (wrongly) calculated as:
$ADDRESS > $BASE - $LEN

Change-Id: If10bfee19b0c7dbc085731ac1eda943f5d8a36a3
Signed-off-by: Piotr Kasprzyk <ciri@ciri.pl>
Reviewed-on: http://openocd.zylin.com/4798
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
tcl/memory.tcl

index 83c96d6..a7f5b9a 100644 (file)
@@ -58,7 +58,7 @@ set ACCESS_WIDTH_ANY  [expr $ACCESS_WIDTH_8 + $ACCESS_WIDTH_16 + $ACCESS_WIDTH_3
 set UNKNOWN(0,ACCESS_WIDTH) $ACCESS_WIDTH_NONE
 
 proc iswithin { ADDRESS BASE LEN } {
-    return [expr ((($ADDRESS - $BASE) > 0) && (($ADDRESS - $BASE + $LEN) > 0))]
+    return [expr ((($ADDRESS - $BASE) > 0) && (($BASE + $LEN - $ADDRESS) > 0))]
 }
 
 proc address_info { ADDRESS } {