summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorPokechu22 <Pokechu022@gmail.com>2021-08-10 14:18:42 -0700
committerPokechu22 <Pokechu022@gmail.com>2021-08-21 16:03:50 -0700
commitb99fbf7e9c8359bdfa6149af1f01f9617b52bc1b (patch)
treeb0e187113ea06da70a0c6a160e6677aa94352821 /docs
parent6df892dca768cdca6a16b21859711bb5a7486a04 (diff)
docs/DSP: Sort hardware registers by address
The actual documentation for registers is not changed in this commit; nor are any new registers added. This is purely to make later diffs more readable.
Diffstat (limited to 'docs')
-rw-r--r--docs/DSP/GameCube_DSP_Users_Manual/GameCube_DSP_Users_Manual.tex128
1 files changed, 64 insertions, 64 deletions
diff --git a/docs/DSP/GameCube_DSP_Users_Manual/GameCube_DSP_Users_Manual.tex b/docs/DSP/GameCube_DSP_Users_Manual/GameCube_DSP_Users_Manual.tex
index dcf8c18e2c..4eb5d9d05e 100644
--- a/docs/DSP/GameCube_DSP_Users_Manual/GameCube_DSP_Users_Manual.tex
+++ b/docs/DSP/GameCube_DSP_Users_Manual/GameCube_DSP_Users_Manual.tex
@@ -616,17 +616,12 @@ Hardware registers occupy the address space at \Address{0xFFxx} in DSP memory sp
\begin{tabular}{|l|l|l|}
\hline
\textbf{Address} & \textbf{Name} & \textbf{Description} \\ \hline
-\multicolumn{3}{|l|}{\textit{Mailboxes}} \\ \hline
-\Address{0xFFFE} & \Register{CMBH} & CPU Mailbox H \\ \hline
-\Address{0xFFFF} & \Register{CMBL} & CPU Mailbox L \\ \hline
-\Address{0xFFFC} & \Register{DMBH} & DSP Mailbox H \\ \hline
-\Address{0xFFFD} & \Register{DMBL} & DSP Mailbox L \\ \hline
\multicolumn{3}{|l|}{\textit{DMA Interface}} \\ \hline
-\Address{0xFFCE} & \Register{DSMAH} & Memory address H \\ \hline
-\Address{0xFFCF} & \Register{DSMAL} & Memory address L \\ \hline
-\Address{0xFFCD} & \Register{DSPA} & DSP memory address \\ \hline
\Address{0xFFC9} & \Register{DSCR} & DMA control \\ \hline
\Address{0xFFCB} & \Register{DSBL} & Block size \\ \hline
+\Address{0xFFCD} & \Register{DSPA} & DSP memory address \\ \hline
+\Address{0xFFCE} & \Register{DSMAH} & Memory address H \\ \hline
+\Address{0xFFCF} & \Register{DSMAL} & Memory address L \\ \hline
\multicolumn{3}{|l|}{\textit{Accelerator}} \\ \hline
\Address{0xFFD4} & \Register{ACSAH} & Accelerator start address H \\ \hline
\Address{0xFFD5} & \Register{ACSAL} & Accelerator start address L \\ \hline
@@ -637,59 +632,76 @@ Hardware registers occupy the address space at \Address{0xFFxx} in DSP memory sp
\Address{0xFFDD} & \Register{ACDAT} & Accelerator data \\ \hline
\multicolumn{3}{|l|}{\textit{Interrupts}} \\ \hline
\Address{0xFFFB} & \Register{DIRQ} & IRQ request \\ \hline
+\multicolumn{3}{|l|}{\textit{Mailboxes}} \\ \hline
+\Address{0xFFFC} & \Register{DMBH} & DSP Mailbox H \\ \hline
+\Address{0xFFFD} & \Register{DMBL} & DSP Mailbox L \\ \hline
+\Address{0xFFFE} & \Register{CMBH} & CPU Mailbox H \\ \hline
+\Address{0xFFFF} & \Register{CMBL} & CPU Mailbox L \\ \hline
\end{tabular}
\end{table}
\pagebreak{}
-\section{Interrupts}
+\section{DMA}
-The DSP can raise interrupts at the CPU. Interrupts are usually used to signal that a DSP mailbox has been filled with new data.
+The GameCube DSP is connected to the memory bus through a DMA channel. DMA can be used to transfer data between DSP memory (both instruction and data) and main memory.
-\RegisterBitOverview{0xFFFB}{DIRQ}{IRQ Request}{---- ---- ---- ---I}
+\RegisterBitOverview{0xFFC9}{DSCR}{DSP Address}{---- ---- ---- ----}
\begin{RegisterBitDescriptions}
-\RegisterBitDescription{0}{I}{W}{\Value{1} - Raise interrupt at CPU}
+\RegisterBitDescription{15--0}{d}{W}{}
\end{RegisterBitDescriptions}
-\pagebreak{}
+\RegisterBitOverview{0xFFCB}{DSBL}{DSP Address}{dddd dddd dddd dddd}
-\section{Mailboxes}
+\begin{RegisterBitDescriptions}
+\RegisterBitDescription{15--0}{d}{W}{Length in bytes to transfer. Writing to this register starts a DMA transfer.}
+\end{RegisterBitDescriptions}
-\subsection{CPU Mailbox}
+\RegisterBitOverview{0xFFCD}{DSPA}{DSP Address}{dddd dddd dddd dddd}
-The CPU Mailbox (CMB) is a register that allows sending 31 bits of information from the CPU to the DSP.
+\begin{RegisterBitDescriptions}
+\RegisterBitDescription{15--0}{d}{W}{Bits 15--0 of the DSP memory address}
+\end{RegisterBitDescriptions}
-\RegisterBitOverview{0xFFFE}{CMBH}{CPU Mailbox H}{Mddd dddd dddd dddd}
+\RegisterBitOverview{0xFFCE}{DSMAH}{Memory Address H}{dddd dddd dddd dddd}
\begin{RegisterBitDescriptions}
-\RegisterBitDescription{15}{M}{R}{
- \begin{tabular}[c]{@{}l@{}}
- \Value{1} - Mailbox contains mail from the CPU\\ \Value{0} - Mailbox empty
- \end{tabular}
-}
-\RegisterBitDescription{14--0}{d}{R}{Bits 30--16 of the mail sent from the CPU}
+\RegisterBitDescription{15--0}{d}{R}{Bits 31--16 of the main memory address}
\end{RegisterBitDescriptions}
-\RegisterBitOverview{0xFFFF}{CMBL}{CPU Mailbox L}{dddd dddd dddd dddd}
+\RegisterBitOverview{0xFFCF}{DSMAL}{Memory Address L}{dddd dddd dddd dddd}
\begin{RegisterBitDescriptions}
-\RegisterBitDescription{15--0}{d}{R}{
- Bits 15--0 of mail sent from the CPU. Reading of this register by the DSP causes the \RegisterField{CMBH.M}
- bit to be cleared.
-}
+\RegisterBitDescription{15--0}{d}{R}{Bits 15--0 of the main memory address}
\end{RegisterBitDescriptions}
-\textbf{Operation:}
+\pagebreak{}
-From the CPU side, software usually checks the \RegisterField{M} bit of \Register{CMBH}. It takes action only in the case that this bit is \Value{0}.
-Said action is to write \Register{CMBH} first and then \Register{CMBL}. After writing to \Register{CMBL}, the mail is ready to be received by the DSP.
+\section{Accelerator}
-From the DSP side, the DSP loops by probing the \RegisterField{M} bit. When this bit is \Value{1}, the DSP reads \Register{CMBH} first and then \Register{CMBL}.
-After reading \Register{CMBL}, \RegisterField{CMBH.M} will be cleared.
+The accelerator is used to transfer data from accelerator memory (ARAM) to DSP memory. The accelerator area can be marked with \Register{ACSA} (start) and \Register{ACEA} (end) addresses.
+Current address for the accelerator can be set or read from the \Register{ACCA} register. Reading from accelerator memory is done by reading from the \Register{ACDAT} register.
+This register contains data from ARAM pointed to by the \Register{ACCA} register.
+After reading the data, \Register{ACCA} is incremented by one.
+After \Register{ACCA} grows bigger than the area pointed to by \Register{ACEA}, it gets reset to a value from \Register{ACSA} and the \Exception{ACCOV} interrupt is generated.
\pagebreak{}
+\section{Interrupts}
+
+The DSP can raise interrupts at the CPU. Interrupts are usually used to signal that a DSP mailbox has been filled with new data.
+
+\RegisterBitOverview{0xFFFB}{DIRQ}{IRQ Request}{---- ---- ---- ---I}
+
+\begin{RegisterBitDescriptions}
+\RegisterBitDescription{0}{I}{W}{\Value{1} - Raise interrupt at CPU}
+\end{RegisterBitDescriptions}
+
+\pagebreak{}
+
+\section{Mailboxes}
+
\subsection{DSP Mailbox}
The DSP mailbox (DMB) is an interface to send 31 bits of information from the DSP to the CPU.
@@ -725,49 +737,37 @@ If the DSP does processing when the CPU receives a mail, then it waits for the \
\pagebreak{}
-\subsection{DMA}
-
-The GameCube DSP is connected to the memory bus through a DMA channel. DMA can be used to transfer data between DSP memory (both instruction and data) and main memory.
-
-\RegisterBitOverview{0xFFCE}{DSMAH}{Memory Address H}{dddd dddd dddd dddd}
-
-\begin{RegisterBitDescriptions}
-\RegisterBitDescription{15--0}{d}{R}{Bits 31--16 of the main memory address}
-\end{RegisterBitDescriptions}
-
-\RegisterBitOverview{0xFFCF}{DSMAL}{Memory Address L}{dddd dddd dddd dddd}
-
-\begin{RegisterBitDescriptions}
-\RegisterBitDescription{15--0}{d}{R}{Bits 15--0 of the main memory address}
-\end{RegisterBitDescriptions}
-
-\RegisterBitOverview{0xFFCD}{DSPA}{DSP Address}{dddd dddd dddd dddd}
+\subsection{CPU Mailbox}
-\begin{RegisterBitDescriptions}
-\RegisterBitDescription{15--0}{d}{W}{Bits 15--0 of the DSP memory address}
-\end{RegisterBitDescriptions}
+The CPU Mailbox (CMB) is a register that allows sending 31 bits of information from the CPU to the DSP.
-\RegisterBitOverview{0xFFCB}{DSBL}{DSP Address}{dddd dddd dddd dddd}
+\RegisterBitOverview{0xFFFE}{CMBH}{CPU Mailbox H}{Mddd dddd dddd dddd}
\begin{RegisterBitDescriptions}
-\RegisterBitDescription{15--0}{d}{W}{Length in bytes to transfer. Writing to this register starts a DMA transfer.}
+\RegisterBitDescription{15}{M}{R}{
+ \begin{tabular}[c]{@{}l@{}}
+ \Value{1} - Mailbox contains mail from the CPU\\ \Value{0} - Mailbox empty
+ \end{tabular}
+}
+\RegisterBitDescription{14--0}{d}{R}{Bits 30--16 of the mail sent from the CPU}
\end{RegisterBitDescriptions}
-\RegisterBitOverview{0xFFC9}{DSCR}{DSP Address}{---- ---- ---- ----}
+\RegisterBitOverview{0xFFFF}{CMBL}{CPU Mailbox L}{dddd dddd dddd dddd}
\begin{RegisterBitDescriptions}
-\RegisterBitDescription{15--0}{d}{W}{}
+\RegisterBitDescription{15--0}{d}{R}{
+ Bits 15--0 of mail sent from the CPU. Reading of this register by the DSP causes the \RegisterField{CMBH.M}
+ bit to be cleared.
+}
\end{RegisterBitDescriptions}
-\pagebreak{}
+\textbf{Operation:}
-\section{Accelerator}
+From the CPU side, software usually checks the \RegisterField{M} bit of \Register{CMBH}. It takes action only in the case that this bit is \Value{0}.
+Said action is to write \Register{CMBH} first and then \Register{CMBL}. After writing to \Register{CMBL}, the mail is ready to be received by the DSP.
-The accelerator is used to transfer data from accelerator memory (ARAM) to DSP memory. The accelerator area can be marked with \Register{ACSA} (start) and \Register{ACEA} (end) addresses.
-Current address for the accelerator can be set or read from the \Register{ACCA} register. Reading from accelerator memory is done by reading from the \Register{ACDAT} register.
-This register contains data from ARAM pointed to by the \Register{ACCA} register.
-After reading the data, \Register{ACCA} is incremented by one.
-After \Register{ACCA} grows bigger than the area pointed to by \Register{ACEA}, it gets reset to a value from \Register{ACSA} and the \Exception{ACCOV} interrupt is generated.
+From the DSP side, the DSP loops by probing the \RegisterField{M} bit. When this bit is \Value{1}, the DSP reads \Register{CMBH} first and then \Register{CMBL}.
+After reading \Register{CMBL}, \RegisterField{CMBH.M} will be cleared.
\pagebreak{}