diff --git a/debug_module.tex b/debug_module.tex index f870005f..1eee2ff0 100644 --- a/debug_module.tex +++ b/debug_module.tex @@ -311,41 +311,6 @@ \section{Halt Groups, Resume Groups, and External Triggers} \label{hrgroups} explicitly allowed. In that case it must be possible to discover the groups by using \RdmDmcsTwo even if it's not possible to change the configuration. -\section{Message Registers} -\label{sec:mr} - -Message Registers (MRs) are registers that implement fewer features than a -traditional register. They support just enough features to pass messages back -and forth. - -Only registers whose description explicitly says they may be MRs may be -implemented as MRs instead of traditional registers. \RdmDataZero through -\RdmDataEleven may be MRs, used to let the debugger pass arguments to abstract -commands, and let the DM pass results from abstract commands back. Debuggers -must not assume that they'll be able to read back a value that they wrote to a -register that may be an MR. - -A traditional dual-ported register contains a single value, which can be -read/written through both ports. A MR has two ports: PortA and PortB. It -contains two values: ValueA and ValueB. Only one of these values has defined -contents at any one time. - -\begin{steps}{For an MR:} - \item A write to PortA updates ValueA with the written value, and makes - ValueB \unspecified. - \item A write to PortB updates ValueB with the written value, and makes - ValueA \unspecified. - \item A read from PortA returns ValueB. - \item A read from PortB returns ValueA. -\end{steps} - -\begin{commentary} - A regular register can be used to implement an MR. In some FPGAs it is - cheaper to trade off storage for muxes, and in that case the storage can be - duplicated (one set of bits for sending and one for receiving) to avoid - having to implement muxes to read/write data from/to the correct side. -\end{commentary} - \section{Abstract Commands} \label{abstractcommands} The DM supports a set of abstract commands, most of which @@ -375,12 +340,12 @@ \section{Abstract Commands} \label{abstractcommands} unavailable, or because they encounter an error during execution. If the command takes arguments, the debugger -must write them to the {\tt data} MRs before writing to \RdmCommand. If a +must write them to the {\tt data} registers before writing to \RdmCommand. If a command returns results, the Debug Module must ensure they are placed -in the {\tt data} MRs before \FdmAbstractcsBusy is cleared. -Which {\tt data} MRs are used for the arguments is +in the {\tt data} registers before \FdmAbstractcsBusy is cleared. +Which {\tt data} registers are used for the arguments is described in Table~\ref{tab:datareg}. In all cases the least-significant word -is placed in the lowest-numbered {\tt data} MR. The argument width +is placed in the lowest-numbered {\tt data} register. The argument width depends on the command being executed, and is DXLEN where not explicitly specified. diff --git a/introduction.tex b/introduction.tex index 21dcbe93..68da96eb 100644 --- a/introduction.tex +++ b/introduction.tex @@ -67,8 +67,6 @@ \section{Terminology} \item[Minimal RISC-V Debug Specification] A subset of the full Debug Specification that allows for very small implementations. See Chapter~\ref{chap:dm}. - \item[MR] - Message Register, described in Section~\ref{sec:mr}. \item[NAPOT] Naturally Aligned Power-Of-Two. \item[NMI] @@ -216,10 +214,7 @@ \subsubsection{Incompatible Changes During 1.0 Stable} called 1.0 stable.} \item \FcsrItriggerNmi was moved from \RcsrEtrigger to \RcsrItrigger, and is now subject to the mode bits in that trigger. -\item DM {\tt data} registers are now Message Registers (see -Section~\ref{sec:mr}). Debuggers must not assume they can read back the same -value that they wrote, and must not assume that the result of the last abstract -command is available as argument to the next abstract command. \PR{728} +\item \PR{728} introduced Message Registers, which were later removed in \PR{878}. \item It may not be possible to read the contents of the Program Buffer using the {\tt progbuf} registers. \PR{731} \end{steps} diff --git a/xml/abstract_commands.xml b/xml/abstract_commands.xml index 8a277dbf..402b074e 100644 --- a/xml/abstract_commands.xml +++ b/xml/abstract_commands.xml @@ -258,10 +258,6 @@ {\tt arg1} (which contains the address used) by the number of bytes encoded in \FacAccessmemoryAamsize. - Implementations that allow this bit to be 1 must implement the - relevant {\tt data} registers as traditional registers instead of - MRs. - Supporting this variant is optional, but highly recommended for performance reasons. diff --git a/xml/dm_registers.xml b/xml/dm_registers.xml index 149a644e..2b370b2e 100755 --- a/xml/dm_registers.xml +++ b/xml/dm_registers.xml @@ -394,9 +394,6 @@ If \FdmHartinfoDataaccess is 1: Number of 32-bit words in the memory map dedicated to shadowing the {\tt data} registers. - If this value is non-zero, then the {tt data} registers must be - traditional registers and not MRs. - Since there are at most 12 {\tt data} registers, the value in this register must be 12 or smaller. @@ -640,8 +637,7 @@ - \RdmDataZero through \RdmDataEleven may be Message Registers, whose - behavior is described in Section~\ref{sec:mr}. These registers may + \RdmDataZero through \RdmDataEleven are registers that may be read or changed by abstract commands. \FdmAbstractcsDatacount indicates how many of them are implemented, starting at \RdmDataZero, counting up. Table~\ref{tab:datareg} shows how abstract commands use these