diff options
| author | Pokechu22 <Pokechu022@gmail.com> | 2021-08-10 14:18:42 -0700 |
|---|---|---|
| committer | Pokechu22 <Pokechu022@gmail.com> | 2021-08-21 16:03:50 -0700 |
| commit | b99fbf7e9c8359bdfa6149af1f01f9617b52bc1b (patch) | |
| tree | b0e187113ea06da70a0c6a160e6677aa94352821 /docs | |
| parent | 6df892dca768cdca6a16b21859711bb5a7486a04 (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.tex | 128 |
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{} |
