X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=tcl%2Fmmr_helpers.tcl;h=5c37fcfdc138baeb30ddc553ef43270d4a693840;hb=ace028262ba0bda0e921afb11e6eb7d87708d889;hp=6b2c1476ea3852195023d03066d82c08894c8d8e;hpb=f5657aa76e795e4ed5b13a9f5df943181a123e49;p=fw%2Fopenocd diff --git a/tcl/mmr_helpers.tcl b/tcl/mmr_helpers.tcl index 6b2c1476e..5c37fcfdc 100644 --- a/tcl/mmr_helpers.tcl +++ b/tcl/mmr_helpers.tcl @@ -1,8 +1,9 @@ +# SPDX-License-Identifier: GPL-2.0-or-later proc proc_exists { NAME } { set n [info commands $NAME] set l [string length $n] - return [expr $l != 0] + return [expr {$l != 0}] } # Give: REGISTER name - must be a global variable. @@ -52,7 +53,7 @@ proc show_mmr32_bits { NAMES VAL } { echo -n " " for { set y 7 } { $y >= 0 } { incr y -1 } { - echo -n [format " %d%*s | " [expr !!($VAL & (1 << ($x + $y)))] [expr {$w -1}] ""] + echo -n [format " %d%*s | " [expr {!!($VAL & (1 << ($x + $y)))}] [expr {$w -1}] ""] } echo "" } @@ -70,3 +71,22 @@ proc show_mmr_bitfield { MSB LSB VAL FIELDNAME FIELDVALUES } { } echo [format "%-15s: %d (0x%0*x) %s" $FIELDNAME $nval $width $nval $sval ] } + +# Give: ADDR - address of the register. +# BIT - bit's number. + +proc get_mmr_bit { ADDR BIT } { + set val [memread32 $ADDR] + set bit_val [expr {$val & [expr {1 << $BIT}]}] + return $bit_val +} + + +# Give: ADDR - address of the register. +# MSB - MSB bit's number. +# LSB - LSB bit's number. + +proc get_mmr_bitfield { ADDR MSB LSB } { + set rval [memread32 $ADDR] + return normalize_bitfield $rval $MSB $LSB +}