mem_helper.tcl 1021 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. # SPDX-License-Identifier: GPL-2.0-or-later
  2. # Helper for common memory read/modify/write procedures
  3. # mrw: "memory read word", returns value of $reg
  4. proc mrw {reg} {
  5. return [read_memory $reg 32 1]
  6. }
  7. add_usage_text mrw "address"
  8. add_help_text mrw "Returns value of word in memory."
  9. # mrh: "memory read halfword", returns value of $reg
  10. proc mrh {reg} {
  11. return [read_memory $reg 16 1]
  12. }
  13. add_usage_text mrh "address"
  14. add_help_text mrh "Returns value of halfword in memory."
  15. # mrb: "memory read byte", returns value of $reg
  16. proc mrb {reg} {
  17. return [read_memory $reg 8 1]
  18. }
  19. add_usage_text mrb "address"
  20. add_help_text mrb "Returns value of byte in memory."
  21. # mmw: "memory modify word", updates value of $reg
  22. # $reg <== ((value & ~$clearbits) | $setbits)
  23. proc mmw {reg setbits clearbits} {
  24. set old [mrw $reg]
  25. set new [expr {($old & ~$clearbits) | $setbits}]
  26. mww $reg $new
  27. }
  28. add_usage_text mmw "address setbits clearbits"
  29. add_help_text mmw "Modify word in memory. new_val = (old_val & ~clearbits) | setbits;"