BIOS Boot Process
Upon reset, both the EE and IOP begin executing at BFC00000h
. The BIOS checks which CPU is executing by checking COP0.PRid
(register 15). If PRid >= 59h
, the EE boot code is executed. Else, the IOP boot code is executed.
EE boot process
- The EE clock speed is measured. (SCPH-10000 uses COP0.Count; SCPH-39001 counts HBLANKs using one of the timers. Unknown what other BIOSes use.)
- The memory controller is initialized, giving access to the 32 MB of RDRAM.
- The EE kernel is copied into RAM starting at virtual address
80000000h
. The BIOS jumps to the entry point at80001000h
. - The TLB and PGIF handler are initialized and various hardware components are reset.
- EENULL, an idle loop thread, is loaded into
00081FC0h
. - SIF DMA is initialized. The EE writes to an SIF register and waits for a reply from the IOP.
- The EELOAD module is loaded, which in turn loads OSDSYS.
OSDSYS, once loaded, is responsible for bringing up the "Sony Computer Entertainment" screen and the browser.
IOP boot process
- Various hardware registers are initialized, and
IOPBOOT
is loaded. -
IOPBOOT
findsSYSMEM
andLOADCORE
, loads them into memory, and executes their entry points. -
LOADCORE
boots all of the IOP modules in the BIOS, starting withEXCEPMAN
. - At some point, SIF is initialized. The IOP waits for the EE to send a message and replies over another SIF register.
- Once all modules have been loaded, the IOP enters an infinite loop, waiting for the EE to send commands.