Remove all occurrences of 'mem2array' and 'array2mem' 59/6859/5
authorMarc Schink <dev@zapb.de>
Fri, 25 Feb 2022 14:44:58 +0000 (15:44 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 12 Mar 2022 09:48:19 +0000 (09:48 +0000)
Replace deprecated commands 'mem2array' and 'array2mem' with
new Tcl commands 'read_memory' and 'write_memory'.

Change-Id: I116d995995396133ca782b14cce02bd1ab917a4e
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: https://review.openocd.org/c/openocd/+/6859
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
18 files changed:
contrib/rpc_examples/ocd_rpc_example.py
tcl/board/at91cap7a-stk-sdram.cfg
tcl/board/at91sam9g20-ek.cfg
tcl/board/embedded-artists_lpc2478-32.cfg
tcl/board/hilscher_nxhx10.cfg
tcl/board/icnova_sam9g45_sodimm.cfg
tcl/chip/atmel/at91/aic.tcl
tcl/cpu/arc/common.tcl
tcl/mem_helper.tcl
tcl/memory.tcl
tcl/target/c100helper.tcl
tcl/target/hilscher_netx500.cfg
tcl/target/psoc4.cfg
tcl/target/stm32h7x.cfg
tcl/target/stm32mp15x.cfg
tcl/target/stm32wlx.cfg
tcl/target/ti_cc3220sf.cfg
testing/examples/cortex/cm3-ftest.cfg

index 3470d848bff219fd79a102ed1b8d7c503378b5e9..e6146f617976cebea65671ffed0a9daa53faf9f1 100755 (executable)
@@ -95,24 +95,16 @@ class OpenOcd:
         return None if (len(raw) < 2) else strToHex(raw[1])
 
     def readMemory(self, wordLen, address, n):
-        self.send("array unset output") # better to clear the array before
-        self.send("mem2array output %d 0x%x %d" % (wordLen, address, n))
-
-        output = [*map(int, self.send("return $output").split(" "))]
-        d = dict([tuple(output[i:i + 2]) for i in range(0, len(output), 2)])
-
-        return [d[k] for k in sorted(d.keys())]
+        output = self.send("read_memory 0x%x %d %d" % (address, wordLen, n))
+        return [*map(lambda x: int(x, 16), output.split(" "))]
 
     def writeVariable(self, address, value):
         assert value is not None
         self.send("mww 0x%x 0x%x" % (address, value))
 
-    def writeMemory(self, wordLen, address, n, data):
-        array = " ".join(["%d 0x%x" % (a, b) for a, b in enumerate(data)])
-
-        self.send("array unset 1986ве1т") # better to clear the array before
-        self.send("array set 1986ве1т { %s }" % array)
-        self.send("array2mem 1986ве1т 0x%x %s %d" % (wordLen, address, n))
+    def writeMemory(self, wordLen, address, data):
+        data = "{" + ' '.join(['0x%x' % x for x in data]) + "}"
+        self.send("write_memory 0x%x %d %s" % (address, wordLen, data))
 
 if __name__ == "__main__":
 
index 8a371e064b3115809a7159372f2ff572802b5ee4..182a4067f9aa332000135ce83be5b7ae46b65f89 100644 (file)
@@ -32,8 +32,7 @@ $_TARGETNAME configure -event reset-start {
 }
 
 proc peek32 {address} {
-       mem2array t 32 $address 1
-       return $t(0)
+       return [read_memory $address 32 1]
 }
 
 # Wait for an expression to be true with a timeout
index e1cbb91204c796da63145cb0f7568aa68f384a5c..04d9a197cc5a39ede7c6450ff986e3c22d67e4e2 100644 (file)
@@ -40,9 +40,7 @@ at91sam9 rdy_busy 0 0xfffff800 13
 at91sam9 ce 0 0xfffff800 14
 
 proc read_register {register} {
-        set result ""
-        mem2array result 32 $register 1
-        return $result(0)
+       return [read_memory $register 32 1]
 }
 
 proc at91sam9g20_reset_start { } {
index 38f5e1b8eb3d1077c39e7d6aabd58eda8c9aa6ea..a73d83263f515646529690ccb6565c1a0ae00b2c 100644 (file)
@@ -8,9 +8,7 @@ source [find target/lpc2478.cfg]
 # Helper
 #
 proc read_register {register} {
-    set result ""
-    mem2array result 32 $register 1
-    return $result(0)
+    return [read_memory $register 32 1]
 }
 
 proc init_board {} {
index 1875dacc0ee289591e1f91201310302f53a2d45f..6e2eba79ebae0fe3557b890408ec8889925db9af 100644 (file)
@@ -26,9 +26,7 @@ proc flash_init { } {
 }
 
 proc mread32 {addr} {
-  set value(0) 0
-  mem2array value 32 $addr 1
-  return $value(0)
+  return [read_memory $addr 32 1]
 }
 
 proc init_clocks { } {
index 8a0736b1fcdf21496594a7d885512054830a1a8d..91e0107c257d5bdcbd2449eaebfa6faad598679c 100644 (file)
@@ -43,9 +43,7 @@ flash bank $_FLASHNAME cfi 0x10000000 0x00800000 2 2 $_TARGETNAME
 
 
 proc read_register {register} {
-        set result ""
-        mem2array result 32 $register 1
-        return $result(0)
+       return [read_memory $register 32 1]
 }
 
 proc at91sam9g45_start { } {
index b0b1002707018e4568abdf6a2c26ae91705e0b0c..8b8a48f3b49e4ccf46691fd0d073a0e7122a8325 100644 (file)
@@ -54,36 +54,36 @@ proc show_AIC_IMR_helper { NAME ADDR VAL } {
 
 proc show_AIC { } {
     global AIC_SMR
-    if [catch { mem2array aaa 32 $AIC_SMR [expr {32 * 4}] } msg ] {
+    if [catch { set aaa [read_memory $AIC_SMR 32 [expr {32 * 4}]] } msg ] {
        error [format "%s (%s)" $msg AIC_SMR]
     }
     echo "AIC_SMR: Mode & Type"
     global AT91C_ID
     for { set x 0 } { $x < 32 } {  } {
        echo -n "   "
-       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) $aaa($x)]
+       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) [lindex $aaa $x]]
        incr x
-       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) $aaa($x)]
+       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) [lindex $aaa $x]]
        incr x
-       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) $aaa($x)]
+       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) [lindex $aaa $x]]
        incr x
