The SPARC-V9 architecture differs from SPARC-V8 architecture in the following areas, expanded below: registers, alternate space access, byte order, and instruction set.
These registers have been deleted:
Table E–1
PSR |
Processor State Register |
TBR |
Trap Base Register |
WIM |
Window Invalid Mask |
These registers have been widened from 32 to 64 bits:
Table E–2
Integer registers |
|
All state registers |
FSR, PC, nPC, and Y |
FSR Floating-Point State Register: fcc1, fcc2, and fcc3 (added floating-point condition code) bits are added and the register widened to 64-bits.
These SPARC-V9 registers are within a SPARC-V8 register field:
Table E–3
CCR |
Condition Codes Register |
CWP |
Current Window Pointer |
PIL |
Processor Interrupt Level |
TBA |
Trap Base Address |
TT[MAXTL] |
Trap Type |
VER |
Version |
These are registers that have been added.
Table E–4
ASI |
Address Space Identifier |
CANRESTORE |
Restorable Windows |
CANSAVE |
Savable windows |
CLEANWIN |
Clean Windows |
FPRS |
Floating-point Register State |
OTHERWIN |
Other Windows |
PSTATE |
Processor State |
TICK |
Hardware clock tick-counter |
TL |
Trap Level |
TNPC[MAXTL] |
Trap Next Program Counter |
TPC[MAXTL] |
Trap Program Counter |
TSTATE[MAXTL] |
Trap State |
WSTATE |
Windows State |
Also, there are sixteen additional double-precision floating-point registers, f[32] .. f[62]. These registers overlap (and are aliased with) eight additional quad-precision floating-point registers, f[32] .. f[60]
The SPARC-V9, CWP register is decremented during a RESTORE instruction, and incremented during a SAVE instruction. This is the opposite of PSR.CWP's behavior in SPARC-V8. This change has no effect on nonprivileged instructions.
Load- and store-alternate instructions to one-half of the alternate spaces can now be included in user code. In SPARC-V9, loads and stores to ASIs 0016 .. 7f16 are privileged; those to ASIs 8016 .. FF16 are nonprivileged. In SPARC-V8, access to alternate address spaces is privileged.
SPARC-V9 supports both little- and big-endian byte orders for data accesses only; instruction accesses are always performed using big-endian byte order. In SPARC-V8, all data and instruction accesses are performed in big-endian byte order.