diff options
Diffstat (limited to 'tcl/mem_helper.tcl')
-rw-r--r-- | tcl/mem_helper.tcl | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tcl/mem_helper.tcl b/tcl/mem_helper.tcl new file mode 100644 index 00000000..d8114908 --- /dev/null +++ b/tcl/mem_helper.tcl @@ -0,0 +1,22 @@ +# Helper for common memory read/modify/write procedures + +# mrw: "memory read word", returns value of $reg +proc mrw {reg} { + set value "" + ocd_mem2array value 32 $reg 1 + return $value(0) +} + +add_usage_text mrw "address" +add_help_text mrw "Returns value of word in memory." + +# mmw: "memory modify word", updates value of $reg +# $reg <== ((value & ~$clearbits) | $setbits) +proc mmw {reg setbits clearbits} { + set old [mrw $reg] + set new [expr ($old & ~$clearbits) | $setbits] + mww $reg $new +} + +add_usage_text mmw "address setbits clearbits" +add_help_text mmw "Modify word in memory. new_val = (old_val & ~clearbits) | setbits;" |