Commit Graph

12334 Commits

Author SHA1 Message Date
Evgeniy Naydanov a2f5da3289
Merge pull request #1161 from en-sc/en-sc/deassert-reset
target/riscv: avoid updating `target` if `ackhavereset` fails
2024-11-14 13:23:42 +03:00
Evgeniy Naydanov f7ea8245e6
Merge pull request #1160 from zqb-all/reduce-log
[NFC] target/riscv: remove LOG_ERROR when COMMAND check ARGC fail
2024-11-12 17:45:57 +03:00
Evgeniy Naydanov 784687d781 target/riscv: avoid updating `target` if `ackhavereset` fails
`target`'s `state` and `debug_reason` should not be updated in
`deassert_reset` if sending reset acknowledgment fails.

Change-Id: I86136fe829e7a7c6b69f718f0cf32322e40341b0
Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
2024-11-08 16:36:25 +03:00
Mark Zhuang e024f112e3 [NFC] target/riscv: remove LOG_ERROR when COMMAND check ARGC fail
Per current OpenOCD conventions, LOG_ERROR should not be printed
when ERROR_COMMAND_SYNTAX_ERROR is returned. OpenOCD will print
the command syntax to the user on its own.
2024-11-06 19:32:20 +08:00
Evgeniy Naydanov f9a1292716
Merge pull request #1154 from en-sc/en-sc/dcsr-ebreak-halt-on-reset
target/riscv: avoid unnecessary `dcsr.ebreak*` update on reset
2024-10-30 17:52:56 +03:00
Evgeniy Naydanov e3a47cae3e
Merge pull request #1156 from zqb-all/max-macro
[NFC] target/riscv: simplify code with MAX macros
2024-10-30 17:51:35 +03:00
Mark Zhuang b7708c84e6 [NFC] target/riscv: simplify code with MAX macros
slightly improves readability
2024-10-28 22:57:07 +08:00
Evgeniy Naydanov 9ff272e34b
Merge pull request #1149 from zqb-all/read-write-cross-page
riscv: fix read/write virtual memory across page boundaries
2024-10-28 14:40:13 +03:00
Evgeniy Naydanov 3fe20e7aa4 target/riscv: avoid unnecessary `dcsr.ebreak*` update on reset
There is no need to change if `dcsr.ebreak*` fields after a reset if a
user requested a configuration that will result `dcsr.ebreak*` field
values equal to reset values.

Change-Id: I2844d30aef8f735c7b37394ee422e9b3f04a2e3b
Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
2024-10-25 17:27:19 +03:00
Mark Zhuang 92d7a5798d [NFC] target/riscv: refactor riscv_read_memory,riscv_write_memory
Reduce duplicate code
2024-10-24 23:47:58 +08:00
Mark Zhuang 4a1bd80842 target/riscv: fix cross-page misaligned access when mmu not enabled
When mmu is disabled, simply call the physical read/write function
2024-10-24 23:47:48 +08:00
Mark Zhuang 593b377073 target/riscv: fix read/write virtual memory across page boundaries
When read/write virtual addresses cross page boundaries,
the physical addresses are not necessarily contiguous and
need to call virt2phys again.
2024-10-24 23:39:10 +08:00
Evgeniy Naydanov 7b4ad6f173
Merge pull request #1152 from fk-sc/translation-drivers
target/riscv: added translation drivers
2024-10-24 15:06:27 +03:00
Farid Khaydari 6a27d9fbc0 target/riscv: added translation drivers
Existing flags: 'enable_virtual' and 'enable_virt2phys' were
replaced with explicit translation drivers. Motivation:

(1) Having 'enable_virtual' and 'enable_virt2phys' flags set simultaneously
may cause double address translation which is unacceptable

(2) Flags were global for all targets which is wrong too

