Changes

808 bytes added ,  20:39, 31 December 2018
no edit summary
Line 483: Line 483:  
| 0x04
 
| 0x04
 
|-
 
|-
| TSEC_SCP_AES_STAT
+
| [[#TSEC_SCP_AES_STAT|TSEC_SCP_AES_STAT]]
 
| 0x54501458
 
| 0x54501458
 
| 0x04
 
| 0x04
Line 1,492: Line 1,492:  
  0x0140: cenc (fuc5 opcode 0xD0)
 
  0x0140: cenc (fuc5 opcode 0xD0)
 
  0x0150: cdec (fuc5 opcode 0xD4)
 
  0x0150: cdec (fuc5 opcode 0xD4)
  0x0160: csigunk (fuc5 opcode 0xD8)
+
  0x0160: csigauth (fuc5 opcode 0xD8)
 
  0x0170: csigenc (fuc5 opcode 0xDC)
 
  0x0170: csigenc (fuc5 opcode 0xDC)
 
  0x0180: csigclr (fuc5 opcode 0xE0)
 
  0x0180: csigclr (fuc5 opcode 0xE0)
Line 1,501: Line 1,501:     
Contains information on the last crypto instruction executed.
 
Contains information on the last crypto instruction executed.
 +
 +
== TSEC_SCP_AES_STAT ==
 +
{| class="wikitable" border="1"
 +
!  Bits
 +
!  Description
 +
|-
 +
| 0-4
 +
| First opcode
 +
|-
 +
| 5-9
 +
| Second opcode
 +
|-
 +
| 15-16
 +
| AES operation
 +
0: Encryption
 +
1: Decryption
 +
2: Key expansion
 +
3: Key reverse expansion
 +
|}
 +
 +
Contains information on the last AES sequence executed.
    
=== TSEC_SCP_IRQSTAT ===
 
=== TSEC_SCP_IRQSTAT ===
Line 2,909: Line 2,930:     
Exit from Authenticated Mode must poke a special register before leaving authenticated code pages and a failure to do this would result in the Falcon core halting. Every Falcon based unit (TSEC, NVDEC, VIC) must map this register in their engine-specific subset of registers. In TSEC's case, the register is [[#TSEC_SCP_CTL_MODE|TSEC_SCP_CTL_MODE]].
 
Exit from Authenticated Mode must poke a special register before leaving authenticated code pages and a failure to do this would result in the Falcon core halting. Every Falcon based unit (TSEC, NVDEC, VIC) must map this register in their engine-specific subset of registers. In TSEC's case, the register is [[#TSEC_SCP_CTL_MODE|TSEC_SCP_CTL_MODE]].
 +
 +
=== csigauth ===
 +
<code>00000000: f5 3c XY d8    csigauth $cY $cX</code>
 +
 +
This instruction takes 2 crypto registers as operands and is automatically executed when jumping to a code region previously uploaded as secret.
 +
 +
Under certain circumstances, it is possible to observe this instruction being briefly written to [[#TSEC_SCP_INSN_STAT|TSEC_SCP_INSN_STAT]] as "csigauth $c4 $c6" while the opcodes in [[#TSEC_SCP_AES_STAT|TSEC_SCP_AES_STAT]] are set to "cxsin" and "csigauth", respectively.
    
=== csigclr ===
 
=== csigclr ===