Changes

906 bytes added ,  08:13, 27 September 2022
m
whoops, should've done a full page edit
Line 1: Line 1:  
The [[Hollywood]] includes an ARM9 core to handle I/O and security, nicknamed the '''Starlet''' by [[fail0verflow]], but internally known as the '''IOP''', short for Input/Output Processor.
 
The [[Hollywood]] includes an ARM9 core to handle I/O and security, nicknamed the '''Starlet''' by [[fail0verflow]], but internally known as the '''IOP''', short for Input/Output Processor.
 
This is a very interesting piece of hardware, as it basically does everything that makes a Wii different from a GameCube.
 
This is a very interesting piece of hardware, as it basically does everything that makes a Wii different from a GameCube.
 +
 +
The Starlet contains an internal 96KB SRAM; if [[IOS]] needs more memory, it can lock part of MEM2 to prevent [[Broadway]] access.
    
''Note: this page is incomplete. Please expand it as you see fit!''
 
''Note: this page is incomplete. Please expand it as you see fit!''
Line 10: Line 12:  
* ARM and thumb instruction set
 
* ARM and thumb instruction set
 
* Clocked at 243MHz (Hollywood clock)
 
* Clocked at 243MHz (Hollywood clock)
 +
 +
== Exceptions ==
 +
Exception vectors are located at <code>ffff0000</code>. Each exception is given 4 bytes, and usually branches elsewhere.
 +
 +
{| class="wikitable"
 +
! Index
 +
! [[mini]] name
 +
! Description
 +
|-
 +
| 0
 +
| v_reset
 +
| Hardware reset. Typically the entrypoint for official software.
 +
|-
 +
| 1
 +
| v_undf
 +
| Undefined instruction, used as handler for [[IOS/Syscalls|IOS syscalls]]
 +
|-
 +
| 2
 +
| v_swi
 +
| SVC/SWI instruction, used for [[IOS/Syscalls#Syscalls_.28via_ARM_syscall_instruction.29|IOS SWI syscalls]]
 +
|-
 +
| 3
 +
| v_instr_abrt
 +
| Instruction abort
 +
|-
 +
| 4
 +
| v_data_abrt
 +
| Data abort
 +
|-
 +
| 5
 +
| v_reserved
 +
| Reserved
 +
|-
 +
| 6
 +
| v_irq
 +
| [[Hollywood/IRQs|IRQ]]
 +
|-
 +
| 7
 +
| v_fiq
 +
| FIQ
 +
|}
    
== Boot ==
 
== Boot ==
Line 16: Line 59:     
*Starlet boots from an internal Mask ROM, BOOT0 (about 1300 bytes of code out of 4K possible)
 
*Starlet boots from an internal Mask ROM, BOOT0 (about 1300 bytes of code out of 4K possible)
*[[boot0]] decrypts, verifies, and runs the first few blocks of NAND, BOOT1 (up to the first 48 pages of flash)
+
*[[boot0]] decrypts, verifies, and runs the first few blocks of NAND, BOOT1 (up to the first 47 pages of flash)
* [[boot1]] locates, loads, decrypts, verifies, and runs BOOT2
+
*[[boot1]] locates, loads, decrypts, verifies, and runs BOOT2
*[[boot2]] bootstrap then loads the embedded ELF file
   
*[[boot2]] starts the IOS
 
*[[boot2]] starts the IOS
*[[IOS]] loads code into the EXI buffer and bootstraps the {{hw|Broadway}}
+
*[[IOS]] loads [[System Menu]] into memory and bootstraps the {{hw|Broadway}} using the [[Hardware/External_Interface#EXI_boot_vector|EXI boot vector]]
    
== Links ==
 
== Links ==
Line 31: Line 73:  
* [[ARM Binaries]] - the formats used for Starlet executable code
 
* [[ARM Binaries]] - the formats used for Starlet executable code
 
* [[WAD Files]] are used for BOOT2 and the IOS
 
* [[WAD Files]] are used for BOOT2 and the IOS
 +
* [https://www.freepatentsonline.com/y2005/0132217.html Patent for Starlet and IOS]
    
[[Category:Hardware]]
 
[[Category:Hardware]]