Signed-off-by: Farid Khaydari <f.khaydari@syntacore.com>
2024-10-23 12:36:29 +03:00
Evgeniy Naydanov bc68bd71a3
Merge pull request #1146 from en-sc/en-sc/select-dmi-bypass
target/riscv: check other TAPs in `select_dmi()`
2024-10-18 12:37:31 +03:00
Evgeniy Naydanov 417ff401f8
Merge pull request #1150 from borneoa/riscv
target: riscv: convert 'unsigned' to 'unsigned int'
2024-10-17 11:10:42 +03:00
Evgeniy Naydanov f3ed0ab608 target/riscv: check other TAPs in `select_dmi()`
If some other TAP is not in BYPASS, an IR scan is needed to select
BYPASS on that TAP.

Change-Id: Iae425a415109b1a853db3718762661877eea56e8
Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
2024-10-16 13:42:48 +03:00
Antonio Borneo 89fb9211ec target: riscv: convert 'unsigned' to 'unsigned int'
Conversion done with
	checkpatch --fix-inplace -types UNSPECIFIED_INT

Change-Id: I62fad88dd33716c24154d44c5a23ae2c0f7c4a4c
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
2024-10-12 17:01:36 +02:00
Evgeniy Naydanov a4020f1a02
Merge pull request #1142 from en-sc/en-sc/from_upstream
Merge up to 1173473f66 from upstream
2024-10-08 14:17:57 +03:00
Evgeniy Naydanov 0a2c146440
Merge pull request #1140 from TommyMurphyTM1234/riscv
Fix `riscv013_invalidate_cached_progbuf()`
2024-10-04 16:39:32 +03:00
Evgeniy Naydanov e4f5489723
Merge pull request #1127 from sunnyzhu-learning/Songhe-develop
target/riscv: Mismatch napot when mcontrol.maskmax is not expected
2024-10-04 11:12:02 +03:00
Evgeniy Naydanov ec00140a10 Merge up to 1173473f66 from upstream
1ae6b07b45 replaced `buf_cmp()` with
`buf_eq()`, so a96a0a4e39 needs to be
adjusted.

Change-Id: I97f6a3518db9421dab2ae4dd2312f443e928b114
2024-10-03 21:48:18 +03:00
Tommy Murphy 16fa57da41 Fix riscv013_invalidate_cached_progbuf() off by one error
See https://github.com/riscv-collab/riscv-openocd/issues/1139
riscv013_invalidate_cached_progbuf() was failing to zeroize the final
buffer array element. Use memset() instead of a manual loop to zeroize
it in order to address this and simplify the code.
2024-10-03 09:37:28 +01:00
Matt Trescott 1173473f66 flash/nor/atsame5: add PIC32CX-SG device IDs
These devices are essentially the same as the E54 series with the
exception of immutable boot (SG41, SG61) and HSM (SG60, SG61), and some
bug fixes found only in E54 revision F. When the security features are
not enabled, they behave identically except for the different DIDs.

Signed-off-by: Matt Trescott <mtc@melexis.com>
Change-Id: Ic93313f3e20af0ed4a5768880d17b335a7b7bb04
Reviewed-on: https://review.openocd.org/c/openocd/+/8355
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
2024-10-01 04:00:05 +00:00
Evgeniy Naydanov 841b61adf3
Merge pull request #1134 from fk-sc/early-exit-support
target/riscv: early exit support for memory access operations
2024-09-30 10:49:35 +03:00
Evgeniy Naydanov 27220e4c85
Merge pull request #1136 from en-sc/en-sc/batch-logging
target/riscv: DMI logging improvements
2024-09-27 17:50:55 +03:00
Farid Khaydari 173086a651 target/riscv: early exit support for memory access operations
(1) Error code and 'skip_reason' string were replaced with memory access
    status. It allows to specify whether OpenOCD should exit the access
    early.
(2) Slightly refactored 'read_memory' and 'write_memory' functions.

