Loaders: Difference between revisions
Jump to navigation
Jump to search
m (→Known loaders) |
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 |