flash/nor/at91samd: Use 32-bit register writes for ST-Link compat
[fw/openocd] / tcl / mem_helper.tcl
index 86ad00f7ebb91672ff730c967d815d59eea75fd1..0229d54b783ac606556a405bb0ef8acbd0481631 100644 (file)
@@ -1,19 +1,26 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
 # Helper for common memory read/modify/write procedures
 
 # mrw: "memory read word", returns value of $reg
 proc mrw {reg} {
-       set value ""
-       mem2array value 32 $reg 1
-       return $value(0)
+       return [read_memory $reg 32 1]
 }
 
 add_usage_text mrw "address"
 add_help_text mrw "Returns value of word in memory."
 
+# mrh: "memory read halfword", returns value of $reg
+proc mrh {reg} {
+       return [read_memory $reg 16 1]
+}
+
+add_usage_text mrh "address"
+add_help_text mrh "Returns value of halfword in memory."
+
+# mrb: "memory read byte", returns value of $reg
 proc mrb {reg} {
-       set value ""
-       mem2array value 8 $reg 1
-       return $value(0)
+       return [read_memory $reg 8 1]
 }
 
 add_usage_text mrb "address"
@@ -23,7 +30,7 @@ add_help_text mrb "Returns value of byte in memory."
 #       $reg <== ((value & ~$clearbits) | $setbits)
 proc mmw {reg setbits clearbits} {
        set old [mrw $reg]
-       set new [expr ($old & ~$clearbits) | $setbits]
+       set new [expr {($old & ~$clearbits) | $setbits}]
        mww $reg $new
 }