-       echo  [format "%2d: %5s 0x%08x"  $x $AT91C_ID($x) $aaa($x)]
+       echo  [format "%2d: %5s 0x%08x"  $x $AT91C_ID($x) [lindex $aaa $x]]
        incr x
     }
     global AIC_SVR
-    if [catch { mem2array aaa 32 $AIC_SVR [expr {32 * 4}] } msg ] {
+    if [catch { set aaa [read_memory $AIC_SVR 32 [expr {32 * 4}]] } msg ] {
        error [format "%s (%s)" $msg AIC_SVR]
     }
     echo "AIC_SVR: Vectors"
     for { set x 0 } { $x < 32 } {  } {
        echo -n "   "
-       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) $aaa($x)]
+       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) [lindex $aaa $x]]
        incr x
-       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) $aaa($x)]
+       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) [lindex $aaa $x]]
        incr x
-       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) $aaa($x)]
+       echo -n [format "%2d: %5s 0x%08x | " $x $AT91C_ID($x) [lindex $aaa $x]]
        incr x
-       echo [format "%2d: %5s 0x%08x" $x $AT91C_ID($x) $aaa($x)]
+       echo [format "%2d: %5s 0x%08x" $x $AT91C_ID($x) [lindex $aaa $x]]
        incr x
     }
 
