POOL32B 001000 |
rt |
base |
SWC2 1000 |
0 0 |
offset |
6 |
5 |
5 |
4 |
1 |
11 |
SWC2 rt, offset(base) |
microMIPS |
Store Word from Coprocessor 2 |
Store Word from Coprocessor 2
To store a word from a COP2 register to memory
memory[GPR[base] + offset] = CPR[2,rt,0]
The low 32-bit word from COP2 (Coprocessor 2) register rt is stored in memory at the location specified by the aligned effective address. The signed offset is added to the contents of GPR base to form the effective address.
Pre-Release 6: An Address Error exception occurs if EffectiveAddress1..0 != 0 (not word-aligned).
Release 6 allows hardware to provide address misalignment support in lieu of requiring natural alignment.
Note: The pseudocode is not completely adapted for Release 6 misalignment support as the handling is implementation dependent.
Availability and Compatibility
This instruction has been recoded for Release 6.
vAddr = sign_extend(offset) + GPR[base] (pAddr, CCA) = AddressTranslation(vAddr, DATA, STORE) pAddr = pAddrPSIZE-1..3 || (pAddr2..0 xor (ReverseEndian || 02)) bytesel = vAddr2..0 xor (BigEndianCPU || 02) datadoubleword = CPR[2,rt,0]63-8*bytesel..0 || 08*bytesel StoreMemory(CCA, WORD, datadoubleword, pAddr, vAddr, DATA)
Coprocessor Unusable, Reserved Instruction, TLB Refill, TLB Invalid, TLB Modified, Address Error, Watch
As shown in the instruction drawing above, Release 6 implements an 11-bit offset, whereas all release levels lower than Release 6 of the MIPS architecture implement a 16-bit offset.