Debug: Add mcontext/scontext registers for breakpoint qualification #2588
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related issue:
Type of change: feature request
Impact: API addition (no impact on existing code)
Development Phase: implementation
Release Notes
The Debug Spec defines
mcontext
andscontext
as CSRs that M-mode and S-mode OSs can write to when switching tasks. The OS writes a process ID or similar identifier to uniquely identify the incoming task or process. A debugger may choose to qualify breakpoints by requiring that eithermcontext
orscontext
(or both) match values programmed into thetextra
register of each breakpoint. This allows triggering on a virtual address that might be used by more than one process.mcontext
andscontext
have a secondary use as additional comparison registers that an M-mode or S-mode application can write to enable and disable breakpoints. So even if a core doesn't have S-mode,scontext
can still be a useful feature.This feature is enabled with
rocketCoreParams.mcontextWidth > 0
and/orrocketCoreParams.scontextWidth > 0
. The default is disabled.