TSEC: Difference between revisions
No edit summary |
No edit summary |
||
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 | | Clear [[#SEQ|SEQ]] block's pipeline | ||
|- | |- | ||
| 8 | | 8 | ||
| | | Clear the main [[#SCP|SCP]] pipeline | ||
|- | |- | ||
| 11 | | 11 | ||
Line 3,607: | Line 3,607: | ||
|- | |- | ||
| 16 | | 16 | ||
| Enable [[#LOAD|LOAD]] | | 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 | ||
| | | [[#AES|AES]] block's endianness | ||
0: Little | |||
1: Big | |||
|- | |- | ||
| 8 | | 8 | ||
| Flush | | Flush [[#CMD|CMD]] block's pipeline | ||
|- | |- | ||
| 12-13 | | 12-13 | ||
Line 3,766: | Line 3,768: | ||
|- | |- | ||
| 19-22 | | 19-22 | ||
| [[#LOAD|LOAD]] | | [[#LOAD|LOAD]] block's pipeline size | ||
|- | |- | ||
| 23 | | 23 | ||
| [[#LOAD|LOAD]] | | [[#LOAD|LOAD]] block's current operation is valid | ||
|- | |- | ||
| 24 | | 24 | ||
| [[#LOAD|LOAD]] | | [[#LOAD|LOAD]] block is running in HS mode | ||
|- | |- | ||
| 25-26 | | 25-26 | ||
| [[#STORE|STORE]] | | [[#STORE|STORE]] block's pipeline size | ||
|- | |- | ||
| 30 | | 30 | ||
| [[#STORE|STORE]] | | [[#STORE|STORE]] block's current operation is valid | ||
|- | |- | ||
| 31 | | 31 | ||
| [[#STORE|STORE]] | | [[#STORE|STORE]] block is running in HS mode | ||
|} | |} | ||
Line 3,862: | Line 3,864: | ||
|- | |- | ||
| 28 | | 28 | ||
| [[#CMD|CMD]] | | [[#CMD|CMD]] block's current instruction is valid | ||
|- | |- | ||
| 31 | | 31 | ||
| [[#CMD|CMD]] | | [[#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 | | [[#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 | | [[#STORE|STORE]] block is stalled | ||
|- | |- | ||
| 26 | | 26 | ||
| LOAD | | [[#LOAD|LOAD]] block is stalled | ||
|- | |- | ||
| 27 | | 27 | ||
| RNG | | [[#RNG|RNG]] block is stalled | ||
|- | |- | ||
| 28 | | 28 | ||
Line 3,972: | Line 3,974: | ||
|- | |- | ||
| 29 | | 29 | ||
| AES | | [[#AES|AES]] block is stalled | ||
|} | |} | ||
Line 3,983: | Line 3,985: | ||
|- | |- | ||
| 0 | | 0 | ||
| | | [[#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 | | Empty [[#SEQ|SEQ]] sequence | ||
|- | |- | ||
| 8 | | 8 | ||
| | | [[#SEQ|SEQ]] sequence is too long | ||
|- | |- | ||
| 12 | | 12 | ||
| | | [[#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 || | | 16 || Force secure DMA transfers | ||
|- | |- | ||
| 17 || Decrypt region to authenticate | | 17 || Decrypt region to authenticate | ||
Line 4,957: | Line 4,958: | ||
==== LOAD ==== | ==== LOAD ==== | ||
Block for handling memory reads from SCP to Falcon. It communicates with Falcon over a dedicated interface. | |||
The interface can be enabled or disabled by register [[#TSEC_SCP_CTL0|TSEC_SCP_CTL0]]. | |||
==== STORE ==== | ==== STORE ==== | ||
Block for handling memory writes from Falcon to SCP. It communicates with Falcon over a dedicated interface. | |||
The interface can be enabled or disabled by register [[#TSEC_SCP_CTL0|TSEC_SCP_CTL0]]. | |||
==== CMD ==== | ==== CMD ==== | ||
Block for translating Falcon crypto operands into SCP commands. It communicates with Falcon over a dedicated interface. | |||
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 ==== | ||
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]]. |