Checkpatch-ignore: MACRO_ARG_PRECEDENCE, MULTISTATEMENT_MACRO_USE_DO_WHILE
Checkpatch-ignore: TRAILING_SEMICOLON
Signed-off-by: Farid Khaydari <f.khaydari@syntacore.com>
2024-09-27 12:27:11 +03:00
Evgeniy Naydanov f3302653a7
Merge pull request #1135 from borneoa/riscv
Move FD_SETSIZE to configure.ac
2024-09-26 12:30:19 +03:00
Evgeniy Naydanov 250aa20135 target/riscv: DMI logging improvements
Fixes #1043

There were multiple issuese with DMI logging:
1. Address was assumed to be the same (#1043).
2. Reported IDLE count was not affected by a reset of the delays.
3. VLA were used.

These issues are addressed in the commit.

Change-Id: I82f45505e8a62dfdd7dcb418784975fe10180109
Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
2024-09-26 12:25:28 +03:00
zhusonghe 85c836bfb0 target/riscv: Mismatch napot when mcontrol.maskmax is not expected
1.Remove trigger_request_info::tdata1_ignore_mask
2.Adding ignore napot matching condition

Signed-off-by: Songhe Zhu <zhusonghe@eswincomputing.com>
Reviewed-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
Reviewed-by: Jan Matyas <jan.matyas@codasip.com>
2024-09-25 17:34:07 +08:00
Evgeniy Naydanov 7f8c43a77d target/riscv: move `riscv_log_dmi_scan`
Change-Id: Iade30374331e9bde31a411b82056d47207cc39a8
Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
2024-09-23 18:28:51 +03:00
Antonio Borneo 54037d7b98 Move FD_SETSIZE to configure.ac
The commit from the pull request #644 sets the macro FD_SETSIZE to
128 for every host OS, while it is needed on Windows only.
Note that this macro has a much higher value on other OS and after
this commit it get reduced to 128 only.

Since in configure.ac is already present a hook to change the
compile defines for Windows, move there also FD_SETSIZE.

Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
2024-09-23 12:01:59 +02:00
Marc Schink ad21613618 server/telnet: Restructure commands
Use a command group 'telnet' with subcommands instead of individual
commands with 'telnet_' prefix. Even though there is only one subcommand
at the moment, make this change to ensure consistency with other commands.

The old command is still available to ensure backwards compatibility,
but are marked as deprecated.

Change-Id: I5e88632fa0d0ce5a8129e9fcf5ae743fc5b093cb
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: https://review.openocd.org/c/openocd/+/8378
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
2024-09-21 09:05:36 +00:00
Evgeniy Naydanov e6ade35305 server/gdb_server: improve error handling for `Z/z` packet
* Report errors for `z` packet.
* Report not supported types as required by GDB Remote Protocol's
  documentation:
  > Implementation notes: A remote target shall return an empty string
    for an unrecognized breakpoint or watchpoint packet type.

  Link: https://sourceware.org/gdb/current/onlinedocs/gdb.html/Packets.html#insert-breakpoint-or-watchpoint-packet

Change-Id: I9130400aca5dbc54fefb413ed74f27d75fe50640
Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8488
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
2024-09-21 09:05:02 +00:00
Jessica Clarke 1ae6b07b45 binarybuffer: Invert buf_cmp* return value and rename to buf_eq*
The current semantics are a bit confusing, as the return value looks
like memcmp (0/false being equal) but the bool return type means one
likely expects true to mean equal. Make this clearer by switching them
out for buf_eq* functions that do that instead.

Checkpatch-ignore: UNSPECIFIED_INT
Change-Id: Iee0c5af794316aab5327cb9c168051fabd3bc1cb
Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8490
Tested-by: jenkins
Reviewed-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
2024-09-21 09:04:06 +00:00
daniellizewski 5159c59915 src/rtos/rtos_nuttx_stackings.c: Fix stack alignment for cortex-m targets
Backtraces performed by GDB on any thread other than the current
thread would fail if hardware 8 byte ISR stack alignment
was enabled on cortex_m targets. Stack reads now adjust
the stored SP to account for a potential offset introduced by hardware.
Fixed incorrect register offsets for cortex_m Nuttx frames by reading
the TCB info symbols to determine correct offsets.
Fixed offsets can no longer be used since the offsets have changed
multiple times for different Nuttx versions.
Tested on nuttx-12.1.0.
Tested using custom stm32h7 board and custom s32k148 board variants.
Built with CONFIG_ARCH_FPU enabled and disabled to
test FPU and non FPU frame logic.

Change-Id: Ifcbeefb0ddcfbcb528daa9d1d95732ca9584c9ef
Signed-off-by: daniellizewski <daniellizewski@geotab.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8180
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
2024-09-21 09:02:59 +00:00
Peter Collingbourne b14f63e004 aarch64: Invalidate caches on reset
When a target is reset we must invalidate register caches in order
to avoid showing stale register values or writing them back to
registers. Use EDPRSR.SR to detect a previous reset, and EDPRSR.R to
detect a current reset state.

Change-Id: Ia1e97d7154cf7789d392274eee475733086a835b
Signed-off-by: Peter Collingbourne <pcc@google.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8425
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
2024-09-21 09:01:16 +00:00
Evgeniy Naydanov 3bed4c8015
Merge pull request #1132 from en-sc/en-sc/from_upstream
Merge up to fd7b66c5eb from upstream
2024-09-19 17:46:25 +03:00
Evgeniy Naydanov 90162b3250
Merge pull request #1130 from en-sc/en-sc/fix-reg-hide-warning
Revert "target/riscv: re-apply patch do stop avoid warnings when a no… …n-existent CSR is hidden"
2024-09-17 12:21:38 +03:00
Evgeniy Naydanov 4c45762d76 target/breakpoints: fix types in `watchpoint_add_internal()`
There was a conflict:
1. commit 2cd8ebf44d ("breakpoints: use 64-bit type for watchpoint mask
   and value")
2. commit 0bf3373e80 ("target/breakpoints: Use 'unsigned int' for
   length")

The second commit was created erlier, but merged later so the types of
`mask` and `value` became `uint32_t` in `watchpoint_add_internal()`.

This created a bug:
`WATCHPOINT_IGNORE_DATA_VALUE_MASK` is defined as `(~(uint64_t)0)`.
Truncation to uint32_t makes it so the comparisons with the constant
don't work.

Change-Id: I19c414c351f52aff72a60330d83c29db7bbca375
Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
2024-09-16 18:41:08 +03:00
Evgeniy Naydanov 269c57e376 Merge up to fd7b66c5eb from upstream
Backports the fix for #1131.

Commit 0bf3373 ("target/breakpoints: Use 'unsigned int' for length")
introduces a bug.
Link: https://review.openocd.org/c/openocd/+/7056/comment/3c4d9185_83614e2a/

Change-Id: I9f5f67050698a83c27f84965f6de031e2cad492d
2024-09-16 18:38:05 +03:00
Jessica Clarke fd7b66c5eb binarybuffer: Fix inverted return value in buf_cmp
This is the fast path for when there is a mismatch in the leading whole
bytes, which means we should return true to indicate not equal like all
the other cases here and in the surrounding functions. Otherwise we'll
incorrectly report _buf1 == _buf2 if and only if there are mismatches in
the leading whole bytes.

This was introduced during the refactor and optimisation referenced
below.

The only in-tree caller of this is jtag_check_value_inner, which will
just fail to catch some errors. However, downstream in riscv-openocd it
gets used in the riscv target to determine whether an IR scan is needed
to select the debug module, and with an IRLEN >= 8 this breaks resetting
if the encoding for the DMI isn't all-ones in its leading whole bytes
(to match BYPASS), since it will believe they are the same and not do an
IR scan, failing (with "At least one TAP shouldn't be in BYPASS mode")
in the subsequent DR scan due to the TAP still being recorded as having
bypass set (and really having an instruction of either BYPASS or
IDCODE).

Fixes: e4ee891759 ("improve buf_cmp and buf_cmp_mask helpers")
Change-Id: Ic4f7ed094429abc4c06a775eb847a8b3ddf2e2d6
Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8489
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Tested-by: jenkins
2024-09-15 09:22:44 +00:00
Marc Schink 63ca967032 README: Use proper Markdown syntax
The README file contains a mixture of Markdown and non-Markdown syntax.
Refurbish the document and use only Markdown syntax according to the
specification in [1].

[1] https://www.markdownguide.org/

Change-Id: If58f4e2971dc798a03a78841226804ab1f2d33c8
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: https://review.openocd.org/c/openocd/+/8387
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
2024-09-15 09:20:31 +00:00
Ian Thompson a9ba96f94a doc/xtensa: update supported architecture list
- Xtensa LX8 is fully supported in addition to prior LX and NX cores.

Change-Id: I2f3f0a21ce1518b3ced6d241f0ab84c65af64423
Signed-off-by: Ian Thompson <ianst@cadence.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8362
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
2024-09-15 09:19:23 +00:00
liangzhen 84d196673e tcl/target: Add SpacemiT Key Stone K1 config
Add basic connection details with Key Stone K1

Change-Id: I3e51d4194cfd3b7fe8ae395e0aca0fa4799dfb73
Signed-off-by: liangzhen <zhen.liang@spacemit.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8361
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
2024-09-15 09:18:35 +00:00
Antonio Borneo 0261cd9958 checkpatch: check for SPDX in linker scripts
Current script does not enforces the check for the SPDX tag in the
linker scripts.
Add the extension '.ld' in the OpenOCD specific part.

Change-Id: I1cb6bc52e9dd86d99a26393085c7e2c9e8bac11f
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8475
Tested-by: jenkins
2024-09-15 09:17:34 +00:00
Jiafei Pan 96924dda01 target: add imx8mp and evk board support
Have verified with JLink:
openocd -f interface/jlink.cfg -f board/nxp_imx8mp-evk.cfg
-c "gdb_breakpoint_override hard"

Change-Id: I74f8766b8c5334ca5758c2672c283ff2405de4c3
Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8352
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
2024-09-15 09:15:48 +00:00
Tomas Vanek ea28f96aa9 flash/nor/sfdp, stmqspi: use native type for buffer size
Two different sizes uint8_t and uint32_t was used for this value
without a good reason.

Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Change-Id: I4bb60cc5397ffd0d37e7034e3930e62793140c8d
Reviewed-on: https://review.openocd.org/c/openocd/+/8439
Reviewed-by: Andreas Bolsch <hyphen0break@gmail.com>
Tested-by: jenkins
2024-09-15 09:15:06 +00:00
Tomas Vanek 1dc3d7e8fe flash/nor/sfdp: expose SFDP_MAGIC in sfdp.h
Could be handy for dummy transfer size detection.

Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Change-Id: Ibb485218f6c2ff9066910bb58be0fc614b77add3
Reviewed-on: https://review.openocd.org/c/openocd/+/8438
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
Reviewed-by: Andreas Bolsch <hyphen0break@gmail.com>
2024-09-15 09:13:48 +00:00
Richard Allen 930ec2f439 target/espressif: add profiling function for ESP32-S3
Use the TRAX interface DEBUGPC if available.
Otherwise use default stop-and-go profiling.

ESP32-S3, before this patch:
	Internal: 8 samples/second
	FT2232H: 12 samples/second

After this patch:
	Internal: 18ksamples/second
	FT2232H: 100ksamples/second

Change-Id: I681f0bccf4263c1e24f38be511e3b3aec8bf4d60
Signed-off-by: Richard Allen <rsaxvc@rsaxvc.net>
Reviewed-on: https://review.openocd.org/c/openocd/+/8431
Reviewed-by: Erhan Kurubas <erhan.kurubas@espressif.com>
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Ian Thompson <ianst@cadence.com>
Reviewed-by: Yurii Shutkin <yurii.shutkin@gmail.com>
2024-09-15 09:13:05 +00:00