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>
This commit is contained in:
Ian Thompson 2024-01-18 16:10:26 -08:00 committed by Antonio Borneo
parent 151b743714
commit 3d3f823920
5 changed files with 455 additions and 372 deletions

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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