summaryrefslogtreecommitdiff
path: root/tcl/mem_helper.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tcl/mem_helper.tcl')
-rw-r--r--tcl/mem_helper.tcl22
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;"