RO:LoadExeCRO: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 54: | Line 54: | ||
| Unknown | | Unknown | ||
|} | |} | ||
=Description= | |||
This loads a [[CRO0|CRO]], and maps virtual memory for it with the required memory-permissions. The address for cmdword[2] is calculated by the user-process like so: when cmdword[1](inputaddr) is <0x08000000, the address used is the same one from inputaddr. Otherwise, the address is: mapvaddr = inputaddr - (0x08000000 - <main-process .text address + .text, .rodata, .data, and .bss size aligned to pagesize>); | |||
Revision as of 07:00, 19 January 2014
Request
| Index Word | Description |
|---|---|
| 0 | Header code [0x000402C2] |
| 1 | Process-memory input CRO address(usually located on the process heap). |
| 2 | Process-memory address where the CRO will be mapped, starting at the CRO header(normally in the 0x00100000-0x04000000 range). |
| 3 | Total size of input CRO. |
| 4 | Process-memory buffer address to use for the CRO <data-section0>, all CRO <data-section0> addresses are automatically adjusted to use this address. |
| 5 | Usually zero? |
| 6 | ? |
| 7 | Process-memory buffer address to use for the CRO <data-section1>, all CRO <data-section1> addresses are automatically adjusted to use this address. |
| 8-11 | Unknown |
| 12 | Must be zero |
| 13 | KProcess handle |
Response
| Index Word | Description |
|---|---|
| 0 | Header code |
| 1 | Result code |
| 2 | Unknown |
Description
This loads a CRO, and maps virtual memory for it with the required memory-permissions. The address for cmdword[2] is calculated by the user-process like so: when cmdword[1](inputaddr) is <0x08000000, the address used is the same one from inputaddr. Otherwise, the address is: mapvaddr = inputaddr - (0x08000000 - <main-process .text address + .text, .rodata, .data, and .bss size aligned to pagesize>);