Changes

1,601 bytes added ,  04:41, 21 September 2022
added EXI boot code
Line 2: Line 2:     
The '''Broadway''' is the main processor on the [[Wii]], and runs games. Games have the entire processor to themselves; [[IOS]] runs on the [[Hardware/Starlet|Starlet]].
 
The '''Broadway''' is the main processor on the [[Wii]], and runs games. Games have the entire processor to themselves; [[IOS]] runs on the [[Hardware/Starlet|Starlet]].
  −
The Broadway does not have a boot ROM; instead, code is booted from EXI memory that the Starlet initializes. The Starlet is also responsible for loading the main code to be run, as this initial code simply resets the MSR and jumps to 0x3400.
      
== Specifications ==
 
== Specifications ==
Line 28: Line 26:  
*Broadway CPU version is 87102, Gekko is 83410. Source: http://forum.wiibrew.org/viewtopic.php?t=210
 
*Broadway CPU version is 87102, Gekko is 83410. Source: http://forum.wiibrew.org/viewtopic.php?t=210
 
*Information about its [[Broadway/Registers|registers]] is available
 
*Information about its [[Broadway/Registers|registers]] is available
 +
 +
== EXI boot code ==
 +
The Broadway boots from <code>fff00100</code>, which is where the [[Hardware/External Interface|EXI]] boot registers are mapped; there is space for 16 instructions, and they can be initialized by the Starlet by writing the instructions to <code>0d806840</code>.
 +
 +
IOS's function to initialize the EXI buffer has 2 default boot vectors depending on the parameters, but a custom boot vector is used by the <code>IOS_StartPPC</code> [[IOS/Syscalls|syscall]].
 +
 +
=== Default vector (with HID4 initialization) ===
 +
<pre>
 +
fff00100    7c 63 1a 78    xor  r3, r3, r3
 +
fff00104    64 63 d7 b0    oris  r3, r3, 0xd7b0
 +
fff00108    7c 73 fb a6    mtspr HID4, r3
 +
fff0010c    4c 00 01 2c    isync
 +
fff00110    3c 40 00 00    lis  r2, 0x0
 +
fff00114    60 42 01 00    ori  r2, r2, 0x100
 +
fff00118    7c 5a 03 a6    mtspr SRR0, r2
 +
fff0011c    38 a0 00 00    li    r5, 0
 +
fff00120    7c bb 03 a6    mtspr SRR1, r5
 +
fff00124    4c 00 00 64    rfi
 +
fff00128    60 00 00 00    nop
 +
fff0012c    60 00 00 00    nop
 +
fff00130    60 00 00 00    nop
 +
</pre>
 +
 +
=== Default vector (without HID4 initialization) ===
 +
<pre>
 +
fff00100    7c 63 1a 78    xor  r3, r3, r3
 +
fff00104    7c 73 fb a6    mtspr HID4, r3
 +
fff00108    4c 00 01 2c    isync
 +
fff0010c    3c 40 00 00    lis  r2, 0
 +
fff00110    60 42 01 00    ori  r2, r2, 0x100
 +
fff00114    7c 5a 03 a6    mtspr SRR0, r2
 +
fff00118    38 a0 00 00    li    r5, 0
 +
fff0010c    7c bb 03 a6    mtspr SRR1, r5
 +
fff00120    4c 00 00 64    rfi
 +
fff00124    60 00 00 00    nop
 +
fff00128    60 00 00 00    nop
 +
fff0012c    60 00 00 00    nop
 +
</pre>
 +
 +
=== IOS_StartPPC vector ===
 +
<pre>
 +
fff00100    3c 60 00 00    lis  r3, 0
 +
fff00104    60 63 34 00    ori  r3, r3, 0x3400
 +
fff00108    7c 7a 03 a6    mtspr SRR0, r3
 +
fff0010c    38 60 00 00    li    r3, 0
 +
fff00110    7c 7b 03 a6    mtspr SRR1, r3
 +
fff00114    4c 00 00 64    rfi
 +
</pre>
    
[[Category:Official hardware]]
 
[[Category:Official hardware]]
5,579

edits