TSEC Firmware: Difference between revisions
| No edit summary | m Fix FALCON_HWCFG MMIO names | ||
| Line 230: | Line 230: | ||
| <pre> | <pre> | ||
|      // Read data segment size from IO space |      // Read data segment size from IO space | ||
|      u32 data_seg_size = *(u32 *) |      u32 data_seg_size = *(u32 *)FALCON_HWCFG; | ||
|      data_seg_size >>= 0x09; |      data_seg_size >>= 0x09; | ||
|      data_seg_size &= 0x1FF; |      data_seg_size &= 0x1FF; | ||
| Line 496: | Line 496: | ||
|      // Read data segment size from IO space |      // Read data segment size from IO space | ||
|      u32 data_seg_size = *(u32 *) |      u32 data_seg_size = *(u32 *)FALCON_HWCFG; | ||
|      data_seg_size >>= 0x09; |      data_seg_size >>= 0x09; | ||
|      data_seg_size &= 0x1FF; |      data_seg_size &= 0x1FF; | ||
| Line 695: | Line 695: | ||
|      // Swap halves (b16, b32 and b16 again) and store it as the last word |      // Swap halves (b16, b32 and b16 again) and store it as the last word | ||
|      *(u32 *)(buf + 0x0C) = ( |      *(u32 *)(buf + 0x0C) = ( | ||
|          ((size & 0x000000FF) << 0x08 | (size & 0x0000FF00) >> 0x08) << 0x10 |          ((size & 0x000000FF) << 0x08 | ||
|         | (size & 0x0000FF00) >> 0x08) << 0x10 | |||
|          | ((size & 0x00FF0000) >> 0x10) << 0x08 |          | ((size & 0x00FF0000) >> 0x10) << 0x08 | ||
|          | (size & 0xFF000000) >> 0x18 |          | (size & 0xFF000000) >> 0x18 | ||
| Line 960: | Line 961: | ||
| The main function takes '''key_addr''' and '''key_type''' as arguments from [[#KeygenLdr|KeygenLdr]]. | The main function takes '''key_addr''' and '''key_type''' as arguments from [[#KeygenLdr|KeygenLdr]]. | ||
| <pre> | <pre> | ||
|      u32 falcon_rev = *(u32 *) |      u32 falcon_rev = *(u32 *)FALCON_HWCFG2 & 0x0F; | ||
|      // Falcon hardware revision must be 5 |      // Falcon hardware revision must be 5 | ||
| Line 1,261: | Line 1,262: | ||
| <pre> | <pre> | ||
|      // Read data segment size from IO space |      // Read data segment size from IO space | ||
|      u32 data_seg_size = *(u32 *) |      u32 data_seg_size = *(u32 *)FALCON_HWCFG; | ||
|      data_seg_size >>= 0x01; |      data_seg_size >>= 0x01; | ||
|      data_seg_size &= 0xFF00; |      data_seg_size &= 0xFF00; | ||
| Line 1,387: | Line 1,388: | ||
|      // Read data segment size from IO space |      // Read data segment size from IO space | ||
|      u32 data_seg_size = *(u32 *) |      u32 data_seg_size = *(u32 *)FALCON_HWCFG; | ||
|      data_seg_size >>= 0x01; |      data_seg_size >>= 0x01; | ||
|      data_seg_size &= 0xFF00; |      data_seg_size &= 0xFF00; | ||
| Line 1,519: | Line 1,520: | ||
|      // Read data segment size from IO space |      // Read data segment size from IO space | ||
|      u32 data_seg_size = *(u32 *) |      u32 data_seg_size = *(u32 *)FALCON_HWCFG; | ||
|      data_seg_size >>= 0x01; |      data_seg_size >>= 0x01; | ||
|      data_seg_size &= 0xFF00; |      data_seg_size &= 0xFF00; | ||