Loaders: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
No edit summary
Line 40: Line 40:
{| class="wikitable"
{| class="wikitable"
|-
|-
! Address !! Usage
! Address !! Usage !! Comments
|-
|-
| 0x3E000 || Wait flag
| 0x3E000 || Wait flag || If (flag==0){wait;} // use 0xFF00000000ULL
|-
|-
| 0x3E400 || EID0
| 0x3E400 || EID0 ||
|-
|-
| 0x3E800 || Arguments
| 0x3E800 || Arguments ||
|-
|-
| 0x3EC00 || QA-Token
| 0x3EC00 || QA-Token || If not used set to -1
|-
|-
| 0x3F000 || Program revoke list
| 0x3F000 || Program revoke list ||
|}
 
==== Arguments ====
 
Depending which isolated module you want to load, you would need to pass it different arguments.
{| class="wikitable"
|-
! Size !! Name !! spp_verifier !!
|-
|u64 || prog_auth_id; || 0x1050000003000001
|-
|u64 || lpar_auth_id; || 0x1070000002000001
|-
|u64 || *spu_module; || SPU - address in ram
|-
|u64 || *spu_module_arg1; || Profile - address in ram ||
|-
|u64 || spu_module_arg1_size; || sizeof(profile) ||
|-
|u64 || *spu_module_arg2; || Not used ||
|-
|u64 || spu_module_arg2_size; || Not used ||
|-
|u8 || res1[16]; || Unknown
|-
|u64 || field48; || 3
|-
|u8 res2[16]; || Unknown
|}
|}

Revision as of 23:51, 12 December 2011

Explaination

Loaders are used for loading other modules.

Commonly found in CoreOS and Flash.


Known loaders

Loader Location Type Remarks
bootldr Flash Boot Loader primairy loader from chain of trust
metldr Flash Meta Loader aka asecure_loader. Loads other loaders
appldr CoreOS Application Loader loads vsh.self (Userspace Module)
isoldr CoreOS Isolation Loader loading isolated SPU modules
lv1ldr CoreOS Hypervisor Loader loads lv1.self (Hypervisor)
lv2ldr CoreOS Supervisor Loader loads lv2_kernel.self (Supervisor kernel)

Stop Codes

Stop Code Module Remark
0x30 isoldr Version mismatch (isoldr version differs from version returned by SPU channel 73).

isoldr

Used for loading isolated SPU modules.

LS Parameters layout

Address Usage Comments
0x3E000 Wait flag If (flag==0){wait;} // use 0xFF00000000ULL
0x3E400 EID0
0x3E800 Arguments
0x3EC00 QA-Token If not used set to -1
0x3F000 Program revoke list

Arguments

Depending which isolated module you want to load, you would need to pass it different arguments.

Size Name spp_verifier
u64 prog_auth_id; 0x1050000003000001
u64 lpar_auth_id; 0x1070000002000001
u64 *spu_module; SPU - address in ram
u64 *spu_module_arg1; Profile - address in ram
u64 spu_module_arg1_size; sizeof(profile)
u64 *spu_module_arg2; Not used
u64 spu_module_arg2_size; Not used
u8 res1[16]; Unknown
u64 field48; 3
u8 res2[16]; Unknown