From edefee988045558d5d306453ce352dc06bcb7a03 Mon Sep 17 00:00:00 2001 From: Antonio Borneo Date: Tue, 21 Sep 2010 16:06:37 +0800 Subject: [PATCH] TCL scripts: collect duplicated procedures TCL procedures mrw and mmw, originally in DaVinci target code, are duplicated in other TCL scripts. Moved in a common helper file, and added help/usage description. Signed-off-by: Antonio Borneo --- tcl/mem_helper.tcl | 22 ++++++++++++++++++++++ tcl/target/c100helper.tcl | 16 +--------------- tcl/target/davinci.cfg | 15 +-------------- tcl/target/stellaris.cfg | 7 +------ 4 files changed, 25 insertions(+), 35 deletions(-) create mode 100644 tcl/mem_helper.tcl diff --git a/tcl/mem_helper.tcl b/tcl/mem_helper.tcl new file mode 100644 index 000000000..d8114908e --- /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;" diff --git a/tcl/target/c100helper.tcl b/tcl/target/c100helper.tcl index 45adc62c6..32510660e 100644 --- a/tcl/target/c100helper.tcl +++ b/tcl/target/c100helper.tcl @@ -25,13 +25,7 @@ proc helpC100 {} { puts "22) flashUBOOT: will prgram NOR sectors 0-3 with u-boot.bin" } -# mrw,mmw from davinci.cfg -# mrw: "memory read word", returns value of $reg -proc mrw {reg} { - set value "" - mem2array value 32 $reg 1 - return $value(0) -} +source [find mem_helper.tcl] # read a 64-bit register (memory mapped) proc mr64bit {reg} { @@ -50,14 +44,6 @@ proc mw64bit {reg value} { mww [expr $reg+4] $high } -# 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 -} - proc showNOR {} { puts "This is the current NOR setup" diff --git a/tcl/target/davinci.cfg b/tcl/target/davinci.cfg index 6e9091e5f..9e9369dc1 100644 --- a/tcl/target/davinci.cfg +++ b/tcl/target/davinci.cfg @@ -7,20 +7,7 @@ proc davinci_pinmux {soc reg value} { mww [expr [dict get $soc sysbase] + 4 * $reg] $value } -# mrw: "memory read word", returns value of $reg -proc mrw {reg} { - set value "" - mem2array value 32 $reg 1 - return $value(0) -} - -# 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 -} +source [find mem_helper.tcl] # # pll_setup: initialize PLL diff --git a/tcl/target/stellaris.cfg b/tcl/target/stellaris.cfg index 6ba5f14a2..b663ce3dc 100644 --- a/tcl/target/stellaris.cfg +++ b/tcl/target/stellaris.cfg @@ -46,12 +46,7 @@ $_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE # this, if you're using a slower clock. adapter_khz 500 -# mrw: "memory read word", returns value of $reg -proc mrw {reg} { - set value "" - mem2array value 32 $reg 1 - return $value(0) -} +source [find mem_helper.tcl] $_TARGETNAME configure -event reset-start { adapter_khz 500