SceSblSmschedProxy: Difference between revisions
Jump to navigation
Jump to search
Line 88: | Line 88: | ||
<source lang="C">int sceSblSmSchedProxyInitializeForKernel();</source> | <source lang="C">int sceSblSmSchedProxyInitializeForKernel();</source> | ||
=== sceSblSmSchedProxyCreateSmOperationForKernel === | === sceSblSmSchedProxyCreateSmOperationForKernel === | ||
Line 131: | Line 117: | ||
// num_pairs = number of (paddr, size) pairs in the buffer returned by ksceKernelGetPaddrList (ret_count) | // num_pairs = number of (paddr, size) pairs in the buffer returned by ksceKernelGetPaddrList (ret_count) | ||
int sceSblSmSchedProxyCreateSmOperationForKernel(int priority, void *sm_self_data_paddr, unsigned int num_pairs, sm_invoke_data_block_input *invoke_input, SceSblSmCommContext130 *ctx, SmOperationId *id); | int sceSblSmSchedProxyCreateSmOperationForKernel(int priority, void *sm_self_data_paddr, unsigned int num_pairs, sm_invoke_data_block_input *invoke_input, SceSblSmCommContext130 *ctx, SmOperationId *id); | ||
</source> | |||
=== sceSblSmSchedProxyWaitForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.05 || 0xF35EFC1A | |||
|- | |||
| 3.60 || 0xF35EFC1A | |||
|} | |||
executes [[SceExcpmgr|smc 12E]] call | |||
<source lang="c"> | |||
int sceSblSmSchedProxyWaitForKernel(SmOperationId id, smc_12E_data_t* result); | |||
</source> | </source> | ||
Line 155: | Line 157: | ||
</source> | </source> | ||
=== | === sceSblSmSchedProxyChangeF00DStatusForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xDE4EAC3C | ||
|} | |} | ||
executes [[SceExcpmgr|smc 130]] call | |||
<source lang="C">int sceSblSmSchedProxyChangeF00DStatusForKernel(SmOperationId id);</source> | |||
=== sceSblSmSchedProxyNotImplementedMaybeSMC0x131ForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x984EC9D1 | |||
|} | |||
returns 0x800F0425 | |||
=== | === sceSblSmSchedProxyNotImplementedMaybeSMC0x132ForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0x1DFC8624 | |||
| 3.60 || | |||
|} | |} | ||
returns 0x800F0425 | |||
=== sceSblSmSchedProxySetCommandF00DRegisterForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x723B382F | ||
|} | |} | ||
Executes [[SceExcpmgr|smc 133]] call. | |||
Called by [[SceSblSsSmComm#sceSblSmCommCallFunc|sceSblSmCommCallFunc]]. | |||
* f00d_fifo_register_index - second smc arg | |||
* cmd_paddr - third smc arg | |||
<source lang=" | <source lang="c"> | ||
// f00d_cmd_fifo_idx can be 1, 2 or 3 | |||
int sceSblSmSchedProxySetCommandF00DRegisterForKernel(SmOperationId id, int f00d_fifo_register_index, SceSblSmschedCallFuncCommand* cmd_paddr); | |||
</source> | |||
=== sceSblSmSchedProxyGetCommandF00DRegisterForKernel === | === sceSblSmSchedProxyGetCommandF00DRegisterForKernel === | ||
Line 288: | Line 294: | ||
<source lang="C">int sceSblSmSchedProxyDisableCry2ArmInterruptForKernel(SmOperationId id, int intr_index);</source> | <source lang="C">int sceSblSmSchedProxyDisableCry2ArmInterruptForKernel(SmOperationId id, int intr_index);</source> | ||
=== sceSblSmSchedProxyUninitializeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x33A3A1E2 | |||
|} | |||
executes [[SceExcpmgr|smc 13B]] call | |||
only excutes if cpuid is 0 | |||
<source lang="C">int sceSblSmSchedProxyUninitializeForKernel();</source> | |||
=== sceSblSmSchedProxyExecuteF00DCommandForKernel === | === sceSblSmSchedProxyExecuteF00DCommandForKernel === | ||
Line 308: | Line 328: | ||
[[SceSdif]] at [[SceSdif#init|init]] (at PSVita boot and maybe called after PSVita resume): | [[SceSdif]] at [[SceSdif#init|init]] (at PSVita boot and maybe called after PSVita resume): | ||
<source lang="C">sceSblSmSchedProxyExecuteF00DCommandForKernel(3, 0, 0, 0);</source> | <source lang="C">sceSblSmSchedProxyExecuteF00DCommandForKernel(3, 0, 0, 0);</source> | ||
[[Category:Modules]] | [[Category:Modules]] | ||
[[Category:Kernel]] | [[Category:Kernel]] |
Revision as of 00:06, 1 October 2018
Module
Known NIDs
Version | Name | World | Privilege | NID |
---|---|---|---|---|
1.69 | SceSblSmschedProxy | Non-secure | Kernel | 0xF3BC3013 |
3.60 | SceSblSmschedProxy | Non-secure | Kernel | 0x254B02B3 |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69 | SceSblSmSchedProxyForKernel | Non-secure | Kernel | 0x15F25C84 |
3.60 | SceSblSmSchedProxyForKernel | Non-secure | Kernel | 0x15F25C84 |
Types
typedef unsigned int SmOperationId; #define CRY_INTERRUPT_INDEX0 0 #define CRY_INTERRUPT_INDEX1 1 #define CRY_INTERRUPT_INDEX2 2 #define CRY_INTERRUPT_INDEX3 3 #define F00D_FIFO_REGISTER_INDEX1 1 #define F00D_FIFO_REGISTER_INDEX2 2 #define F00D_FIFO_REGISTER_INDEX3 3 enum SmStatus { SM_STATUS_1 = 0x1, SM_STATUS_2 = 0x2, SM_STATUS_3 = 0x3, SM_STATUS_4 = 0x4, SM_STATUS_5 = 0x5, SM_STATUS_6 = 0x6, SM_STATUS_7 = 0x7, SM_STATUS_8 = 0x8, SM_STATUS_9 = 0x9, SM_STATUS_A = 0xA, SM_STATUS_B = 0xB, SM_STATUS_C = 0xC, }; enum class F00D_cmd_index { F00D_CMD_B_INDEX = 0, F00D_CMD_C_INDEX = 1, F00D_CMD_D_INDEX = 2, F00D_CMD_E_INDEX = 3, F00D_CMD_F_INDEX = 4, }; typedef struct SceSblSmschedCallFuncCommand { unsigned int size; unsigned int service_id; unsigned int response; unsigned int unk2; unsigned int padding[(0x40 - 0x10) / 4]; unsigned int data[0]; } SceSblSmschedCallFuncCommand; /* size = 0X40 + ... */
SceSblSmSchedProxyForKernel
sceSblSmSchedProxyInitializeForKernel
Version | NID |
---|---|
3.60 | 0xA488D604 |
calls module_start if cpuid is 0
int sceSblSmSchedProxyInitializeForKernel();
sceSblSmSchedProxyCreateSmOperationForKernel
Version | NID |
---|---|
1.05 | 0x1916509B |
3.60 | 0x1916509B |
executes smc 12D call
- priority - first smc arg
- sm_self_data_paddr - second smc arg
- num_pairs - third smc arg
struct sm_invoke_data_block_input { int unk0; int unk4; int unk8; int unkC; }; // paddr = Physical address of the buffer containing the result of ksceKernelGetPaddrList (req.output_buffer) // num_pairs = number of (paddr, size) pairs in the buffer returned by ksceKernelGetPaddrList (ret_count) int sceSblSmSchedProxyCreateSmOperationForKernel(int priority, void *sm_self_data_paddr, unsigned int num_pairs, sm_invoke_data_block_input *invoke_input, SceSblSmCommContext130 *ctx, SmOperationId *id);
sceSblSmSchedProxyWaitForKernel
Version | NID |
---|---|
1.05 | 0xF35EFC1A |
3.60 | 0xF35EFC1A |
executes smc 12E call
int sceSblSmSchedProxyWaitForKernel(SmOperationId id, smc_12E_data_t* result);
sceSblSmSchedProxyGetStatusForKernel
Version | NID |
---|---|
1.05 | 0x27EB92F1 |
3.60 | 0x27EB92F1 |
executes smc 12F call
struct smc_12F_data_t { int status0; SmStatus status1; }; int sceSblSmSchedProxyGetStatusForKernel(int id, smc_12F_data_t* status);
sceSblSmSchedProxyChangeF00DStatusForKernel
Version | NID |
---|---|
3.60 | 0xDE4EAC3C |
executes smc 130 call
int sceSblSmSchedProxyChangeF00DStatusForKernel(SmOperationId id);
sceSblSmSchedProxyNotImplementedMaybeSMC0x131ForKernel
Version | NID |
---|---|
3.60 | 0x984EC9D1 |
returns 0x800F0425
sceSblSmSchedProxyNotImplementedMaybeSMC0x132ForKernel
Version | NID |
---|---|
3.60 | 0x1DFC8624 |
returns 0x800F0425
sceSblSmSchedProxySetCommandF00DRegisterForKernel
Version | NID |
---|---|
3.60 | 0x723B382F |
Executes smc 133 call.
Called by sceSblSmCommCallFunc.
- f00d_fifo_register_index - second smc arg
- cmd_paddr - third smc arg
// f00d_cmd_fifo_idx can be 1, 2 or 3 int sceSblSmSchedProxySetCommandF00DRegisterForKernel(SmOperationId id, int f00d_fifo_register_index, SceSblSmschedCallFuncCommand* cmd_paddr);
sceSblSmSchedProxyGetCommandF00DRegisterForKernel
Version | NID |
---|---|
3.60 | 0xF70C04EC |
executes smc 134 call
int sceSblSmSchedProxyGetCommandF00DRegisterForKernel(SmOperationId id, int f00d_fifo_register_index, SceSblSmschedCallFuncCommand** cmd_paddr);
sceSblSmSchedProxyGetUnknownF00DRegisterForKernel
Version | NID |
---|---|
3.60 | 0x3CE17233 |
executes smc 135 call
int sceSblSmSchedProxyGetUnknownF00DRegisterForKernel(SmOperationId id, int f00d_fifo_register_index, int f00d_fifo_register_value);
sceSblSmSchedProxySetStatusCodeF00DRegisterForKernel
Version | NID |
---|---|
3.60 | 0x15B0E4DF |
executes smc 136 call
Called by SceSblAuthMgr.
int sceSblSmSchedProxySetStatusCodeF00DRegisterForKernel(SmOperationId id, int f00d_fifo_register_index, int status_code);
sceSblSmSchedProxyGetStatusCodeF00DRegisterForKernel
Version | NID |
---|---|
3.60 | 0x973A4A7D |
executes smc 137 call
Called by SceSblAuthMgr.
int sceSblSmSchedProxyGetStatusCodeF00DRegisterForKernel(SmOperationId id, int f00d_fifo_register_index, int* status_code);
sceSblSmSchedProxyEnableCry2ArmInterruptForKernel
Version | NID |
---|---|
3.60 | 0x8B84AC2A |
executes smc 138 call
Called by SceSblAuthMgr.
- smcArg1_funcArg1 - second smc arg
typedef int smc_138_callback(SmOperationId id, int intr_index, int arg2, int arg3, int arg4); int sceSblSmSchedProxyEnableCry2ArmInterruptForKernel(SmOperationId id, int intr_index, smc_138_callback *cb, int func_arg2);
sceSblSmSchedProxyDisableCry2ArmInterruptForKernel
Version | NID |
---|---|
3.60 | 0x85EDA5FC |
executes smc 139 call
Called by SceSblAuthMgr.
int sceSblSmSchedProxyDisableCry2ArmInterruptForKernel(SmOperationId id, int intr_index);
sceSblSmSchedProxyUninitializeForKernel
Version | NID |
---|---|
3.60 | 0x33A3A1E2 |
executes smc 13B call
only excutes if cpuid is 0
int sceSblSmSchedProxyUninitializeForKernel();
sceSblSmSchedProxyExecuteF00DCommandForKernel
Version | NID |
---|---|
3.60 | 0x7894B6F0 |
executes smc 13C call
int sceSblSmSchedProxyExecuteF00DCommandForKernel(F00D_cmd_index cmd_index, int unused1, int unused2, int unused3);
This function is called by two modules:
SceSblSsMgr just before PSVita entering suspend mode:
sceSblSmSchedProxyExecuteF00DCommandForKernel(4, 0, 0, 0);
SceSdif at init (at PSVita boot and maybe called after PSVita resume):
sceSblSmSchedProxyExecuteF00DCommandForKernel(3, 0, 0, 0);