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]]