aboutsummaryrefslogtreecommitdiff
path: root/tcl
diff options
context:
space:
mode:
authorIan Thompson <ianst@cadence.com>2024-01-18 16:10:26 -0800
committerAntonio Borneo <borneo.antonio@gmail.com>2024-01-28 14:17:28 +0000
commit3d3f82392045384e4cfe81bf19140a60312a47e8 (patch)
treef28379663a413c7f43456af87cd04248da9b8389 /tcl
parent151b743714382120dbe0dee0e0eeb75826ef5b3a (diff)
downloadriscv-openocd-3d3f82392045384e4cfe81bf19140a60312a47e8.zip
riscv-openocd-3d3f82392045384e4cfe81bf19140a60312a47e8.tar.gz
riscv-openocd-3d3f82392045384e4cfe81bf19140a60312a47e8.tar.bz2
target/xtensa: add dual-core support
- Example for configuring multiple non-SMP Xtensa cores e.g. for heterogeneous debug - JTAG only at this time; DAP out of scope - Dual-Xtensa Palladium example via VDebug - Update Xtensa core config examples Signed-off-by: Ian Thompson <ianst@cadence.com> Change-Id: I6d2b3d13fa8075416dcd383cf256a3e8582ee1c1 Reviewed-on: https://review.openocd.org/c/openocd/+/8078 Tested-by: jenkins Reviewed-by: Jacek Wuwer <jacekmw8@gmail.com> Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Diffstat (limited to 'tcl')
-rw-r--r--tcl/board/xtensa-palladium-vdebug-dual.cfg33
-rw-r--r--tcl/board/xtensa-palladium-vdebug.cfg16
-rw-r--r--tcl/target/xtensa-core-nxp_rt600.cfg456
-rw-r--r--tcl/target/xtensa-core-xt8.cfg297
-rw-r--r--tcl/target/xtensa.cfg25
5 files changed, 455 insertions, 372 deletions
diff --git a/tcl/board/xtensa-palladium-vdebug-dual.cfg b/tcl/board/xtensa-palladium-vdebug-dual.cfg
new file mode 100644
index 0000000..447bc1f
--- /dev/null
+++ b/tcl/board/xtensa-palladium-vdebug-dual.cfg
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Cadence virtual debug interface
+# for Palladium emulation systems
+#
+
+source [find interface/vdebug.cfg]
+
+# vdebug select JTAG transport
+transport select jtag
+
+# JTAG reset config, frequency and reset delay
+reset_config trst_and_srst
+adapter speed 50000
+adapter srst delay 5
+
+# Future improvement: Enable backdoor memory access
+# set _MEMSTART 0x00000000
+# set _MEMSIZE 0x100000
+
+# BFM hierarchical path and input clk period
+vdebug bfm_path Testbench.VJTAG 10ns
+
+# DMA Memories to access backdoor (up to 4)
+# vdebug mem_path tbench.u_mcu.u_sys.u_itcm_ram.Mem $_MEMSTART $_MEMSIZE
+
+# Configure dual-core TAP chain
+set XTENSA_NUM_CORES 2
+
+# Create Xtensa target first
+source [find target/xtensa.cfg]
+
+# Configure Xtensa core parameters next
+# Generate [xtensa-core-XXX.cfg] via "xt-gdb --dump-oocd-config"
diff --git a/tcl/board/xtensa-palladium-vdebug.cfg b/tcl/board/xtensa-palladium-vdebug.cfg
index d4a700e..f14d92d 100644
--- a/tcl/board/xtensa-palladium-vdebug.cfg
+++ b/tcl/board/xtensa-palladium-vdebug.cfg
@@ -13,4 +13,18 @@ reset_config trst_and_srst
adapter speed 50000
adapter srst delay 5
-source [find target/vd_xtensa_jtag.cfg]
+# Future improvement: Enable backdoor memory access
+# set _MEMSTART 0x00000000
+# set _MEMSIZE 0x100000
+
+# BFM hierarchical path and input clk period
+vdebug bfm_path Testbench.VJTAG 10ns
+
+# DMA Memories to access backdoor (up to 4)
+# vdebug mem_path tbench.u_mcu.u_sys.u_itcm_ram.Mem $_MEMSTART $_MEMSIZE
+
+# Create Xtensa target first
+source [find target/xtensa.cfg]
+
+# Configure Xtensa core parameters next
+# Generate [xtensa-core-XXX.cfg] via "xt-gdb --dump-oocd-config"
diff --git a/tcl/target/xtensa-core-nxp_rt600.cfg b/tcl/target/xtensa-core-nxp_rt600.cfg
index abd961e..ca7fd68 100644
--- a/tcl/target/xtensa-core-nxp_rt600.cfg
+++ b/tcl/target/xtensa-core-nxp_rt600.cfg
@@ -2,246 +2,254 @@
# OpenOCD configuration file for Xtensa HiFi DSP in NXP RT600 target
+# Core instance default definition
+if { [info exists XTNAME] } {
+ set _XTNAME $XTNAME
+} else {
+ set _XTNAME xtensa.cpu
+}
+
+
# Core definition and ABI
-xtensa xtdef LX
-xtensa xtopt arnum 32
-xtensa xtopt windowed 1
+$_XTNAME xtensa xtdef LX
+$_XTNAME xtensa xtopt arnum 32
+$_XTNAME xtensa xtopt windowed 1
# Exception/Interrupt Options
-xtensa xtopt exceptions 1
-xtensa xtopt hipriints 1
-xtensa xtopt intlevels 4
-xtensa xtopt excmlevel 2
+$_XTNAME xtensa xtopt exceptions 1
+$_XTNAME xtensa xtopt hipriints 1
+$_XTNAME xtensa xtopt intlevels 4
+$_XTNAME xtensa xtopt excmlevel 2
# Cache Options
-xtensa xtmem icache 256 32768 4
-xtensa xtmem dcache 256 65536 4 1
+$_XTNAME xtensa xtmem icache 256 32768 4
+$_XTNAME xtensa xtmem dcache 256 65536 4 1
# Memory Options
-xtensa xtmem iram 0x24020000 65536
-xtensa xtmem dram 0x24000000 65536
-xtensa xtmem sram 0x00000000 603979776
+$_XTNAME xtensa xtmem iram 0x24020000 65536
+$_XTNAME xtensa xtmem dram 0x24000000 65536
+$_XTNAME xtensa xtmem sram 0x00000000 603979776
# Memory Protection/Translation Options
# Debug Options
-xtensa xtopt debuglevel 4
-xtensa xtopt ibreaknum 2
-xtensa xtopt dbreaknum 2
+$_XTNAME xtensa xtopt debuglevel 4
+$_XTNAME xtensa xtopt ibreaknum 2
+$_XTNAME xtensa xtopt dbreaknum 2
# Core Registers
-xtensa xtregs 208
-xtensa xtreg pc 0x0020
-xtensa xtreg ar0 0x0100
-xtensa xtreg ar1 0x0101
-xtensa xtreg ar2 0x0102
-xtensa xtreg ar3 0x0103
-xtensa xtreg ar4 0x0104
-xtensa xtreg ar5 0x0105
-xtensa xtreg ar6 0x0106
-xtensa xtreg ar7 0x0107
-xtensa xtreg ar8 0x0108
-xtensa xtreg ar9 0x0109
-xtensa xtreg ar10 0x010a
-xtensa xtreg ar11 0x010b
-xtensa xtreg ar12 0x010c
-xtensa xtreg ar13 0x010d
-xtensa xtreg ar14 0x010e
-xtensa xtreg ar15 0x010f
-xtensa xtreg ar16 0x0110
-xtensa xtreg ar17 0x0111
-xtensa xtreg ar18 0x0112
-xtensa xtreg ar19 0x0113
-xtensa xtreg ar20 0x0114
-xtensa xtreg ar21 0x0115
-xtensa xtreg ar22 0x0116
-xtensa xtreg ar23 0x0117
-xtensa xtreg ar24 0x0118
-xtensa xtreg ar25 0x0119
-xtensa xtreg ar26 0x011a
-xtensa xtreg ar27 0x011b
-xtensa xtreg ar28 0x011c
-xtensa xtreg ar29 0x011d
-xtensa xtreg ar30 0x011e
-xtensa xtreg ar31 0x011f
-xtensa xtreg lbeg 0x0200
-xtensa xtreg lend 0x0201
-xtensa xtreg lcount 0x0202
-xtensa xtreg sar 0x0203
-xtensa xtreg prefctl 0x0228
-xtensa xtreg windowbase 0x0248
-xtensa xtreg windowstart 0x0249
-xtensa xtreg configid0 0x02b0
-xtensa xtreg configid1 0x02d0
-xtensa xtreg ps 0x02e6
-xtensa xtreg threadptr 0x03e7
-xtensa xtreg br 0x0204
-xtensa xtreg scompare1 0x020c
-xtensa xtreg acclo 0x0210
-xtensa xtreg acchi 0x0211
-xtensa xtreg m0 0x0220
-xtensa xtreg m1 0x0221
-xtensa xtreg m2 0x0222
-xtensa xtreg m3 0x0223
-xtensa xtreg expstate 0x03e6
-xtensa xtreg f64r_lo 0x03ea
-xtensa xtreg f64r_hi 0x03eb
-xtensa xtreg f64s 0x03ec
-xtensa xtreg ae_ovf_sar 0x03f0
-xtensa xtreg ae_bithead 0x03f1
-xtensa xtreg ae_ts_fts_bu_bp 0x03f2
-xtensa xtreg ae_cw_sd_no 0x03f3
-xtensa xtreg ae_cbegin0 0x03f6
-xtensa xtreg ae_cend0 0x03f7
-xtensa xtreg ae_cbegin1 0x03f8
-xtensa xtreg ae_cend1 0x03f9
-xtensa xtreg aed0 0x1010
-xtensa xtreg aed1 0x1011
-xtensa xtreg aed2 0x1012
-xtensa xtreg aed3 0x1013
-xtensa xtreg aed4 0x1014
-xtensa xtreg aed5 0x1015
-xtensa xtreg aed6 0x1016
-xtensa xtreg aed7 0x1017
-xtensa xtreg aed8 0x1018
-xtensa xtreg aed9 0x1019
-xtensa xtreg aed10 0x101a
-xtensa xtreg aed11 0x101b
-xtensa xtreg aed12 0x101c
-xtensa xtreg aed13 0x101d
-xtensa xtreg aed14 0x101e
-xtensa xtreg aed15 0x101f
-xtensa xtreg u0 0x1020
-xtensa xtreg u1 0x1021
-xtensa xtreg u2 0x1022
-xtensa xtreg u3 0x1023
-xtensa xtreg aep0 0x1024
-xtensa xtreg aep1 0x1025
-xtensa xtreg aep2 0x1026
-xtensa xtreg aep3 0x1027
-xtensa xtreg fcr_fsr 0x1029
-xtensa xtreg mmid 0x0259
-xtensa xtreg ibreakenable 0x0260
-xtensa xtreg memctl 0x0261
-xtensa xtreg atomctl 0x0263
-xtensa xtreg ddr 0x0268
-xtensa xtreg ibreaka0 0x0280
-xtensa xtreg ibreaka1 0x0281
-xtensa xtreg dbreaka0 0x0290
-xtensa xtreg dbreaka1 0x0291
-xtensa xtreg dbreakc0 0x02a0
-xtensa xtreg dbreakc1 0x02a1
-xtensa xtreg epc1 0x02b1
-xtensa xtreg epc2 0x02b2
-xtensa xtreg epc3 0x02b3
-xtensa xtreg epc4 0x02b4
-xtensa xtreg epc5 0x02b5
-xtensa xtreg depc 0x02c0
-xtensa xtreg eps2 0x02c2
-xtensa xtreg eps3 0x02c3
-xtensa xtreg eps4 0x02c4
-xtensa xtreg eps5 0x02c5
-xtensa xtreg excsave1 0x02d1
-xtensa xtreg excsave2 0x02d2
-xtensa xtreg excsave3 0x02d3
-xtensa xtreg excsave4 0x02d4
-xtensa xtreg excsave5 0x02d5
-xtensa xtreg cpenable 0x02e0
-xtensa xtreg interrupt 0x02e2
-xtensa xtreg intset 0x02e2
-xtensa xtreg intclear 0x02e3
-xtensa xtreg intenable 0x02e4
-xtensa xtreg vecbase 0x02e7
-xtensa xtreg exccause 0x02e8
-xtensa xtreg debugcause 0x02e9
-xtensa xtreg ccount 0x02ea
-xtensa xtreg prid 0x02eb
-xtensa xtreg icount 0x02ec
-xtensa xtreg icountlevel 0x02ed
-xtensa xtreg excvaddr 0x02ee
-xtensa xtreg ccompare0 0x02f0
-xtensa xtreg ccompare1 0x02f1
-xtensa xtreg misc0 0x02f4
-xtensa xtreg misc1 0x02f5
-xtensa xtreg pwrctl 0x2024
-xtensa xtreg pwrstat 0x2025
-xtensa xtreg eristat 0x2026
-xtensa xtreg cs_itctrl 0x2027
-xtensa xtreg cs_claimset 0x2028
-xtensa xtreg cs_claimclr 0x2029
-xtensa xtreg cs_lockaccess 0x202a
-xtensa xtreg cs_lockstatus 0x202b
-xtensa xtreg cs_authstatus 0x202c
-xtensa xtreg pmg 0x203b
-xtensa xtreg pmpc 0x203c
-xtensa xtreg pm0 0x203d
-xtensa xtreg pm1 0x203e
-xtensa xtreg pmctrl0 0x203f
-xtensa xtreg pmctrl1 0x2040
-xtensa xtreg pmstat0 0x2041
-xtensa xtreg pmstat1 0x2042
-xtensa xtreg ocdid 0x2043
-xtensa xtreg ocd_dcrclr 0x2044
-xtensa xtreg ocd_dcrset 0x2045
-xtensa xtreg ocd_dsr 0x2046
-xtensa xtreg a0 0x0000
-xtensa xtreg a1 0x0001
-xtensa xtreg a2 0x0002
-xtensa xtreg a3 0x0003
-xtensa xtreg a4 0x0004
-xtensa xtreg a5 0x0005
-xtensa xtreg a6 0x0006
-xtensa xtreg a7 0x0007
-xtensa xtreg a8 0x0008
-xtensa xtreg a9 0x0009
-xtensa xtreg a10 0x000a
-xtensa xtreg a11 0x000b
-xtensa xtreg a12 0x000c
-xtensa xtreg a13 0x000d
-xtensa xtreg a14 0x000e
-xtensa xtreg a15 0x000f
-xtensa xtreg b0 0x0010
-xtensa xtreg b1 0x0011
-xtensa xtreg b2 0x0012
-xtensa xtreg b3 0x0013
-xtensa xtreg b4 0x0014
-xtensa xtreg b5 0x0015
-xtensa xtreg b6 0x0016
-xtensa xtreg b7 0x0017
-xtensa xtreg b8 0x0018
-xtensa xtreg b9 0x0019
-xtensa xtreg b10 0x001a
-xtensa xtreg b11 0x001b
-xtensa xtreg b12 0x001c
-xtensa xtreg b13 0x001d
-xtensa xtreg b14 0x001e
-xtensa xtreg b15 0x001f
-xtensa xtreg psintlevel 0x2006
-xtensa xtreg psum 0x2007
-xtensa xtreg pswoe 0x2008
-xtensa xtreg psexcm 0x2009
-xtensa xtreg pscallinc 0x200a
-xtensa xtreg psowb 0x200b
-xtensa xtreg acc 0x200c
-xtensa xtreg dbnum 0x2011
-xtensa xtreg ae_overflow 0x2014
-xtensa xtreg ae_sar 0x2015
-xtensa xtreg ae_cwrap 0x2016
-xtensa xtreg ae_bitptr 0x2017
-xtensa xtreg ae_bitsused 0x2018
-xtensa xtreg ae_tablesize 0x2019
-xtensa xtreg ae_first_ts 0x201a
-xtensa xtreg ae_nextoffset 0x201b
-xtensa xtreg ae_searchdone 0x201c
-xtensa xtreg roundmode 0x201d
-xtensa xtreg invalidflag 0x201e
-xtensa xtreg divzeroflag 0x201f
-xtensa xtreg overflowflag 0x2020
-xtensa xtreg underflowflag 0x2021
-xtensa xtreg inexactflag 0x2022
+$_XTNAME xtensa xtregs 208
+$_XTNAME xtensa xtreg pc 0x0020
+$_XTNAME xtensa xtreg ar0 0x0100
+$_XTNAME xtensa xtreg ar1 0x0101
+$_XTNAME xtensa xtreg ar2 0x0102
+$_XTNAME xtensa xtreg ar3 0x0103
+$_XTNAME xtensa xtreg ar4 0x0104
+$_XTNAME xtensa xtreg ar5 0x0105
+$_XTNAME xtensa xtreg ar6 0x0106
+$_XTNAME xtensa xtreg ar7 0x0107
+$_XTNAME xtensa xtreg ar8 0x0108
+$_XTNAME xtensa xtreg ar9 0x0109
+$_XTNAME xtensa xtreg ar10 0x010a
+$_XTNAME xtensa xtreg ar11 0x010b
+$_XTNAME xtensa xtreg ar12 0x010c
+$_XTNAME xtensa xtreg ar13 0x010d
+$_XTNAME xtensa xtreg ar14 0x010e
+$_XTNAME xtensa xtreg ar15 0x010f
+$_XTNAME xtensa xtreg ar16 0x0110
+$_XTNAME xtensa xtreg ar17 0x0111
+$_XTNAME xtensa xtreg ar18 0x0112
+$_XTNAME xtensa xtreg ar19 0x0113
+$_XTNAME xtensa xtreg ar20 0x0114
+$_XTNAME xtensa xtreg ar21 0x0115
+$_XTNAME xtensa xtreg ar22 0x0116
+$_XTNAME xtensa xtreg ar23 0x0117
+$_XTNAME xtensa xtreg ar24 0x0118
+$_XTNAME xtensa xtreg ar25 0x0119
+$_XTNAME xtensa xtreg ar26 0x011a
+$_XTNAME xtensa xtreg ar27 0x011b
+$_XTNAME xtensa xtreg ar28 0x011c
+$_XTNAME xtensa xtreg ar29 0x011d
+$_XTNAME xtensa xtreg ar30 0x011e
+$_XTNAME xtensa xtreg ar31 0x011f
+$_XTNAME xtensa xtreg lbeg 0x0200
+$_XTNAME xtensa xtreg lend 0x0201
+$_XTNAME xtensa xtreg lcount 0x0202
+$_XTNAME xtensa xtreg sar 0x0203
+$_XTNAME xtensa xtreg prefctl 0x0228
+$_XTNAME xtensa xtreg windowbase 0x0248
+$_XTNAME xtensa xtreg windowstart 0x0249
+$_XTNAME xtensa xtreg configid0 0x02b0
+$_XTNAME xtensa xtreg configid1 0x02d0
+$_XTNAME xtensa xtreg ps 0x02e6
+$_XTNAME xtensa xtreg threadptr 0x03e7
+$_XTNAME xtensa xtreg br 0x0204
+$_XTNAME xtensa xtreg scompare1 0x020c
+$_XTNAME xtensa xtreg acclo 0x0210
+$_XTNAME xtensa xtreg acchi 0x0211
+$_XTNAME xtensa xtreg m0 0x0220
+$_XTNAME xtensa xtreg m1 0x0221
+$_XTNAME xtensa xtreg m2 0x0222
+$_XTNAME xtensa xtreg m3 0x0223
+$_XTNAME xtensa xtreg expstate 0x03e6
+$_XTNAME xtensa xtreg f64r_lo 0x03ea
+$_XTNAME xtensa xtreg f64r_hi 0x03eb
+$_XTNAME xtensa xtreg f64s 0x03ec
+$_XTNAME xtensa xtreg ae_ovf_sar 0x03f0
+$_XTNAME xtensa xtreg ae_bithead 0x03f1
+$_XTNAME xtensa xtreg ae_ts_fts_bu_bp 0x03f2
+$_XTNAME xtensa xtreg ae_cw_sd_no 0x03f3
+$_XTNAME xtensa xtreg ae_cbegin0 0x03f6
+$_XTNAME xtensa xtreg ae_cend0 0x03f7
+$_XTNAME xtensa xtreg ae_cbegin1 0x03f8
+$_XTNAME xtensa xtreg ae_cend1 0x03f9
+$_XTNAME xtensa xtreg aed0 0x1010
+$_XTNAME xtensa xtreg aed1 0x1011
+$_XTNAME xtensa xtreg aed2 0x1012
+$_XTNAME xtensa xtreg aed3 0x1013
+$_XTNAME xtensa xtreg aed4 0x1014
+$_XTNAME xtensa xtreg aed5 0x1015
+$_XTNAME xtensa xtreg aed6 0x1016
+$_XTNAME xtensa xtreg aed7 0x1017
+$_XTNAME xtensa xtreg aed8 0x1018
+$_XTNAME xtensa xtreg aed9 0x1019
+$_XTNAME xtensa xtreg aed10 0x101a
+$_XTNAME xtensa xtreg aed11 0x101b
+$_XTNAME xtensa xtreg aed12 0x101c
+$_XTNAME xtensa xtreg aed13 0x101d
+$_XTNAME xtensa xtreg aed14 0x101e
+$_XTNAME xtensa xtreg aed15 0x101f
+$_XTNAME xtensa xtreg u0 0x1020
+$_XTNAME xtensa xtreg u1 0x1021
+$_XTNAME xtensa xtreg u2 0x1022
+$_XTNAME xtensa xtreg u3 0x1023
+$_XTNAME xtensa xtreg aep0 0x1024
+$_XTNAME xtensa xtreg aep1 0x1025
+$_XTNAME xtensa xtreg aep2 0x1026
+$_XTNAME xtensa xtreg aep3 0x1027
+$_XTNAME xtensa xtreg fcr_fsr 0x1029
+$_XTNAME xtensa xtreg mmid 0x0259
+$_XTNAME xtensa xtreg ibreakenable 0x0260
+$_XTNAME xtensa xtreg memctl 0x0261
+$_XTNAME xtensa xtreg atomctl 0x0263
+$_XTNAME xtensa xtreg ddr 0x0268
+$_XTNAME xtensa xtreg ibreaka0 0x0280
+$_XTNAME xtensa xtreg ibreaka1 0x0281
+$_XTNAME xtensa xtreg dbreaka0 0x0290
+$_XTNAME xtensa xtreg dbreaka1 0x0291
+$_XTNAME xtensa xtreg dbreakc0 0x02a0
+$_XTNAME xtensa xtreg dbreakc1 0x02a1
+$_XTNAME xtensa xtreg epc1 0x02b1
+$_XTNAME xtensa xtreg epc2 0x02b2
+$_XTNAME xtensa xtreg epc3 0x02b3
+$_XTNAME xtensa xtreg epc4 0x02b4
+$_XTNAME xtensa xtreg epc5 0x02b5
+$_XTNAME xtensa xtreg depc 0x02c0
+$_XTNAME xtensa xtreg eps2 0x02c2
+$_XTNAME xtensa xtreg eps3 0x02c3
+$_XTNAME xtensa xtreg eps4 0x02c4
+$_XTNAME xtensa xtreg eps5 0x02c5
+$_XTNAME xtensa xtreg excsave1 0x02d1
+$_XTNAME xtensa xtreg excsave2 0x02d2
+$_XTNAME xtensa xtreg excsave3 0x02d3
+$_XTNAME xtensa xtreg excsave4 0x02d4
+$_XTNAME xtensa xtreg excsave5 0x02d5
+$_XTNAME xtensa xtreg cpenable 0x02e0
+$_XTNAME xtensa xtreg interrupt 0x02e2
+$_XTNAME xtensa xtreg intset 0x02e2
+$_XTNAME xtensa xtreg intclear 0x02e3
+$_XTNAME xtensa xtreg intenable 0x02e4
+$_XTNAME xtensa xtreg vecbase 0x02e7
+$_XTNAME xtensa xtreg exccause 0x02e8
+$_XTNAME xtensa xtreg debugcause 0x02e9
+$_XTNAME xtensa xtreg ccount 0x02ea
+$_XTNAME xtensa xtreg prid 0x02eb
+$_XTNAME xtensa xtreg icount 0x02ec
+$_XTNAME xtensa xtreg icountlevel 0x02ed
+$_XTNAME xtensa xtreg excvaddr 0x02ee
+$_XTNAME xtensa xtreg ccompare0 0x02f0
+$_XTNAME xtensa xtreg ccompare1 0x02f1
+$_XTNAME xtensa xtreg misc0 0x02f4
+$_XTNAME xtensa xtreg misc1 0x02f5
+$_XTNAME xtensa xtreg pwrctl 0x2024
+$_XTNAME xtensa xtreg pwrstat 0x2025
+$_XTNAME xtensa xtreg eristat 0x2026
+$_XTNAME xtensa xtreg cs_itctrl 0x2027
+$_XTNAME xtensa xtreg cs_claimset 0x2028
+$_XTNAME xtensa xtreg cs_claimclr 0x2029
+$_XTNAME xtensa xtreg cs_lockaccess 0x202a
+$_XTNAME xtensa xtreg cs_lockstatus 0x202b
+$_XTNAME xtensa xtreg cs_authstatus 0x202c
+$_XTNAME xtensa xtreg pmg 0x203b
+$_XTNAME xtensa xtreg pmpc 0x203c
+$_XTNAME xtensa xtreg pm0 0x203d
+$_XTNAME xtensa xtreg pm1 0x203e
+$_XTNAME xtensa xtreg pmctrl0 0x203f
+$_XTNAME xtensa xtreg pmctrl1 0x2040
+$_XTNAME xtensa xtreg pmstat0 0x2041
+$_XTNAME xtensa xtreg pmstat1 0x2042
+$_XTNAME xtensa xtreg ocdid 0x2043
+$_XTNAME xtensa xtreg ocd_dcrclr 0x2044
+$_XTNAME xtensa xtreg ocd_dcrset 0x2045
+$_XTNAME xtensa xtreg ocd_dsr 0x2046
+$_XTNAME xtensa xtreg a0 0x0000
+$_XTNAME xtensa xtreg a1 0x0001
+$_XTNAME xtensa xtreg a2 0x0002
+$_XTNAME xtensa xtreg a3 0x0003
+$_XTNAME xtensa xtreg a4 0x0004
+$_XTNAME xtensa xtreg a5 0x0005
+$_XTNAME xtensa xtreg a6 0x0006
+$_XTNAME xtensa xtreg a7 0x0007
+$_XTNAME xtensa xtreg a8 0x0008
+$_XTNAME xtensa xtreg a9 0x0009
+$_XTNAME xtensa xtreg a10 0x000a
+$_XTNAME xtensa xtreg a11 0x000b
+$_XTNAME xtensa xtreg a12 0x000c
+$_XTNAME xtensa xtreg a13 0x000d
+$_XTNAME xtensa xtreg a14 0x000e
+$_XTNAME xtensa xtreg a15 0x000f
+$_XTNAME xtensa xtreg b0 0x0010
+$_XTNAME xtensa xtreg b1 0x0011
+$_XTNAME xtensa xtreg b2 0x0012
+$_XTNAME xtensa xtreg b3 0x0013
+$_XTNAME xtensa xtreg b4 0x0014
+$_XTNAME xtensa xtreg b5 0x0015
+$_XTNAME xtensa xtreg b6 0x0016
+$_XTNAME xtensa xtreg b7 0x0017
+$_XTNAME xtensa xtreg b8 0x0018
+$_XTNAME xtensa xtreg b9 0x0019
+$_XTNAME xtensa xtreg b10 0x001a
+$_XTNAME xtensa xtreg b11 0x001b
+$_XTNAME xtensa xtreg b12 0x001c
+$_XTNAME xtensa xtreg b13 0x001d
+$_XTNAME xtensa xtreg b14 0x001e
+$_XTNAME xtensa xtreg b15 0x001f
+$_XTNAME xtensa xtreg psintlevel 0x2006
+$_XTNAME xtensa xtreg psum 0x2007
+$_XTNAME xtensa xtreg pswoe 0x2008
+$_XTNAME xtensa xtreg psexcm 0x2009
+$_XTNAME xtensa xtreg pscallinc 0x200a
+$_XTNAME xtensa xtreg psowb 0x200b
+$_XTNAME xtensa xtreg acc 0x200c
+$_XTNAME xtensa xtreg dbnum 0x2011
+$_XTNAME xtensa xtreg ae_overflow 0x2014
+$_XTNAME xtensa xtreg ae_sar 0x2015
+$_XTNAME xtensa xtreg ae_cwrap 0x2016
+$_XTNAME xtensa xtreg ae_bitptr 0x2017
+$_XTNAME xtensa xtreg ae_bitsused 0x2018
+$_XTNAME xtensa xtreg ae_tablesize 0x2019
+$_XTNAME xtensa xtreg ae_first_ts 0x201a
+$_XTNAME xtensa xtreg ae_nextoffset 0x201b
+$_XTNAME xtensa xtreg ae_searchdone 0x201c
+$_XTNAME xtensa xtreg roundmode 0x201d
+$_XTNAME xtensa xtreg invalidflag 0x201e
+$_XTNAME xtensa xtreg divzeroflag 0x201f
+$_XTNAME xtensa xtreg overflowflag 0x2020
+$_XTNAME xtensa xtreg underflowflag 0x2021
+$_XTNAME xtensa xtreg inexactflag 0x2022
diff --git a/tcl/target/xtensa-core-xt8.cfg b/tcl/target/xtensa-core-xt8.cfg
index e544d78..523dc74 100644
--- a/tcl/target/xtensa-core-xt8.cfg
+++ b/tcl/target/xtensa-core-xt8.cfg
@@ -1,166 +1,175 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# OpenOCD configuration file for Xtensa xt8 target
+
+# Core instance default definition
+if { [info exists XTNAME] } {
+ set _XTNAME $XTNAME
+} else {
+ set _XTNAME xtensa
+}
+
+
# Core definition and ABI
-xtensa xtdef LX
-xtensa xtopt arnum 32
-xtensa xtopt windowed 1
+$_XTNAME xtensa xtdef LX
+$_XTNAME xtensa xtopt arnum 32
+$_XTNAME xtensa xtopt windowed 1
# Exception/Interrupt Options
-xtensa xtopt exceptions 1
-xtensa xtopt hipriints 1
-xtensa xtopt intlevels 3
-xtensa xtopt excmlevel 1
+$_XTNAME xtensa xtopt exceptions 1
+$_XTNAME xtensa xtopt hipriints 1
+$_XTNAME xtensa xtopt intlevels 3
+$_XTNAME xtensa xtopt excmlevel 1
# Cache Options
-xtensa xtmem icache 16 1024 1
-xtensa xtmem dcache 16 1024 1 1
+$_XTNAME xtensa xtmem icache 16 1024 1
+$_XTNAME xtensa xtmem dcache 16 1024 1 1
# Memory Options
-xtensa xtmem iram 0x40000000 1048576
-xtensa xtmem dram 0x3ff00000 262144
-xtensa xtmem srom 0x50000000 131072
-xtensa xtmem sram 0x60000000 4194304
+$_XTNAME xtensa xtmem iram 0x40000000 1048576
+$_XTNAME xtensa xtmem dram 0x3ff00000 262144
+$_XTNAME xtensa xtmem srom 0x50000000 131072
+$_XTNAME xtensa xtmem sram 0x60000000 4194304
# Memory Protection/Translation Options
# Debug Options
-xtensa xtopt debuglevel 3
-xtensa xtopt ibreaknum 2
-xtensa xtopt dbreaknum 2
+$_XTNAME xtensa xtopt debuglevel 3
+$_XTNAME xtensa xtopt ibreaknum 2
+$_XTNAME xtensa xtopt dbreaknum 2
# Core Registers
-xtensa xtregs 127
-xtensa xtreg a0 0x0000
-xtensa xtreg a1 0x0001
-xtensa xtreg a2 0x0002
-xtensa xtreg a3 0x0003
-xtensa xtreg a4 0x0004
-xtensa xtreg a5 0x0005
-xtensa xtreg a6 0x0006
-xtensa xtreg a7 0x0007
-xtensa xtreg a8 0x0008
-xtensa xtreg a9 0x0009
-xtensa xtreg a10 0x000a
-xtensa xtreg a11 0x000b
-xtensa xtreg a12 0x000c
-xtensa xtreg a13 0x000d
-xtensa xtreg a14 0x000e
-xtensa xtreg a15 0x000f
-xtensa xtreg pc 0x0020
-xtensa xtreg ar0 0x0100
-xtensa xtreg ar1 0x0101
-xtensa xtreg ar2 0x0102
-xtensa xtreg ar3 0x0103
-xtensa xtreg ar4 0x0104
-xtensa xtreg ar5 0x0105
-xtensa xtreg ar6 0x0106
-xtensa xtreg ar7 0x0107
-xtensa xtreg ar8 0x0108
-xtensa xtreg ar9 0x0109
-xtensa xtreg ar10 0x010a
-xtensa xtreg ar11 0x010b
-xtensa xtreg ar12 0x010c
-xtensa xtreg ar13 0x010d
-xtensa xtreg ar14 0x010e
-xtensa xtreg ar15 0x010f
-xtensa xtreg ar16 0x0110
-xtensa xtreg ar17 0x0111
-xtensa xtreg ar18 0x0112
-xtensa xtreg ar19 0x0113
-xtensa xtreg ar20 0x0114
-xtensa xtreg ar21 0x0115
-xtensa xtreg ar22 0x0116
-xtensa xtreg ar23 0x0117
-xtensa xtreg ar24 0x0118
-xtensa xtreg ar25 0x0119
-xtensa xtreg ar26 0x011a
-xtensa xtreg ar27 0x011b
-xtensa xtreg ar28 0x011c
-xtensa xtreg ar29 0x011d
-xtensa xtreg ar30 0x011e
-xtensa xtreg ar31 0x011f
-xtensa xtreg lbeg 0x0200
-xtensa xtreg lend 0x0201
-xtensa xtreg lcount 0x0202
-xtensa xtreg sar 0x0203
-xtensa xtreg windowbase 0x0248
-xtensa xtreg windowstart 0x0249
-xtensa xtreg configid0 0x02b0
-xtensa xtreg configid1 0x02d0
-xtensa xtreg ps 0x02e6
-xtensa xtreg expstate 0x03e6
-xtensa xtreg mmid 0x0259
-xtensa xtreg ibreakenable 0x0260
-xtensa xtreg ddr 0x0268
-xtensa xtreg ibreaka0 0x0280
-xtensa xtreg ibreaka1 0x0281
-xtensa xtreg dbreaka0 0x0290
-xtensa xtreg dbreaka1 0x0291
-xtensa xtreg dbreakc0 0x02a0
-xtensa xtreg dbreakc1 0x02a1
-xtensa xtreg epc1 0x02b1
-xtensa xtreg epc2 0x02b2
-xtensa xtreg epc3 0x02b3
-xtensa xtreg depc 0x02c0
-xtensa xtreg eps2 0x02c2
-xtensa xtreg eps3 0x02c3
-xtensa xtreg excsave1 0x02d1
-xtensa xtreg excsave2 0x02d2
-xtensa xtreg excsave3 0x02d3
-xtensa xtreg interrupt 0x02e2
-xtensa xtreg intset 0x02e2
-xtensa xtreg intclear 0x02e3
-xtensa xtreg intenable 0x02e4
-xtensa xtreg exccause 0x02e8
-xtensa xtreg debugcause 0x02e9
-xtensa xtreg ccount 0x02ea
-xtensa xtreg icount 0x02ec
-xtensa xtreg icountlevel 0x02ed
-xtensa xtreg excvaddr 0x02ee
-xtensa xtreg ccompare0 0x02f0
-xtensa xtreg ccompare1 0x02f1
-xtensa xtreg pwrctl 0x200f
-xtensa xtreg pwrstat 0x2010
-xtensa xtreg eristat 0x2011
-xtensa xtreg cs_itctrl 0x2012
-xtensa xtreg cs_claimset 0x2013
-xtensa xtreg cs_claimclr 0x2014
-xtensa xtreg cs_lockaccess 0x2015
-xtensa xtreg cs_lockstatus 0x2016
-xtensa xtreg cs_authstatus 0x2017
-xtensa xtreg fault_info 0x2026
-xtensa xtreg trax_id 0x2027
-xtensa xtreg trax_control 0x2028
-xtensa xtreg trax_status 0x2029
-xtensa xtreg trax_data 0x202a
-xtensa xtreg trax_address 0x202b
-xtensa xtreg trax_pctrigger 0x202c
-xtensa xtreg trax_pcmatch 0x202d
-xtensa xtreg trax_delay 0x202e
-xtensa xtreg trax_memstart 0x202f
-xtensa xtreg trax_memend 0x2030
-xtensa xtreg pmg 0x203e
-xtensa xtreg pmpc 0x203f
-xtensa xtreg pm0 0x2040
-xtensa xtreg pm1 0x2041
-xtensa xtreg pmctrl0 0x2042
-xtensa xtreg pmctrl1 0x2043
-xtensa xtreg pmstat0 0x2044
-xtensa xtreg pmstat1 0x2045
-xtensa xtreg ocdid 0x2046
-xtensa xtreg ocd_dcrclr 0x2047
-xtensa xtreg ocd_dcrset 0x2048
-xtensa xtreg ocd_dsr 0x2049
-xtensa xtreg psintlevel 0x2003
-xtensa xtreg psum 0x2004
-xtensa xtreg pswoe 0x2005
-xtensa xtreg psexcm 0x2006
-xtensa xtreg pscallinc 0x2007
-xtensa xtreg psowb 0x2008
+$_XTNAME xtensa xtregs 127
+$_XTNAME xtensa xtreg a0 0x0000
+$_XTNAME xtensa xtreg a1 0x0001
+$_XTNAME xtensa xtreg a2 0x0002
+$_XTNAME xtensa xtreg a3 0x0003
+$_XTNAME xtensa xtreg a4 0x0004
+$_XTNAME xtensa xtreg a5 0x0005
+$_XTNAME xtensa xtreg a6 0x0006
+$_XTNAME xtensa xtreg a7 0x0007
+$_XTNAME xtensa xtreg a8 0x0008
+$_XTNAME xtensa xtreg a9 0x0009
+$_XTNAME xtensa xtreg a10 0x000a
+$_XTNAME xtensa xtreg a11 0x000b
+$_XTNAME xtensa xtreg a12 0x000c
+$_XTNAME xtensa xtreg a13 0x000d
+$_XTNAME xtensa xtreg a14 0x000e
+$_XTNAME xtensa xtreg a15 0x000f
+$_XTNAME xtensa xtreg pc 0x0020
+$_XTNAME xtensa xtreg ar0 0x0100
+$_XTNAME xtensa xtreg ar1 0x0101
+$_XTNAME xtensa xtreg ar2 0x0102
+$_XTNAME xtensa xtreg ar3 0x0103
+$_XTNAME xtensa xtreg ar4 0x0104
+$_XTNAME xtensa xtreg ar5 0x0105
+$_XTNAME xtensa xtreg ar6 0x0106
+$_XTNAME xtensa xtreg ar7 0x0107
+$_XTNAME xtensa xtreg ar8 0x0108
+$_XTNAME xtensa xtreg ar9 0x0109
+$_XTNAME xtensa xtreg ar10 0x010a
+$_XTNAME xtensa xtreg ar11 0x010b
+$_XTNAME xtensa xtreg ar12 0x010c
+$_XTNAME xtensa xtreg ar13 0x010d
+$_XTNAME xtensa xtreg ar14 0x010e
+$_XTNAME xtensa xtreg ar15 0x010f
+$_XTNAME xtensa xtreg ar16 0x0110
+$_XTNAME xtensa xtreg ar17 0x0111
+$_XTNAME xtensa xtreg ar18 0x0112
+$_XTNAME xtensa xtreg ar19 0x0113
+$_XTNAME xtensa xtreg ar20 0x0114
+$_XTNAME xtensa xtreg ar21 0x0115
+$_XTNAME xtensa xtreg ar22 0x0116
+$_XTNAME xtensa xtreg ar23 0x0117
+$_XTNAME xtensa xtreg ar24 0x0118
+$_XTNAME xtensa xtreg ar25 0x0119
+$_XTNAME xtensa xtreg ar26 0x011a
+$_XTNAME xtensa xtreg ar27 0x011b
+$_XTNAME xtensa xtreg ar28 0x011c
+$_XTNAME xtensa xtreg ar29 0x011d
+$_XTNAME xtensa xtreg ar30 0x011e
+$_XTNAME xtensa xtreg ar31 0x011f
+$_XTNAME xtensa xtreg lbeg 0x0200
+$_XTNAME xtensa xtreg lend 0x0201
+$_XTNAME xtensa xtreg lcount 0x0202
+$_XTNAME xtensa xtreg sar 0x0203
+$_XTNAME xtensa xtreg windowbase 0x0248
+$_XTNAME xtensa xtreg windowstart 0x0249
+$_XTNAME xtensa xtreg configid0 0x02b0
+$_XTNAME xtensa xtreg configid1 0x02d0
+$_XTNAME xtensa xtreg ps 0x02e6
+$_XTNAME xtensa xtreg expstate 0x03e6
+$_XTNAME xtensa xtreg mmid 0x0259
+$_XTNAME xtensa xtreg ibreakenable 0x0260
+$_XTNAME xtensa xtreg ddr 0x0268
+$_XTNAME xtensa xtreg ibreaka0 0x0280
+$_XTNAME xtensa xtreg ibreaka1 0x0281
+$_XTNAME xtensa xtreg dbreaka0 0x0290
+$_XTNAME xtensa xtreg dbreaka1 0x0291
+$_XTNAME xtensa xtreg dbreakc0 0x02a0
+$_XTNAME xtensa xtreg dbreakc1 0x02a1
+$_XTNAME xtensa xtreg epc1 0x02b1
+$_XTNAME xtensa xtreg epc2 0x02b2
+$_XTNAME xtensa xtreg epc3 0x02b3
+$_XTNAME xtensa xtreg depc 0x02c0
+$_XTNAME xtensa xtreg eps2 0x02c2
+$_XTNAME xtensa xtreg eps3 0x02c3
+$_XTNAME xtensa xtreg excsave1 0x02d1
+$_XTNAME xtensa xtreg excsave2 0x02d2
+$_XTNAME xtensa xtreg excsave3 0x02d3
+$_XTNAME xtensa xtreg interrupt 0x02e2
+$_XTNAME xtensa xtreg intset 0x02e2
+$_XTNAME xtensa xtreg intclear 0x02e3
+$_XTNAME xtensa xtreg intenable 0x02e4
+$_XTNAME xtensa xtreg exccause 0x02e8
+$_XTNAME xtensa xtreg debugcause 0x02e9
+$_XTNAME xtensa xtreg ccount 0x02ea
+$_XTNAME xtensa xtreg icount 0x02ec
+$_XTNAME xtensa xtreg icountlevel 0x02ed
+$_XTNAME xtensa xtreg excvaddr 0x02ee
+$_XTNAME xtensa xtreg ccompare0 0x02f0
+$_XTNAME xtensa xtreg ccompare1 0x02f1
+$_XTNAME xtensa xtreg pwrctl 0x200f
+$_XTNAME xtensa xtreg pwrstat 0x2010
+$_XTNAME xtensa xtreg eristat 0x2011
+$_XTNAME xtensa xtreg cs_itctrl 0x2012
+$_XTNAME xtensa xtreg cs_claimset 0x2013
+$_XTNAME xtensa xtreg cs_claimclr 0x2014
+$_XTNAME xtensa xtreg cs_lockaccess 0x2015
+$_XTNAME xtensa xtreg cs_lockstatus 0x2016
+$_XTNAME xtensa xtreg cs_authstatus 0x2017
+$_XTNAME xtensa xtreg fault_info 0x2026
+$_XTNAME xtensa xtreg trax_id 0x2027
+$_XTNAME xtensa xtreg trax_control 0x2028
+$_XTNAME xtensa xtreg trax_status 0x2029
+$_XTNAME xtensa xtreg trax_data 0x202a
+$_XTNAME xtensa xtreg trax_address 0x202b
+$_XTNAME xtensa xtreg trax_pctrigger 0x202c
+$_XTNAME xtensa xtreg trax_pcmatch 0x202d
+$_XTNAME xtensa xtreg trax_delay 0x202e
+$_XTNAME xtensa xtreg trax_memstart 0x202f
+$_XTNAME xtensa xtreg trax_memend 0x2030
+$_XTNAME xtensa xtreg pmg 0x203e
+$_XTNAME xtensa xtreg pmpc 0x203f
+$_XTNAME xtensa xtreg pm0 0x2040
+$_XTNAME xtensa xtreg pm1 0x2041
+$_XTNAME xtensa xtreg pmctrl0 0x2042
+$_XTNAME xtensa xtreg pmctrl1 0x2043
+$_XTNAME xtensa xtreg pmstat0 0x2044
+$_XTNAME xtensa xtreg pmstat1 0x2045
+$_XTNAME xtensa xtreg ocdid 0x2046
+$_XTNAME xtensa xtreg ocd_dcrclr 0x2047
+$_XTNAME xtensa xtreg ocd_dcrset 0x2048
+$_XTNAME xtensa xtreg ocd_dsr 0x2049
+$_XTNAME xtensa xtreg psintlevel 0x2003
+$_XTNAME xtensa xtreg psum 0x2004
+$_XTNAME xtensa xtreg pswoe 0x2005
+$_XTNAME xtensa xtreg psexcm 0x2006
+$_XTNAME xtensa xtreg pscallinc 0x2007
+$_XTNAME xtensa xtreg psowb 0x2008
diff --git a/tcl/target/xtensa.cfg b/tcl/target/xtensa.cfg
index 101e135..561131d 100644
--- a/tcl/target/xtensa.cfg
+++ b/tcl/target/xtensa.cfg
@@ -5,7 +5,7 @@
set xtensa_ids { 0x120034e5 0x120134e5
0x209034e5 0x209134e5 0x209234e5 0x209334e5 0x209434e5 0x209534e5 0x209634e5 0x209734e5
0x20a034e5 0x20a134e5 0x20a234e5 0x20a334e5 0x20a434e5 0x20a534e5 0x20a634e5 0x20a734e5 0x20a834e5
- 0x20b034e5 }
+ 0x20b034e5 0x20b33ac5 0x20b33ac7 }
set expected_xtensa_ids {}
foreach i $xtensa_ids {
lappend expected_xtensa_ids -expected-id $i
@@ -23,6 +23,12 @@ if { [info exists CPUTAPID] } {
set _CPUTAPARGLIST [join $expected_xtensa_ids]
}
+if { [info exists XTENSA_NUM_CORES] } {
+ set _XTENSA_NUM_CORES $XTENSA_NUM_CORES
+} else {
+ set _XTENSA_NUM_CORES 1
+}
+
set _TARGETNAME $_CHIPNAME
set _CPU0NAME cpu
set _TAPNAME $_CHIPNAME.$_CPU0NAME
@@ -40,12 +46,25 @@ if { [info exists XTENSA_DAP] } {
} else {
target create $_TARGETNAME xtensa -dap $_CHIPNAME.dap
}
-} else {
+} elseif { $_XTENSA_NUM_CORES > 1 } {
# JTAG direct (without DAP)
+ for {set i 0} {$i < $_XTENSA_NUM_CORES} {incr i} {
+ set _LCPUNAME $_CPU0NAME$i
+ set _LTAPNAME $_CHIPNAME.$_LCPUNAME
+ eval jtag newtap $_CHIPNAME $_LCPUNAME -irlen 5 $_CPUTAPARGLIST
+ target create $_LTAPNAME xtensa -chain-position $_LTAPNAME -coreid $i
+
+ $_LTAPNAME configure -event reset-assert-post { soft_reset_halt }
+ }
+} else {
+ # JTAG direct (without DAP) - for legacy xtensa-config-XXX.cfg format
eval jtag newtap $_CHIPNAME $_CPU0NAME -irlen 5 $_CPUTAPARGLIST
target create $_TARGETNAME xtensa -chain-position $_TAPNAME
}
-$_TARGETNAME configure -event reset-assert-post { soft_reset_halt }
+if { $_XTENSA_NUM_CORES == 1 } {
+ # DAP and single-core legacy JTAG
+ $_TARGETNAME configure -event reset-assert-post { soft_reset_halt }
+}
gdb_report_register_access_error enable