Line 199: |
Line 199: |
| | 0x04 | | | 0x04 |
| |- | | |- |
− | | FALCON_DEBUGINFO | + | | [[#FALCON_DEBUGINFO|FALCON_DEBUGINFO]] |
| | 0x54501094 | | | 0x54501094 |
| | 0x04 | | | 0x04 |
Line 519: |
Line 519: |
| | 0x04 | | | 0x04 |
| |- | | |- |
− | | TSEC_MCCIF_FIFOCTRL | + | | [[#TSEC_MCCIF_FIFOCTRL|TSEC_MCCIF_FIFOCTRL]] |
| | 0x54501604 | | | 0x54501604 |
| | 0x04 | | | 0x04 |
Line 535: |
Line 535: |
| | 0x04 | | | 0x04 |
| |- | | |- |
− | | TSEC_MCCIF_UNK4 | + | | [[#TSEC_MCCIF_FIFOCTRL1|TSEC_MCCIF_FIFOCTRL1]] |
| | 0x54501634 | | | 0x54501634 |
| | 0x04 | | | 0x04 |
| |- | | |- |
− | | TSEC_MCCIF_UNK5 | + | | TSEC_MCCIF_UNK4 |
| | 0x54501640 | | | 0x54501640 |
| | 0x04 | | | 0x04 |
| |- | | |- |
− | | [[#TSEC_MCCIF_UNK6|TSEC_MCCIF_UNK6]] | + | | [[#TSEC_MCCIF_UNK5|TSEC_MCCIF_UNK5]] |
| | 0x54501644 | | | 0x54501644 |
| | 0x04 | | | 0x04 |
| |- | | |- |
− | | [[#TSEC_MCCIF_UNK7|TSEC_MCCIF_UNK7]] | + | | [[#TSEC_MCCIF_UNK6|TSEC_MCCIF_UNK6]] |
| | 0x54501648 | | | 0x54501648 |
| | 0x04 | | | 0x04 |
Line 624: |
Line 624: |
| | | |
| Used for detecting if Falcon is busy or not. | | Used for detecting if Falcon is busy or not. |
| + | |
| + | === FALCON_DEBUGINFO === |
| + | [6.0.0+] [[NV_services|nvservices]] sets this to 0x8005FF00 (physical DRAM address inside the GPU UCODE carveout) before starting the nvhost_tsec firmware. |
| | | |
| === FALCON_CPUCTL === | | === FALCON_CPUCTL === |
Line 736: |
Line 739: |
| |} | | |} |
| | | |
− | === TSEC_MCCIF_UNK6 === | + | === TSEC_MCCIF_FIFOCTRL === |
| + | {| class="wikitable" border="1" |
| + | ! Bits |
| + | ! Description |
| + | |- |
| + | | 0 |
| + | | TSEC_MCCIF_FIFOCTRL_RCLK_OVERRIDE |
| + | |- |
| + | | 1 |
| + | | TSEC_MCCIF_FIFOCTRL_WCLK_OVERRIDE |
| + | |- |
| + | | 2 |
| + | | TSEC_MCCIF_FIFOCTRL_WRCL_MCLE2X |
| + | |- |
| + | | 3 |
| + | | TSEC_MCCIF_FIFOCTRL_RDMC_RDFAST |
| + | |- |
| + | | 4 |
| + | | TSEC_MCCIF_FIFOCTRL_WRMC_CLLE2X |
| + | |- |
| + | | 5 |
| + | | TSEC_MCCIF_FIFOCTRL_RDCL_RDFAST |
| + | |- |
| + | | 6 |
| + | | TSEC_MCCIF_FIFOCTRL_CCLK_OVERRIDE |
| + | |- |
| + | | 7 |
| + | | TSEC_MCCIF_FIFOCTRL_RCLK_OVR_MODE |
| + | |- |
| + | | 8 |
| + | | TSEC_MCCIF_FIFOCTRL_WCLK_OVR_MODE |
| + | |} |
| + | |
| + | === TSEC_MCCIF_FIFOCTRL1 === |
| + | {| class="wikitable" border="1" |
| + | ! Bits |
| + | ! Description |
| + | |- |
| + | | 0-15 |
| + | | TSEC_MCCIF_FIFOCTRL1_SRD2MC_REORDER_DEPTH_LIMIT |
| + | |- |
| + | | 16-31 |
| + | | TSEC_MCCIF_FIFOCTRL1_SWR2MC_REORDER_DEPTH_LIMIT |
| + | |} |
| + | |
| + | === TSEC_MCCIF_UNK5 === |
| Used to control accesses to DRAM. | | Used to control accesses to DRAM. |
| | | |
| [6.0.0+] The nvhost_tsec firmware sets this register to 0x10 or 0x111110 before reading memory from the GPU UCODE carveout. | | [6.0.0+] The nvhost_tsec firmware sets this register to 0x10 or 0x111110 before reading memory from the GPU UCODE carveout. |
| | | |
− | === TSEC_MCCIF_UNK7 === | + | === TSEC_MCCIF_UNK6 === |
| Used to control accesses to DRAM. | | Used to control accesses to DRAM. |
| | | |
Line 2,052: |
Line 2,100: |
| | | |
| <code>00000000: f5 3c 0X 90 crng $cX</code> - seems to initialize a crypto register with random data. | | <code>00000000: f5 3c 0X 90 crng $cX</code> - seems to initialize a crypto register with random data. |
| + | |
| + | === Secrets === |
| + | Falcon's Authenticated Mode has access to 64 128-bit keys which are burned at factory. These keys can be loaded by using the $csecret instruction which takes the target crypto register and the key index as arguments. |
| + | |
| + | {| class=wikitable |
| + | ! Index || Notes |
| + | |- |
| + | | 0x00 || Used by the nvhost_tsec firmware. Debug mode only. |
| + | |- |
| + | | 0x03 || Used by the nvhost_tsec firmware. |
| + | |- |
| + | | 0x04 || Used by the nvhost_tsec firmware. |
| + | |- |
| + | | 0x05 || Used by the nvhost_tsec firmware. |
| + | |- |
| + | | 0x07 || Used by the nvhost_tsec firmware. |
| + | |- |
| + | | 0x09 || Used by the nvhost_tsec firmware. |
| + | |- |
| + | | 0x0B || Used by the nvhost_tsec firmware. |
| + | |- |
| + | | 0x0F || Used by the nvhost_tsec firmware. |
| + | |- |
| + | | 0x15 || Used by the nvhost_tsec firmware. |
| + | |- |
| + | | 0x26 || Used by [[#KeygenLdr|KeygenLdr]]. |
| + | |- |
| + | | 0x3C || Used by the nvhost_tsec firmware. |
| + | |- |
| + | | 0x3F || Used by the nvhost_tsec firmware. Potentially per-console. |
| + | |} |