2 proc proc_exists
{ NAME
} {
3 set n
[info commands
$NAME]
4 set l
[string length
$n]
8 # Give: REGISTER name - must be a global variable.
9 proc show_mmr32_reg
{ NAME
} {
13 set a
[set [set NAME
]]
15 if ![catch { set v
[memread32
$a] } msg
] {
16 echo
[format "%15s: (0x%08x): 0x%08x" $NAME $a $v]
18 # Was a helper defined?
19 set fn show_
${NAME
}_helper
20 if [ proc_exists
$fn ] {
26 error [format "%s (%s)" $msg $NAME ]
31 # Give: NAMES - an array of names accessable
32 # in the callers symbol-scope.
33 # VAL - the bits to display.
35 proc show_mmr32_bits
{ NAMES VAL
} {
40 foreach {IDX N
} $MYNAMES {
41 set l
[string length
$N]
42 if { $l > $w } { set w
$l }
45 for { set x
24 } { $x >= 0 } { incr x
-8 } {
47 for { set y
7 } { $y >= 0 } { incr y
-1 } {
48 set s
$MYNAMES([expr $x + $y])
49 echo
-n [format "%2d: %-*s | " [expr $x + $y] $w $s ]
54 for { set y
7 } { $y >= 0 } { incr y
-1 } {
55 echo
-n [format " %d%*s | " [expr !!($VAL & (1 << ($x + $y)))] [expr $w -1] ""]
62 proc show_mmr_bitfield
{ MSB LSB VAL FIELDNAME FIELDVALUES
} {
63 set width
[expr (($MSB - $LSB + 1) + 7) / 4]
64 set nval
[show_normalize_bitfield
$VAL $MSB $LSB ]
65 set name0
[lindex $FIELDVALUES 0 ]
66 if [ string compare
$name0 _NUMBER_
] {
67 set sval
[lindex $FIELDVALUES $nval]
71 echo
[format "%-15s: %d (0x%0*x) %s" $FIELDNAME $nval $width $nval $sval ]