Talk:Undocumented SPU Channels: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
No edit summary
Line 11: Line 11:
<code>uint8_t expectedConfigRing65[];
<code>uint8_t expectedConfigRing65[];
uint8_t expectedConfigRing90[];
uint8_t expectedConfigRing90[];
 
 
function _start+1340() { //extracted from bootloader on 0x1A datecode console
function _start+1340() { //extracted from bootloader on 0x1A datecode console
 
 
     uint64_t vr = getSPU_VR(); //First active SPE priv1 SPU_VR register
     uint64_t vr = getSPU_VR(); //First active SPE priv1 SPU_VR register
     uint32_t toIgnore;
     uint32_t toIgnore;
Line 43: Line 43:
         checkConfigRingField(expectedConfigRing, readedConfigRing, field, .....);
         checkConfigRingField(expectedConfigRing, readedConfigRing, field, .....);
     }
     }
 
 
}</code>
}</code>


== Channel 64 ==
== Channel 64 ==


Other values written to channel 64 (on bootldr): 0x00, 0x02, 0x20000
Other values written to channel 64 (on bootldr): 0x00, 0x02, 0x20000

Revision as of 21:23, 6 August 2012


Channel 67

Used to get the config ring.

Use is similar to channel 73.


uint8_t expectedConfigRing65[]; uint8_t expectedConfigRing90[];

function _start+1340() { //extracted from bootloader on 0x1A datecode console

   uint64_t vr = getSPU_VR(); //First active SPE priv1 SPU_VR register
   uint32_t toIgnore;
   uint32_t toRead;
   uint8_t expectedConfigRing;
   uint8_t readedConfigRing[];
   switch (vr) {
       case 0x201:
       case 0x202:
           //90nm console
           toIgnore = 0xA6;
           toRead = 0x156;
           expectedConfigRing = expectedConfigRing90;
           break;
       default:
           //65nm console
           toIgnore = 0xBB;
           toRead = 0x152;
           expectedConfigRing = expectedConfigRing90;
   }
   unsigned int index;
   for (index = 0; index < toIgnore>>3; index++) {
       rdch(67);
   }
   for (index = 0; index < toRead; index++) {
       readedConfigRing[index] = rdch(67) & 0xFF;
   }
   while (moreBitFieldsToCheck) {
       checkConfigRingField(expectedConfigRing, readedConfigRing, field, .....);
   }
  

}

Channel 64

Other values written to channel 64 (on bootldr): 0x00, 0x02, 0x20000