index e9a91571789b9a2dfc0df10e996f9a511d84e204..b31e31a34e2ea6e4ac7a34cf7b63a62cd2285c91 100644 (file)
@@ -29,9 +29,8 @@ proc arc_common_reset { {target ""} } {
         # vector located at the interrupt vector base address, which is the first
         # entry (offset 0x00) in the vector table.
         set int_vector_base [arc jtag get-aux-reg 0x25]
-        set start_pc ""
-        mem2array start_pc 32 $int_vector_base 1
-        arc jtag set-aux-reg 0x6 $start_pc(0)
+        set start_pc [read_memory $int_vector_base 32 1]
+        arc jtag set-aux-reg 0x6 $start_pc
 
         # It is OK to do uncached writes - register cache will be invalidated by
         # the reset_assert() function.
index 9ea285a22c8ea5736039211337cfa48bd8742d1b..1c860119a42ef1a6b815c075fd8464d82428e292 100644 (file)
@@ -2,9 +2,7 @@
 
 # mrw: "memory read word", returns value of $reg
 proc mrw {reg} {
-       set value ""
-       mem2array value 32 $reg 1
-       return $value(0)
+       return [read_memory $reg 32 1]
 }
 
 add_usage_text mrw "address"
@@ -12,9 +10,7 @@ add_help_text mrw "Returns value of word in memory."
 
 # mrh: "memory read halfword", returns value of $reg
 proc mrh {reg} {
-       set value ""
-       mem2array value 16 $reg 1
-       return $value(0)
+       return [read_memory $reg 16 1]
 }
 
 add_usage_text mrh "address"
@@ -22,9 +18,7 @@ add_help_text mrh "Returns value of halfword in memory."
 
 # mrb: "memory read byte", returns value of $reg
 proc mrb {reg} {
-       set value ""
-       mem2array value 8 $reg 1
-       return $value(0)
+       return [read_memory $reg 8 1]
 }
 
 add_usage_text mrb "address"
index 8d50ba8531ae50acd323ffa5b10f6a6a6ea0ab21..ac273451dc396d0ecbaae510d8071b758c857804 100644 (file)
@@ -79,108 +79,96 @@ proc address_info { ADDRESS } {
 }
 
 proc memread32 {ADDR} {
-    set foo(0) 0
-    if ![ catch { mem2array foo 32 $ADDR 1  } msg ] {
-       return $foo(0)
+    if ![ catch { set foo [read_memory $ADDR 32 1] } msg ] {
+       return $foo
     } else {
        error "memread32: $msg"
     }
 }
 
 proc memread16 {ADDR} {
-    set foo(0) 0
-    if ![ catch { mem2array foo 16 $ADDR 1  } msg ] {
-       return $foo(0)
+    if ![ catch { set foo [read_memory $ADDR 16 1] } msg ] {
+       return $foo
     } else {
        error "memread16: $msg"
     }
 }
 
 proc memread8 {ADDR} {
-    set foo(0) 0
-    if ![ catch { mem2array foo 8 $ADDR 1  } msg ] {
-       return $foo(0)
+    if ![ catch { set foo [read_memory $ADDR 8 1] } msg ] {
+       return $foo
     } else {
        error "memread8: $msg"
     }
 }
 
 proc memwrite32 {ADDR DATA} {
-    set foo(0) $DATA
-    if ![ catch { array2mem foo 32 $ADDR 1  } msg ] {
-       return $foo(0)
+    if ![ catch { write_memory $ADDR 32 $DATA } msg ] {
+       return $DATA
     } else {
        error "memwrite32: $msg"
     }
 }
 
 proc memwrite16 {ADDR DATA} {
-    set foo(0) $DATA
-    if ![ catch { array2mem foo 16 $ADDR 1  } msg ] {
-       return $foo(0)
+    if ![ catch { write_memory $ADDR 16 $DATA } msg ] {
+       return $DATA
     } else {
        error "memwrite16: $msg"
     }
 }
 
 proc memwrite8 {ADDR DATA} {
-    set foo(0) $DATA
-    if ![ catch { array2mem foo 8 $ADDR 1  } msg ] {
-       return $foo(0)
+    if ![ catch { write_memory $ADDR 8 $DATA } msg ] {
+       return $DATA
     } else {
        error "memwrite8: $msg"
     }
 }
 
 proc memread32_phys {ADDR} {
-    set foo(0) 0
-    if ![ catch { mem2array foo 32 $ADDR 1 phys } msg ] {
-       return $foo(0)
+    if ![ catch { set foo [read_memory $ADDR 32 1 phys] } msg ] {
+       return $foo
     } else {
        error "memread32: $msg"
     }
 }
 
 proc memread16_phys {ADDR} {
-    set foo(0) 0
-    if ![ catch { mem2array foo 16 $ADDR 1 phys } msg ] {
-       return $foo(0)
+    if ![ catch { set foo [read_memory $ADDR 16 1 phys] } msg ] {
+       return $foo
     } else {
        error "memread16: $msg"
     }
 }
 
 proc memread8_phys {ADDR} {
-    set foo(0) 0
-    if ![ catch { mem2array foo 8 $ADDR 1 phys } msg ] {
-       return $foo(0)
+    if ![ catch { set foo [read_memory $ADDR 8 1 phys] } msg ] {
+       return $foo
     } else {
        error "memread8: $msg"
     }
 }
 
 proc memwrite32_phys {ADDR DATA} {
-    set foo(0) $DATA
-    if ![ catch { array2mem foo 32 $ADDR 1 phys } msg ] {
-       return $foo(0)
+    if ![ catch { write_memory $ADDR 32 $DATA phys } msg ] {
+       return $DATA
     } else {
        error "memwrite32: $msg"
     }
 }
 
 proc memwrite16_phys {ADDR DATA} {
-    set foo(0) $DATA
-    if ![ catch { array2mem foo 16 $ADDR 1 phys } msg ] {
-       return $foo(0)
+    if ![ catch { write_memory $ADDR 16 $DATA phys } msg ] {
+       return $DATA
     } else {
        error "memwrite16: $msg"
     }
 }
 
 proc memwrite8_phys {ADDR DATA} {
-    set foo(0) $DATA
-    if ![ catch { array2mem foo 8 $ADDR 1 phys } msg ] {
-       return $foo(0)
+    if ![ catch { write_memory $ADDR 8 $DATA phys } msg ] {
+       return $DATA
     } else {
        error "memwrite8: $msg"
     }
index bdcfd8cf5e1e425739cffb25332f1ba26949c278..ecd7edf1176c1b22823c66a248268d25bf649f8c 100644 (file)
@@ -29,9 +29,7 @@ source [find mem_helper.tcl]
 
 # read a 64-bit register (memory mapped)
 proc mr64bit {reg} {
-    set value ""
-    mem2array value 32 $reg 2
-    return $value
+    return [read_memory $reg 32 2]
 }
 
 
@@ -117,19 +115,19 @@ proc showAmbaClk {} {
     set PLL_CLK_BYPASS              [regs PLL_CLK_BYPASS]
 
     echo [format "CLKCORE_AHB_CLK_CNTRL       (0x%x): 0x%x" $CLKCORE_AHB_CLK_CNTRL [mrw $CLKCORE_AHB_CLK_CNTRL]]
-    mem2array value 32 $CLKCORE_AHB_CLK_CNTRL 1
+    set value [read_memory $CLKCORE_AHB_CLK_CNTRL 32 1]
     # see if the PLL is in bypass mode
-    set bypass [expr {($value(0) & $PLL_CLK_BYPASS) >> 24}]
+    set bypass [expr {($value & $PLL_CLK_BYPASS) >> 24}]
     echo [format "PLL bypass bit: %d" $bypass]
     if {$bypass == 1} {
        echo [format "Amba Clk is set to REFCLK: %d (MHz)" [expr {$CFG_REFCLKFREQ/1000000}]]
     } else {
        # nope, extract x,y,w and compute the PLL output freq.
-       set x [expr {($value(0) & 0x0001F0000) >> 16}]
+       set x [expr {($value & 0x0001F0000) >> 16}]
        echo [format "x: %d" $x]
-       set y [expr {($value(0) & 0x00000007F)}]
+       set y [expr {($value & 0x00000007F)}]
        echo [format "y: %d" $y]
-       set w [expr {($value(0) & 0x000000300) >> 8}]
+       set w [expr {($value & 0x000000300) >> 8}]
        echo [format "w: %d" $w]
        echo [format "Amba PLL Clk: %d (MHz)" [expr {($CFG_REFCLKFREQ * $y / (($w + 1) * ($x + 1) * 2))/1000000}]]
     }
@@ -192,19 +190,19 @@ proc showArmClk {} {
     set PLL_CLK_BYPASS         [regs PLL_CLK_BYPASS]
 
     echo [format "CLKCORE_ARM_CLK_CNTRL       (0x%x): 0x%x" $CLKCORE_ARM_CLK_CNTRL [mrw $CLKCORE_ARM_CLK_CNTRL]]
-    mem2array value 32 $CLKCORE_ARM_CLK_CNTRL 1
+    set value [read_memory $CLKCORE_ARM_CLK_CNTRL 32 1]
     # see if the PLL is in bypass mode
-    set bypass [expr {($value(0) & $PLL_CLK_BYPASS) >> 24}]
+    set bypass [expr {($value & $PLL_CLK_BYPASS) >> 24}]
     echo [format "PLL bypass bit: %d" $bypass]
     if {$bypass == 1} {
        echo [format "Amba Clk is set to REFCLK: %d (MHz)" [expr {$CFG_REFCLKFREQ/1000000}]]
     } else {
        # nope, extract x,y,w and compute the PLL output freq.
-       set x [expr {($value(0) & 0x0001F0000) >> 16}]
+       set x [expr {($value & 0x0001F0000) >> 16}]
        echo [format "x: %d" $x]
-       set y [expr {($value(0) & 0x00000007F)}]
+       set y [expr {($value & 0x00000007F)}]
        echo [format "y: %d" $y]
-       set w [expr {($value(0) & 0x000000300) >> 8}]
+       set w [expr {($value & 0x000000300) >> 8}]
        echo [format "w: %d" $w]
        echo [format "Arm PLL Clk: %d (MHz)" [expr {($CFG_REFCLKFREQ * $y / (($w + 1) * ($x + 1) * 2))/1000000}]]
     }
index 6d919f9dd864f2025dfe88c1fa8b91303ffad20e..131bef2217a20991329fcf49ca4878a7a04269f7 100644 (file)
@@ -26,9 +26,7 @@ set _TARGETNAME $_CHIPNAME.cpu
 target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME
 
 proc mread32 {addr} {
-  set value(0) 0
-  mem2array value 32 $addr 1
-  return $value(0)
+  return [read_memory $addr 32 1]
 }
 
 # This function must be called on netX100/500 right after halt
index cffcbc7538fa6763212593f68099541f9293e3cb..40f2fcab3a3f68f6cea61d44440ae434573a00a0 100644 (file)
@@ -74,22 +74,22 @@ if {![using_hla]} {
 }
 
 proc psoc4_get_family_id {} {
-       set err [catch "mem2array romtable_pid 32 0xF0000FE0 3"]
+       set err [catch {set romtable_pid [read_memory 0xF0000FE0 32 3]}]
        if { $err } {
                return 0
        }
-       if { [expr {$romtable_pid(0) & 0xffffff00 }]
-         || [expr {$romtable_pid(1) & 0xffffff00 }]
-         || [expr {$romtable_pid(2) & 0xffffff00 }] } {
+       if { [expr {[lindex $romtable_pid 0] & 0xffffff00 }]
+         || [expr {[lindex $romtable_pid 1] & 0xffffff00 }]
+         || [expr {[lindex $romtable_pid 2] & 0xffffff00 }] } {
                echo "Unexpected data in ROMTABLE"
                return 0
        }
-       set designer_id [expr {(( $romtable_pid(1) & 0xf0 ) >> 4) | (( $romtable_pid(2) & 0xf ) << 4 ) }]
+       set designer_id [expr {(( [lindex $romtable_pid 1] & 0xf0 ) >> 4) | (( [lindex $romtable_pid 2] & 0xf ) << 4 ) }]
        if { $designer_id != 0xb4 } {
                echo [format "ROMTABLE Designer ID 0x%02x is not Cypress" $designer_id]
                return 0
        }
-       set family_id [expr {( $romtable_pid(0) & 0xff ) | (( $romtable_pid(1) & 0xf ) << 8 ) }]
+       set family_id [expr {( [lindex $romtable_pid 0] & 0xff ) | (( [lindex $romtable_pid 1] & 0xf ) << 8 ) }]
        return $family_id
 }
 
@@ -193,9 +193,9 @@ proc ocd_process_reset_inner { MODE } {
                }
 
                # Set registers to reset vector values
-               mem2array value 32 0 2
-               reg pc [expr {$value(1) & 0xfffffffe} ]
-               reg msp $value(0)
+               set value [read_memory 0x0 32 2]
+               reg pc [expr {[lindex $value 1] & 0xfffffffe}]
+               reg msp [lindex $value 0]
 
                if { $PSOC4_TEST_MODE_WORKAROUND } {
                        catch { mww $TEST_MODE 0 }
index f2a5c42c6d7386e616a4936a6849274c3cffcc25..ca685c2f27e3863b2a415691e2256290ee44a9ca 100644 (file)
@@ -232,9 +232,7 @@ if {[set $_CHIPNAME.DUAL_CORE]} {
 
 # like mrw, but with target selection
 proc stm32h7x_mrw {used_target reg} {
-       set value ""
-       $used_target mem2array value 32 $reg 1
-       return $value(0)
+       return [$used_target read_memory $reg 32 1]
 }
 
 # like mmw, but with target selection
index 639fbabe06e9dc23a0b56cf70a174024e513724c..afd5d2413eb2f13b2a6b791fcba4301a4ff34fd2 100644 (file)
@@ -109,8 +109,8 @@ proc toggle_cpu0_dbg_claim0 {} {
 }
 
 proc detect_cpu1 {} {
-       $::_CHIPNAME.ap1 mem2array cpu1_prsr 32 0xE00D2314 1
-       set dual_core [expr {$cpu1_prsr(0) & 1}]
+       set cpu1_prsr [$::_CHIPNAME.ap1 read_memory 0xE00D2314 32 1]
+       set dual_core [expr {$cpu1_prsr & 1}]
        if {! $dual_core} {$::_CHIPNAME.cpu1 configure -defer-examine}
 }
 
index fafe9bcbacdc8a15b7a163974c270fe17f23e9c5..75f6f0288d51703a971543c4a648328460a07753 100644 (file)
@@ -156,9 +156,7 @@ proc stm32wlx_get_chipname {} {
 
 # like mrw, but with target selection
 proc stm32wlx_mrw {used_target reg} {
-       set value ""
-       $used_target mem2array value 32 $reg 1
-       return $value(0)
+       return [$used_target read_memory $reg 32 1]
 }
 
 # like mmw, but with target selection
index 74269aa66ca494f1d9756293b130009e4d3c6b33..c0a7b568d3f739fd0d3e414c3cec74b73e94ad82 100644 (file)
@@ -26,11 +26,11 @@ proc ocd_process_reset_inner { MODE } {
        soft_reset_halt
 
        # Initialize MSP, PSP, and PC from vector table at flash 0x01000800
-       mem2array boot 32 0x01000800 2
+       set boot [read_memory 0x01000800 32 2]
 
-       reg msp $boot(0)
-       reg psp $boot(0)
-       reg pc $boot(1)
+       reg msp [lindex $boot 0]
+       reg psp [lindex $boot 0]
+       reg pc [lindex $boot 1]
 
        if { 0 == [string compare $MODE run ] } {
                resume
index 6f3fa5c819956188d445d90a3ad673596fb03123..02c8da11ad16fc734f04ec25e42c1aa6402c57cb 100644 (file)
@@ -50,7 +50,7 @@ proc load_and_run { name halfwords n_instr } {
        echo "# code to trigger $name vector"
        set addr 0x20000000
 
-       # array2mem should be faster, though we'd need to
+       # write_memory should be faster, though we'd need to
        # compute the resulting $addr ourselves
        foreach opcode $halfwords {
                mwh $addr $opcode

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)