Line 3,574:
Line 3,574:
|-
|-
| 10
| 10
−
| Enable the [[#LOAD|LOAD]] interface
+
| Enable the [[#LOAD|LOAD]] block's interface
|-
|-
| 12
| 12
−
| Enable the [[#STORE|STORE]] interface
+
| Enable the [[#STORE|STORE]] block's interface
|-
|-
| 14
| 14
−
| Enable the [[#CMD|CMD]] interface
+
| Enable the [[#CMD|CMD]] block's interface
|-
|-
| 16
| 16
Line 3,595:
Line 3,595:
|-
|-
| 0
| 0
−
| Clear all [[#SEQ|SEQ]] block's instructions
+
| Clear [[#SEQ|SEQ]] block's pipeline
|-
|-
| 8
| 8
−
| Unknown
+
| Clear the main [[#SCP|SCP]] pipeline
|-
|-
| 11
| 11
Line 3,607:
Line 3,607:
|-
|-
| 16
| 16
−
| Enable [[#LOAD|LOAD]] interface's dummy mode (all reads return 0)
+
| Enable [[#LOAD|LOAD]] block's interface dummy mode (all reads return 0)
|-
|-
| 20
| 20
−
| Enable [[#LOAD|LOAD]] interface bypassing (all reads are dropped)
+
| Enable [[#LOAD|LOAD]] block's interface bypassing (all reads are dropped)
|-
|-
| 24
| 24
−
| Enable [[#STORE|STORE]] interface bypassing (all writes are dropped)
+
| Enable [[#STORE|STORE]] block's interface bypassing (all writes are dropped)
|}
|}
Line 3,675:
Line 3,675:
|-
|-
| 4
| 4
−
| Unknown
+
| [[#AES|AES]] block's endianness
+
0: Little
+
1: Big
|-
|-
| 8
| 8
−
| Flush the [[#CMD|CMD]] interface
+
| Flush [[#CMD|CMD]] block's pipeline
|-
|-
| 12-13
| 12-13
Line 3,766:
Line 3,768:
|-
|-
| 19-22
| 19-22
−
| [[#LOAD|LOAD]] interface's pipeline size
+
| [[#LOAD|LOAD]] block's pipeline size
|-
|-
| 23
| 23
−
| [[#LOAD|LOAD]] interface's current instruction is valid
+
| [[#LOAD|LOAD]] block's current operation is valid
|-
|-
| 24
| 24
−
| [[#LOAD|LOAD]] interface is running in HS mode
+
| [[#LOAD|LOAD]] block is running in HS mode
|-
|-
| 25-26
| 25-26
−
| [[#STORE|STORE]] interface's pipeline size
+
| [[#STORE|STORE]] block's pipeline size
|-
|-
| 30
| 30
−
| [[#STORE|STORE]] interface's current instruction is valid
+
| [[#STORE|STORE]] block's current operation is valid
|-
|-
| 31
| 31
−
| [[#STORE|STORE]] interface is running in HS mode
+
| [[#STORE|STORE]] block is running in HS mode
|}
|}
Line 3,862:
Line 3,864:
|-
|-
| 28
| 28
−
| [[#CMD|CMD]] interface's current instruction is valid
+
| [[#CMD|CMD]] block's current instruction is valid
|-
|-
| 31
| 31
−
| [[#CMD|CMD]] interface is running in HS mode
+
| [[#CMD|CMD]] block is running in HS mode
|}
|}
Line 3,879:
Line 3,881:
|-
|-
| 2
| 2
−
| [[#CMD|CMD]] interface is active
+
| [[#CMD|CMD]] block's interface is active
|-
|-
| 4
| 4
−
| [[#STORE|STORE]] interface is active
+
| [[#STORE|STORE]] block's interface is active
|-
|-
| 6
| 6
Line 3,891:
Line 3,893:
|-
|-
| 10
| 10
−
| [[#LOAD|LOAD]] interface is active
+
| [[#LOAD|LOAD]] block's interface is active
|-
|-
| 14
| 14
Line 3,915:
Line 3,917:
|-
|-
| 4
| 4
−
| [[#LOAD|LOAD]] interface is running in HS mode
+
| [[#LOAD|LOAD]] block's interface is running in HS mode
|-
|-
| 6
| 6
−
| [[#LOAD|LOAD]] interface is ready
+
| [[#LOAD|LOAD]] block's interface is ready
|-
|-
| 8
| 8
−
| [[#STORE|STORE]] interface is running in HS mode
+
| [[#STORE|STORE]] block's interface is running in HS mode
|-
|-
| 10
| 10
−
| [[#STORE|STORE]] interface received a valid instruction
+
| [[#STORE|STORE]] block's interface received a valid operation
|-
|-
| 12
| 12
−
| [[#CMD|CMD]] interface is running in HS mode
+
| [[#CMD|CMD]] block's interface is running in HS mode
|-
|-
| 14
| 14
−
| [[#CMD|CMD]] interface received a valid instruction
+
| [[#CMD|CMD]] block's interface received a valid instruction
|}
|}
Line 3,941:
Line 3,943:
|-
|-
| 0-4
| 0-4
−
| Current SEQ opcode
+
| Current [[#SEQ|SEQ]] block opcode
|-
|-
| 5-9
| 5-9
−
| Current CMD opcode
+
| Current [[#CMD|CMD]] block's interface opcode
|-
|-
| 10-14
| 10-14
−
| Pending CMD opcode
+
| Pending [[#CMD|CMD]] block opcode
|-
|-
| 15-16
| 15-16
−
| AES operation
+
| Current [[#AES|AES]] block operation
0: Encryption
0: Encryption
1: Decryption
1: Decryption
Line 3,960:
Line 3,962:
|-
|-
| 25
| 25
−
| STORE operation is stalled
+
| [[#STORE|STORE]] block is stalled
|-
|-
| 26
| 26
−
| LOAD operation is stalled
+
| [[#LOAD|LOAD]] block is stalled
|-
|-
| 27
| 27
−
| RNG operation is stalled
+
| [[#RNG|RNG]] block is stalled
|-
|-
| 28
| 28
Line 3,972:
Line 3,974:
|-
|-
| 29
| 29
−
| AES operation is stalled
+
| [[#AES|AES]] block is stalled
|}
|}
Line 3,983:
Line 3,985:
|-
|-
| 0
| 0
−
| Internal RND controller is ready
+
| [[#RND|RND]] block is ready
|-
|-
| 4-7
| 4-7
Line 4,016:
Line 4,018:
|-
|-
| 0
| 0
−
| RND ready
+
| [[#RND|RND]] ready
|-
|-
| 8
| 8
Line 4,025:
Line 4,027:
|-
|-
| 16
| 16
−
| CMD error
+
| [[#CMD|CMD]] error
|-
|-
| 20
| 20
Line 4,031:
Line 4,033:
|-
|-
| 24
| 24
−
| RND operation
+
| [[#RND|RND]] operation
|-
|-
| 28
| 28
Line 4,045:
Line 4,047:
|-
|-
| 0
| 0
−
| RND ready
+
| [[#RND|RND]] ready
|-
|-
| 8
| 8
Line 4,054:
Line 4,056:
|-
|-
| 16
| 16
−
| CMD error
+
| [[#CMD|CMD]] error
|-
|-
| 20
| 20
Line 4,060:
Line 4,062:
|-
|-
| 24
| 24
−
| RND operation
+
| [[#RND|RND]] operation
|-
|-
| 28
| 28
Line 4,133:
Line 4,135:
|-
|-
| 0
| 0
−
| Invalid command
+
| Invalid [[#CMD|CMD]] command
|-
|-
| 4
| 4
−
| Empty crypto sequence
+
| Empty [[#SEQ|SEQ]] sequence
|-
|-
| 8
| 8
−
| Crypto sequence is too long
+
| [[#SEQ|SEQ]] sequence is too long
|-
|-
| 12
| 12
−
| Crypto sequence was not finished
+
| [[#SEQ|SEQ]] sequence was not finished
|-
|-
| 16
| 16
Line 4,162:
Line 4,164:
|-
|-
| 0-31
| 0-31
−
| RND clock trigger lower limit
+
| [[#RND|RND]] clock trigger lower limit
|}
|}
Line 4,171:
Line 4,173:
|-
|-
| 0-15
| 0-15
−
| RND clock trigger upper limit
+
| [[#RND|RND]] clock trigger upper limit
|-
|-
| 16-31
| 16-31
−
| RND clock trigger mask
+
| [[#RND|RND]] clock trigger mask
|}
|}
Line 4,591:
Line 4,593:
Controls the Activity Monitor. Disconnected on the TSEC.
Controls the Activity Monitor. Disconnected on the TSEC.
−
=== TSEC_TFBIF_ACTMON_MCB_MASK ===
=== TSEC_TFBIF_ACTMON_MCB_MASK ===
Line 4,884:
Line 4,885:
| 0-7 || Start of region to authenticate (in pages of 0x100 bytes)
| 0-7 || Start of region to authenticate (in pages of 0x100 bytes)
|-
|-
−
| 16 || Mark all subsequent code transfers as secret
+
| 16 || Force secure DMA transfers
|-
|-
| 17 || Decrypt region to authenticate
| 17 || Decrypt region to authenticate
Line 4,957:
Line 4,958:
==== LOAD ====
==== LOAD ====
−
Interface for handling memory reads from SCP to Falcon.
+
Block for handling memory reads from SCP to Falcon. It communicates with Falcon over a dedicated interface.
−
Can be enabled or disabled by register [[#TSEC_SCP_CTL0|TSEC_SCP_CTL0]].
+
The interface can be enabled or disabled by register [[#TSEC_SCP_CTL0|TSEC_SCP_CTL0]].
==== STORE ====
==== STORE ====
−
Interface for handling memory writes from Falcon to SCP.
+
Block for handling memory writes from Falcon to SCP. It communicates with Falcon over a dedicated interface.
−
Can be enabled or disabled by register [[#TSEC_SCP_CTL0|TSEC_SCP_CTL0]].
+
The interface can be enabled or disabled by register [[#TSEC_SCP_CTL0|TSEC_SCP_CTL0]].
==== CMD ====
==== CMD ====
−
Interface for translating Falcon crypto operands into SCP commands.
+
Block for translating Falcon crypto operands into SCP commands. It communicates with Falcon over a dedicated interface.
−
Can be enabled or disabled by register [[#TSEC_SCP_CTL0|TSEC_SCP_CTL0]] and reports the status of the current command through register [[#TSEC_SCP_CMD|TSEC_SCP_CMD]].
+
The interface can be enabled or disabled by register [[#TSEC_SCP_CTL0|TSEC_SCP_CTL0]]. The status of the current command is reported through register [[#TSEC_SCP_CMD|TSEC_SCP_CMD]].
==== SEQ ====
==== SEQ ====
−
Configurable block for recording and executing sequences of crypto operations in the form of macros.
+
Block for recording and executing sequences of crypto operations in the form of macros.
Can be enabled or disabled by register [[#TSEC_SCP_CTL0|TSEC_SCP_CTL0]].
Can be enabled or disabled by register [[#TSEC_SCP_CTL0|TSEC_SCP_CTL0]].