SWRU543B January 2019 – June 2025 CC3230S , CC3230SF , CC3235MODS , CC3235MODSF , CC3235S , CC3235SF
SHAMD5 functional registers offset: 0x4403 5000.
Table 19-11 lists the memory-mapped registers for SHA/MD5. All register offset addresses not listed in Table 19-11 should be considered as reserved locations and the register contents should not be modified. Figure 19-4 shows an overview of Public World, Inner and Outer Digest registers, and usage for MD5, SHA-1, and SHA-224/256.
| Offset | Acronym | Register Name | Section |
|---|---|---|---|
| 0h | SHAMD5_ODIGEST_A | Outer Digest Register A | Section 19.2.1 |
| 4h | SHAMD5_ODIGEST_B | Outer Digest Register B | Section 19.2.2 |
| 8h | SHAMD5_ODIGEST_C | Outer Digest Register C | Section 19.2.3 |
| Ch | SHAMD5_ODIGEST_D | Outer Digest Register D | Section 19.2.4 |
| 10h | SHAMD5_ODIGEST_E | Outer Digest Register E | Section 19.2.5 |
| 14h | SHAMD5_ODIGEST_F | Outer Digest Register F | Section 19.2.6 |
| 18h | SHAMD5_ODIGEST_G | Outer Digest Register G | Section 19.2.7 |
| 1Ch | SHAMD5_ODIGEST_H | Outer Digest Register H | Section 19.2.8 |
| 20h | SHAMD5_IDIGEST_A | Inner Digest Register A | Section 19.2.9 |
| 24h | SHAMD5_IDIGEST_B | Inner Digest Register B | Section 19.2.10 |
| 28h | SHAMD5_IDIGEST_C | Inner Digest Register C | Section 19.2.11 |
| 2Ch | SHAMD5_IDIGEST_D | Inner Digest Register D | Section 19.2.12 |
| 30h | SHAMD5_IDIGEST_E | Inner Digest Register E | Section 19.2.13 |
| 34h | SHAMD5_IDIGEST_F | Inner Digest Register F | Section 19.2.14 |
| 38h | SHAMD5_IDIGEST_G | Inner Digest Register G | Section 19.2.15 |
| 3Ch | SHAMD5_IDIGEST_H | Inner Digest Register H | Section 19.2.16 |
| 40h | SHAMD5_DIGEST_COUNT | Digest Count | Section 19.2.17 |
| 44h | SHAMD5_MODE | SHA Mode | Section 19.2.18 |
| 48h | SHAMD5_LENGTH | SHA Length | Section 19.2.19 |
| 80h | SHAMD5_DATA0_IN | Data input message 0 | Section 19.2.20 |
| 84h | SHAMD5_DATA1_IN | Data input message 1 | Section 19.2.21 |
| 88h | SHAMD5_DATA2_IN | Data input message 2 | Section 19.2.22 |
| 8Ch | SHAMD5_DATA3_IN | Data input message 3 | Section 19.2.23 |
| 90h | SHAMD5_DATA4_IN | Data input message 4 | Section 19.2.24 |
| 94h | SHAMD5_DATA5_IN | Data input message 5 | Section 19.2.25 |
| 98h | SHAMD5_DATA6_IN | Data input message 6 | Section 19.2.26 |
| 9Ch | SHAMD5_DATA7_IN | Data input message 7 | Section 19.2.27 |
| A0h | SHAMD5_DATA8_IN | Data input message 8 | Section 19.2.28 |
| A4h | SHAMD5_DATA9_IN | Data input message 9 | Section 19.2.29 |
| A8h | SHAMD5_DATA10_IN | Data input message 10 | Section 19.2.30 |
| ACh | SHAMD5_DATA11_IN | Data input message 11 | Section 19.2.31 |
| B0h | SHAMD5_DATA12_IN | Data input message 12 | Section 19.2.32 |
| B4h | SHAMD5_DATA13_IN | Data input message 13 | Section 19.2.33 |
| B8h | SHAMD5_DATA14_IN | Data input message 14 | Section 19.2.34 |
| BCh | SHAMD5_DATA15_IN | Data input message 15 | Section 19.2.35 |
| 110h | SHAMD5_SYSCONFIG | System Config | Section 19.2.36 |
| 118h | SHAMD5_IRQSTATUS | IRQ Status | Section 19.2.37 |
| 11Ch | SHAMD5_IRQENABLE | IRQ Enable | Section 19.2.38 |
| 810h | DTHE_SHA_IM | SHA Interrupt Mask Set | Section 19.2.39 |
| 814h | DTHE_SHA_RIS | SHA Interrupt Raw Interrupt Status | Section 19.2.40 |
| 818h | DTHE_SHA_MIS | SHA Interrupt Masked interrupt Status | Section 19.2.41 |
| 81Ch | DTHE_SHA_IC | SHA Interrupt Clear Interrupt Status | Section 19.2.42 |
Figure 19-4 Overview of Public World, Inner and Outer Digest Registers, and Usage for MD5, SHA-1, and SHA-224/256Outer digest registers are only relevant for HMAC operations; contents are ignored for hash operations.
The outer digest for HMAC operations without key processing (HMAC key processing = 0) must be written to these registers before starting the operation by writing to SHAMD5_MODE. Only the relevant digest registers for the selected algorithm must be written, A-D for MD5, A-E for SHA-1, A-H for SHA-2 (224 and 256).
When HMAC key processing is 1, these registers must be written with the lower 256 bits of the HMAC key to be processed, in little-endian format (first byte of key string in bits [7:0]). If the HMAC key is less than 512 bits in size, it must be properly padded to the block size with zeroes on the most significant bytes. All 16 HMAC key registers must be written explicitly, as the core does not pad the HMAC key. Additionally, if the HMAC key is larger than 512 bits, the host is responsible for performing a preprocessing step to reduce it to one 512-bit block. This involves hashing the large key and padding the hash result with zeroes until it is 512 bits wide.
The computed outer digest can be read from these registers when the status register indicates that the operation is done or suspended due to a context switch request. If no HMAC key processing is performed, the value read here would be identical to the value written initially. The MD5 outer digest is available from digest registers A-D, the SHA-1 outer digest from registers A-E, and the SHA-224 and 256 outer digest from registers A-H.
The HMAC key itself cannot be read back from these registers, but it is preserved for future processing as long as the SHAMD5_ODIGEST registers are not overwritten; this allows reuse of the HMAC key (without having to redo the HMAC key processing) for subsequent data blocks without having to reload it. This is done by setting HMAC key processing to 0 and Reuse HMAC key to 1 in the SHAMD5_MODE register.
SHAMD5_ODIGEST_A is shown in Figure 19-5 and described in Table 19-12.
Return to Summary Table.
WRITE: Outer Digest [127:96] for MD5, [159:128] for SHA-1, [255:224] for SHA-2 / HMAC Key [31:0] for HMAC key proc
READ: Outer Digest [127:96] for MD5, [159:128] for SHA-1, [255:224] for SHA-2
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_ODIGEST_B is shown in Figure 19-6 and described in Table 19-13.
Return to Summary Table.
WRITE: Outer Digest [95:64] for MD5, [127:96] for SHA-1, [223:192] for SHA-2 / HMAC Key [63:32] for HMAC key proc
READ: Outer Digest [95:64] for MD5 [127:96] for SHA-1, [223:192] for SHA-2
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_ODIGEST_C is shown in Figure 19-7 and described in Table 19-14.
Return to Summary Table.
WRITE: Outer Digest [63:32] for MD5, [95:64] for SHA-1, [191:160] for SHA-2 / HMAC Key [95:64] for HMAC key proc
READ: Outer Digest [63:32] for MD5 [95:64] for SHA-1, [191:160] for SHA-2
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_ODIGEST_D is shown in Figure 19-8 and described in Table 19-15.
Return to Summary Table.
WRITE: Outer Digest [31:0] for MD5 [63:31] for SHA-1, [159:128] for SHA-2 / HMAC Key [127:96] for HMAC key proc
READ: Outer Digest [31:0] for MD5 [63:32] for SHA-1, [159:128] for SHA-2
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_ODIGEST_E is shown in Figure 19-9 and described in Table 19-16.
Return to Summary Table.
WRITE: Outer Digest [31:0] for SHA-1, [127:96] for SHA-2 / HMAC Key [159:128] for HMAC key proc
READ: Outer Digest [31:0] for SHA-1, [127:96] for SHA-2
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_ODIGEST_F is shown in Figure 19-10 and described in Table 19-17.
Return to Summary Table.
WRITE: Outer Digest [95:64] for SHA-2 / HMAC Key [191:160] for HMAC key proc
READ: Outer Digest [95:64] for SHA-2
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_ODIGEST_G is shown in Figure 19-11 and described in Table 19-18.
Return to Summary Table.
WRITE: Outer Digest [63:32] for SHA-2 / HMAC Key [223:192] for HMAC key proc
READ: Outer Digest [63:32] for SHA-2
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_ODIGEST_H is shown in Figure 19-12 and described in Table 19-19.
Return to Summary Table.
WRITE: Outer Digest [31:0] for SHA-2 / HMAC Key [255:224] for HMAC key proc
READ: Outer Digest [31:0] for SHA-2
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
Inner digest registers: The following registers hold the inner digest for HMAC and hash operations:
The inner or initial digest for HMAC and hash continue (HMAC key processing = 0 and use algorithm constants = 0) operations must be written to these registers before starting the operation by writing to S_HASH_MODE. Only the relevant digest registers for the selected algorithm must be written, A-D for MD5, A-E for SHA-1, A-H for SHA-2. When use algorithm constants is 1, these registers do need not to be written, because they are overwritten with the appropriate algorithm constants.
For HMAC operations with key preprocessing enabled (HMAC key processing = 1), these registers must be written with the upper 256 bits of the HMAC key, in little-endian format (first byte of key string in bits [7:0]). If the HMAC key is less than 512 bits in size, it must be padded to the block size with zeroes on the most significant bytes. All 16 HMAC key registers must be written explicitly, as the core does not pad the HMAC key. Additionally, if the HMAC key is larger than 512 bits, the host is responsible for performing a preprocessing step to reduce it to one 512-bit block. This involves hashing the large key and padding the hash result with zeroes until it is 512 bits wide.
The (intermediate) result digest or MAC value can be read from these registers when the status register indicates that the operation is done, or suspended due to a context switch request (reading at other times results in all zeroes being returned). The MD5 result is available from digest registers A-D, the SHA-1 result from registers A-E, the SHA-224 final result from registers A-G, and the SHA-2 intermediate and SHA-256 final result from registers A-H.
The order of the bytes within the digest can be fed back unmodified into the little-endian data input when preprocessing HMAC keys larger than 64 bytes; or it can typically be inserted unmodified into a little-endian data stream (such as IPSEC packets), regardless of the selected algorithm.
The HMAC key itself cannot be read back from these registers, but is preserved for future processing as long as the SHAMD5_ODIGEST registers are not overwritten; this allows reuse of the HMAC key (without having to redo the HMAC key processing) for subsequent data blocks without having to reload it. This is done by setting HMAC key processing to 0 and Reuse HMAC key to 1 in the SHAMD5_MODE register.
SHAMD5_IDIGEST_A is shown in Figure 19-13 and described in Table 19-20.
Return to Summary Table.
WRITE: Inner / Initial Digest [127:96] for MD5 [159:128] for SHA-1, [255:224] for SHA-2 / HMAC Key [287:256] for HMAC key proc
READ: Intermediate / Inner Digest [127:96] for MD5 [159:128] for SHA-1, [255:224] for SHA-2 /
Result Digest/MAC [127:96] for MD5 [159:128] for SHA-1, [223:192] for SHA-2 224, [255:224] for SHA-2 256
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_IDIGEST_B is shown in Figure 19-14 and described in Table 19-21.
Return to Summary Table.
WRITE: Inner / Initial Digest [95:64] for MD5 [127:96] for SHA-1, [223:192] for SHA-2 / HMAC Key [319:288] for HMAC key proc
READ: Intermediate / Inner Digest [95:64] for MD5 [127:96] for SHA-1, [223:192] for SHA-2 /
Result Digest/MAC [95:64] for MD5 [127:96] for SHA-1, [191:160] for SHA-2 224, [223:192] for SHA-2 256
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_IDIGEST_C is shown in Figure 19-15 and described in Table 19-22.
Return to Summary Table.
WRITE: Inner / Initial Digest [63:32] for MD5 [95:64] for SHA-1, [191:160] for SHA- 2 / HMAC Key [351:320] for HMAC key proc
READ: Intermediate / Inner Digest [63:32] for MD5 [95:64] for SHA-1, [191:160] for SHA-2 /
Result Digest/MAC [63:32] for MD5 [95:64] for SHA-1, [159:128] for SHA-2 224, [191:160] for SHA-2 256
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_IDIGEST_D is shown in Figure 19-16 and described in Table 19-23.
Return to Summary Table.
WRITE: Inner / Initial Digest [31:0] for MD5 [63:32] for SHA-1, [159:128] for SHA-2 / HMAC Key [383:352] for HMAC key proc
READ: Intermediate / Inner Digest [31:0] for MD5 [63:32] for SHA-1, [159:128] for SHA-2 /
Result Digest/MAC [31:0] for MD5 [63:32] for SHA-1, [127:96] for SHA-2 224, [159:128] for SHA-2 256
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_IDIGEST_E is shown in Figure 19-17 and described in Table 19-24.
Return to Summary Table.
WRITE: Inner / Initial Digest [31:0] for SHA-1, [127:96] for SHA-2 / HMAC Key [415:384] for HMAC key proc
READ: Intermediate / Inner Digest [31:0] for SHA-1, [127:96] for SHA-2 /
Result Digest/MAC [31:0] for SHA-1, [95:64] for SHA-2 224, [127:96] for SHA-2 256
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_IDIGEST_F is shown in Figure 19-18 and described in Table 19-25.
Return to Summary Table.
WRITE: Inner / Initial Digest [95:64] for SHA-2 / HMAC Key [447:416] for HMAC key proc
READ: Intermediate / Inner Digest [95:64] for SHA-2 /
Result Digest/MAC [63:32] for SHA-2 224, [95:64] for SHA-2 256
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_IDIGEST_G is shown in Figure 19-19 and described in Table 19-26.
Return to Summary Table.
WRITE: Inner / Initial Digest [63:32] for SHA-2 / HMAC Key [479:448] for HMAC key proc
READ: Intermediate / Inner Digest [63:32] for SHA-2 /
Result Digest/MAC [31:0] for SHA-2 224, [63:32] for SHA-2 256
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_IDIGEST_H is shown in Figure 19-20 and described in Table 19-27.
Return to Summary Table.
WRITE: Inner / Initial Digest [31:0] for SHA-2 / HMAC Key [511:480] for HMAC key proc
READ: Intermediate / Inner Digest [31:0] for SHA-2 /
Result Digest/MAC [31:0] for SHA-2 256
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_DIGEST_COUNT is shown in Figure 19-21 and described in Table 19-28.
Return to Summary Table.
WRITE: Initial Digest Count ([31:6] only, [5:0] assumed 0)
READ: Result / IntermediateDigest Count
The initial digest byte count for hash/HMAC continue operations (HMAC key processing = 0 and use algorithm constants = 0) on the secure world must be written to this register before starting the operation by writing to S_HASH_MODE. When either HMAC key processing is 1 or use algorithm constants is 1, this register does not need to be written, it is overwritten with 64 (1 hash block of key XOR ipad) or 0 respectively, automatically.
When starting an HMAC operation from pre-computes (HMAC key processing is 0), the value 64 must be written here to compensate for the appended key XOR ipad block. The value written should always be a 64 byte multiple; the lower 6 bits written are ignored.
The updated digest byte count (initial digest byte count plus bytes processed) can be read from this register when the status register indicates that the operation is done or suspended due to a context switch request, or when a secure world context out DMA is requested.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
SHAMD5_MODE is shown in Figure 19-22 and described in Table 19-29.
Return to Summary Table.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-X | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-X | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-X | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| HMAC_OUTER_HASH | RESERVED | HMAC_KEY_PROC | CLOSE_HASH | ALGO_CONSTANT | ALGO | RESERVED | |
| R/W-0h | R-X | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R-X | |
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-8 | RESERVED | R | X | |
| 7 | HMAC_OUTER_HASH | R/W | 0h | The HMAC outer hash is performed on the hash digest when the inner hash has finished (block length exhausted and final hash performed if close_hash is 1). This bit should normally be set together with close_hash to finish the inner hash first, or block length should be zero (HMAC continues with the just outer hash to be done). Auto-cleared internally when outer hash performed. 0h = No operation 1h = HMAC processing |
| 6 | RESERVED | R | X | |
| 5 | HMAC_KEY_PROC | R/W | 0h | Performs HMAC key processing on the 512-bit HMAC key loaded into the SHAMD5_IDIGEST_{A to H} and SHAMD5_ODIGEST_{A to H} register block. When HMAC key processing is finished, this bit is automatically cleared, and the resulting inner and outer digest is available from SHAMD5_IDIGEST_{A to H} and SHAMD5_ODIGEST_{A to H} respectively, after which regular hash processing (using SHAMD5_IDIGEST_{A to H} as initial digest) commences, until the block length is exhausted. 0h = No operation 1h = HMAC processing |
| 4 | CLOSE_HASH | R/W | 0h | Performs the padding; the hash/HMAC is closed at the end of the block, as per MD5/SHA-1/SHA-2 specification (that is, appropriate padding is added), or no padding is done, allowing the hash to be continued later. However, if the hash/HMAC is not closed, the block length must be a multiple of 64 bytes to ensure correct operation. Auto-cleared internally when hash closed. 0h = No padding, hash computation can be continued. 1h = Last packet is padded. |
| 3 | ALGO_CONSTANT | R/W | 0h | The initial digest register is overwritten with the algorithm constants for the selected algorithm when hashing, and the initial digest count register is reset to 0. This starts a normal hash operation. When continuing an existing hash or when performing an HMAC operation, this register must be set to 0 and the intermediate/inner digest or HMAC key and digest count must be written to the context input registers before writing SHAMD5_MODE. Auto-cleared internally after first block processed. 0h = Use pre-calculated digest (from another operation) 1h = Use constants of the selected algo. |
| 2-1 | ALGO | R/W | 0h | These bits select the hash algorithm to be used for processing. 0h = md5_128 algorithm 1h = sha1_160 algorithm 2h = sha2_224 algorithm 3h = sha2_256 algorithm |
| 0 | RESERVED | R | X |
SHAMD5_LENGTH is shown in Figure 19-23 and described in Table 19-30.
Return to Summary Table.
WRITE: Block length / remaining byte count (bytes)
READ: Remaining byte count.
The value programmed must be a 64-byte multiple if close hash is set to 0. This register is also the trigger to start processing: once this register is written, the core commences requesting input data through DMA or IRQ (if programmed length > 0) and start processing.
The remaining byte count for the active operation can be read from this register when the interrupt status register indicates that the operation is suspended due to a context switch request.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Data |
Hash Input Data Registers: The following are input data registers for the Hash/HMAC engine:
Writing 4-byte words to a word-aligned offset within this address range pushes the data into the 32-word deep (128 bytes = 1024 bits for one SHA-384/512 hash block) data-input FIFO. Although the actual address used within the range is not important, the order of the data words is. Also, do not exceed the FIFO size: check the status signals after writing a full block of 16 words or 32 words for SHA-384 and SHA-512.
This FIFO must be filled with 16 or 32 words (one full hash block) before the core can start processing the next block, except for the last hash block when close hash is set to 1. In this particular case, as many words need to be written as necessary to get the remaining bytes into the core. If the last word ends misaligned (the last word contains one or more invalid bytes) these bytes are ignored by the hash/HMAC engine. If a host writes additional words beyond the last hash data word of the current hash operation, the hash/HMAC engine ignores these additional words. Therefore, once the hash length decrements to zero, additional write to the data input FIFO are ignored. A new write to the length register allows the hash/HMAC engine to accept new data for storing into the data input FIFO.
A read from these registers (on any address in the address range) returns zeros.
SHAMD5_DATA0_IN is shown in Figure 19-24 and described in Table 19-31.
Return to Summary Table.
Data input message 0
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA0_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA0_IN | R/W | 0h | Data |
SHAMD5_DATA1_IN is shown in Figure 19-25 and described in Table 19-32.
Return to Summary Table.
Data input message 1
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA1_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA1_IN | R/W | 0h | Data |
SHAMD5_DATA2_IN is shown in Figure 19-26 and described in Table 19-33.
Return to Summary Table.
Data input message 2
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA2_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA2_IN | R/W | 0h | Data |
SHAMD5_DATA3_IN is shown in Figure 19-27 and described in Table 19-34.
Return to Summary Table.
Data input message 3
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA3_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA3_IN | R/W | 0h | Data |
SHAMD5_DATA4_IN is shown in Figure 19-28 and described in Table 19-35.
Return to Summary Table.
Data input message 4
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA4_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA4_IN | R/W | 0h | Data |
SHAMD5_DATA5_IN is shown in Figure 19-29 and described in Table 19-36.
Return to Summary Table.
Data input message 5
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA5_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA5_IN | R/W | 0h | Data |
SHAMD5_DATA6_IN is shown in Figure 19-30 and described in Table 19-37.
Return to Summary Table.
Data input message 6
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA6_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA6_IN | R/W | 0h | Data |
SHAMD5_DATA7_IN is shown in Figure 19-31 and described in Table 19-38.
Return to Summary Table.
Data input message 7
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA7_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA7_IN | R/W | 0h | Data |
SHAMD5_DATA8_IN is shown in Figure 19-32 and described in Table 19-39.
Return to Summary Table.
Data input message 8
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA8_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA8_IN | R/W | 0h | Data |
SHAMD5_DATA9_IN is shown in Figure 19-33 and described in Table 19-40.
Return to Summary Table.
Data input message 9
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA9_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA9_IN | R/W | 0h | Data |
SHAMD5_DATA10_IN is shown in Figure 19-34 and described in Table 19-41.
Return to Summary Table.
Data input message 10
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA10_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA10_IN | R/W | 0h | Data |
SHAMD5_DATA11_IN is shown in Figure 19-35 and described in Table 19-42.
Return to Summary Table.
Data input message 11
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA11_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA11_IN | R/W | 0h | Data |
SHAMD5_DATA12_IN is shown in Figure 19-36 and described in Table 19-43.
Return to Summary Table.
Data input message 12
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA12_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA12_IN | R/W | 0h | Data |
SHAMD5_DATA13_IN is shown in Figure 19-37 and described in Table 19-44.
Return to Summary Table.
Data input message 13
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA13_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA13_IN | R/W | 0h | Data |
SHAMD5_DATA14_IN is shown in Figure 19-38 and described in Table 19-45.
Return to Summary Table.
Data input message 14
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA14_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA14_IN | R/W | 0h | Data |
SHAMD5_DATA15_IN is shown in Figure 19-39 and described in Table 19-46.
Return to Summary Table.
Data input message 15
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA15_IN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA15_IN | R/W | 0h | Data |
SHAMD5_SYSCONFIG is shown in Figure 19-40 and described in Table 19-47.
Return to Summary Table.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-X | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-X | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-X | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | PCONT_SWT | RESERVED | PDMA_EN | PIT_EN | RESERVED | ||
| R-X | R/W-0h | R-X | R/W-0h | R/W-0h | R-X | ||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-7 | RESERVED | R | X | |
| 6 | PCONT_SWT | R/W | 0h | Finishes all pending data and context DMA input requests (but will not assert any new requests), finishes processing all data in the module, and provides a saved context (partial hash result, updated digest count, remaining length, updated mode information where applicable) for the last operation that was interrupted, so that it can be resumed later. |
| 5-4 | RESERVED | R | X | |
| 3 | PDMA_EN | R/W | 0h | Enable DMA 0h = DMA disabled 1h = DMA enabled |
| 2 | PIT_EN | R/W | 0h | Enable Interrupt 0h = Interrupt disabled 1h = Interrupt enabled |
| 1-0 | RESERVED | R | X |
SHAMD5_IRQSTATUS is shown in Figure 19-41 and described in Table 19-48.
Return to Summary Table.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-X | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-X | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-X | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | CONTEXT_READY | PARTHASH_READY | INPUT_READY | OUTPUT_READY | |||
| R-X | RO-1h | RO-0h | RO-0h | RO-0h | |||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-4 | RESERVED | R | X | |
| 3 | CONTEXT_READY | RO | 1h | Indicates that the secure-side context input registers are available for a new context for the next packet to be processed. |
| 2 | PARTHASH_READY | RO | 0h | After a secure-side context switch request, this bit reads as 1, indicating that the saved context is available from the secure-side context output registers. If the context switch request coincides with a final hash (when hashing) or an outer hash (when doing HMAC), that PartHashReady will not become active, but a regular output ready occurs instead (indicating that the result is final and therefore no continuation is required). |
| 1 | INPUT_READY | RO | 0h | Indicates that the secure-side data FIFO is ready to receive the next 64-byte data block. |
| 0 | OUTPUT_READY | RO | 0h | Indicates that a (partial) result or saved context is available from the secure-side context output registers. |
SHAMD5_IRQENABLE is shown in Figure 19-42 and described in Table 19-49.
Return to Summary Table.
The SHAMD5_IRQENABLE register contains an enable bit for each unique interrupt for the public side. An interrupt is enabled when both the global enable in SHAMD5_SYSCONFIG (PIT_en) and the bit in this register are both set to 1. An interrupt that is enabled is propagated to the SINTREQUEST_P output. The dedicated partial hash output (SINTREQUEST_PART_P) is not affected by this register, it is only affected by the global enable SHAMD5_SYSCONFIG (PIT_en).
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-X | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-X | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-X | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | M_CONTEXT_READY | M_PARTHASH_READY | M_INPUT_READY | M_OUTPUT_READY | |||
| R-X | R/W-0h | R/W-0h | R/W-0h | R/W-0h | |||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-4 | RESERVED | R | X | |
| 3 | M_CONTEXT_READY | R/W | 0h | Mask for context ready |
| 2 | M_PARTHASH_READY | R/W | 0h | Mask for partial hash |
| 1 | M_INPUT_READY | R/W | 0h | Mask for input_ready |
| 0 | M_OUTPUT_READY | R/W | 0h | Mask for output_ready |
DTHE_SHA_IM is shown in Figure 19-43 and described in Table 19-50.
Return to Summary Table.
SHA/MD5 interrupt mask set register that allows the control of which interrupt source should interrupt the processor.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-X | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-X | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-X | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | Din | Cout | Cin | ||||
| R-X | R/W-1h | R/W-1h | R/W-1h | ||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-3 | RESERVED | R | X | |
| 2 | Din | R/W | 1h | Data in: this interrupt is raised when DMA writes last word of input data to internal FIFO of the engine. |
| 1 | Cout | R/W | 1h | Context out: this interrupt is raised when DMA completes the output context movement from internal register. |
| 0 | Cin | R/W | 1h | Context in: this interrupt is raised when DMA completes a context write to internal register |
DTHE_SHA_RIS is shown in Figure 19-44 and described in Table 19-51.
Return to Summary Table.
SHAMD5 raw interrupt status register
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-X | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-X | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-X | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | Din | Cout | Cin | ||||
| R-X | R-0h | R-0h | R-0h | ||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-3 | RESERVED | R | X | |
| 2 | Din | R | 0h | Input data movement is done |
| 1 | Cout | R | 0h | Context output is done |
| 0 | Cin | R | 0h | Context input is done |
DTHE_SHA_MIS is shown in Figure 19-45 and described in Table 19-52.
Return to Summary Table.
SHAMD5 masked interrupt status register.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-X | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-X | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-X | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | Din | Cout | Cin | ||||
| R-X | R-0h | R-0h | R-0h | ||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-3 | RESERVED | R | X | |
| 2 | Din | R | 0h | Input data movement is done |
| 1 | Cout | R | 0h | Context output is done |
| 0 | Cin | R | 0h | Context input is done |
DTHE_SHA_IC is shown in Figure 19-46 and described in Table 19-53.
Return to Summary Table.
SHAMD5 interrupt acknowledge register. Writing 1 to these bits clear the status flag in RIS and MIS register. Reads are always zero.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-X | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-X | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-X | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | Din | Cout | Cin | ||||
| R-X | R/WC-0h | WC-0h | WC-0h | ||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-3 | RESERVED | R | X | |
| 2 | Din | R/WC | 0h | Clear “input data movement done” flag |
| 1 | Cout | WC | 0h | Clear “output done” flag |
| 0 | Cin | WC | 0h | Clear “input done” flag |