SPRAC71A March 2019 – February 2020
Implementations must not use the special-purpose registers for any purpose other than the dedicated special purpose. The remaining registers are general-purpose registers.
SP is the call stack pointer. The stack pointer must always remain properly aligned, even during hand-coded assembly functions (see Section 4.7.1). TMS320C28x requires alignment to 16-bit words. Stack management and the local frame structure is presented in Section 4.7.
The ABI designates the following as callee-saved registers. That is, a called function is expected to preserve them so they have the same value on return from a function as they had at the point of the call.
All other registers are caller-save registers. That is, they are not preserved across a call, so if their value is needed following the call, the caller is responsible for saving and restoring their contents.
| Register | Size | Description |
|---|---|---|
| ACC | 32 bits | Accumulator |
| AH | 16 bits | High half of ACC |
| AL | 16 bits | Low half of ACC |
| XAR0 | 16 bits | Auxiliary register 0 |
| XAR1 | 32 bits | Auxiliary register 1 |
| XAR2 | 32 bits | Auxiliary register 2 |
| XAR3 | 32 bits | Auxiliary register 3 |
| XAR4 | 32 bits | Auxiliary register 4 |
| XAR5 | 32 bits | Auxiliary register 5 |
| XAR6 | 32 bits | Auxiliary register 6 |
| XAR7 | 32 bits | Auxiliary register 7 |
| AR0 | 16 bits | Low half of XAR0 |
| AR1 | 16 bits | Low half of XAR1 |
| AR2 | 16 bits | Low half of XAR2 |
| AR3 | 16 bits | Low half of XAR3 |
| AR4 | 16 bits | Low half of XAR4 |
| AR5 | 16 bits | Low half of XAR5 |
| AR6 | 16 bits | Low half of XAR6 |
| AR7 | 16 bits | Low half of XAR7 |
| DP | 16 bits | Data-page pointer |
| IFR | 16 bits | Interrupt flag register |
| IER | 16 bits | Interrupt enable register |
| DBGIER | 16 bits | Debug interrupt enable register |
| P | 32 bits | Product register |
| PH | 16 bits | High half of P |
| PL | 16 bits | Low half of P |
| PC | 22 bits | Program counter |
| RPC | 22 bits | Return program counte |
| SP | 16 bits | Stack pointer |
| ST0 | 16 bits | Status register 0 |
| ST1 | 16 bits | Status register 1 |
| XT | 32 bits | Multiplicand register |
| T | 16 bits | High half of XT |
| TL | 16 bits | Low half of XT |
In addition, some devices have an FPU instruction set, which adds registers R0-R7.
Figure 3-1 shows the C28x registers. See the TMS320C28x DSP CPU and Instruction Set Reference Guide (SPRU430) for more information about the registers.
Figure 3-1 C28x Registers