SceSblSmschedProxy: Difference between revisions
CelesteBlue (talk | contribs) |
CelesteBlue (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
== Module == | == Module == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! Name !! World !! Privilege | ! Version !! Name !! World !! Privilege | ||
|- | |- | ||
| | | 0.931-3.60 || SceSblSmschedProxy || Non-secure || Kernel | ||
|} | |} | ||
Line 25: | Line 22: | ||
<source lang="C"> | <source lang="C"> | ||
typedef SceUInt32 SceSmSchedRequestId; | |||
typedef | |||
#define CRY_INTERRUPT_INDEX0 0 | #define CRY_INTERRUPT_INDEX0 0 | ||
Line 37: | Line 33: | ||
#define MAILBOX_ID3 3 | #define MAILBOX_ID3 3 | ||
enum | enum SceSmStatus { | ||
SM_STATUS_1 = 0x1, | SM_STATUS_1 = 0x1, | ||
SM_STATUS_2 = 0x2, | SM_STATUS_2 = 0x2, | ||
Line 60: | Line 56: | ||
}; | }; | ||
typedef struct | typedef struct SceSblSmschedCallFuncArg_old { // size is 0x10 (on FW 0.931) + sizeof(data) | ||
SceSize size; // Size of this structure | |||
SceUInt32 func_id; | |||
SceUInt32 response; // Set to 0 | |||
SceUInt32 reserved; // Set to 0 | |||
char data[0]; | |||
} SceSblSmschedCallFuncArg_old; | |||
} | |||
typedef struct SceSblSmschedCallFuncArg { // size is 0x40 (on FW 3.60) + sizeof(data) | |||
SceSize size; // Size of this structure | |||
SceUInt32 func_id; | |||
SceUInt32 response; // Set to 0 | |||
SceUInt32 reserved; // Set to 0 | |||
char padding[0x30]; | |||
char data[0]; | |||
} SceSblSmschedCallFuncArg; | |||
typedef struct status_handler { | typedef struct status_handler { | ||
int status0; | int status0; | ||
SceSmStatus status1; | |||
} status_handler; | } status_handler; | ||
typedef SceUInt32 SceSblTzsBridgeArgArea; | |||
</source> | </source> | ||
Line 93: | Line 98: | ||
=== sceSblSmSchedProxyInvokeForKernel === | === sceSblSmSchedProxyInvokeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 102: | Line 104: | ||
| 0.931-3.60 || 0x1916509B | | 0.931-3.60 || 0x1916509B | ||
|} | |} | ||
Temp name was sceSblSmSchedProxyCreateSmOperationForKernel. | |||
Executes [[SMC|smc 0x12D]] call. | Executes [[SMC|smc 0x12D]] call. | ||
<source lang="c"> | <source lang="c"> | ||
Line 118: | Line 118: | ||
// sm_self_paddr = Physical address of the buffer containing the result of sceKernelVARangeToPAVectorForDriver (req.output_buffer) | // sm_self_paddr = Physical address of the buffer containing the result of sceKernelVARangeToPAVectorForDriver (req.output_buffer) | ||
// | // num_pa_range = number of SceKernelPARange in the buffer returned by sceKernelVARangeToPAVectorForDriver (ret_count) | ||
int sceSblSmSchedProxyInvokeForKernel(SceBool priority, void *sm_self_paddr, | int sceSblSmSchedProxyInvokeForKernel(SceBool priority, void *sm_self_paddr, SceUInt32 num_pa_range, sm_invoke_data_block_input *invoke_input, SceSblSmCommContext130 *pCtx, SceSmSchedRequestId *pReqId); | ||
</source> | </source> | ||
Line 132: | Line 132: | ||
Executes [[SMC|smc 0x12E]] call. | Executes [[SMC|smc 0x12E]] call. | ||
<source lang="c">int sceSblSmSchedProxyWaitForKernel(SceSmSchedRequestId req_id, status_handler* result);</source> | <source lang="c">int sceSblSmSchedProxyWaitForKernel(SceSmSchedRequestId req_id, status_handler *result);</source> | ||
=== sceSblSmSchedProxyGetStatusForKernel === | === sceSblSmSchedProxyGetStatusForKernel === | ||
Line 144: | Line 144: | ||
Executes [[SMC|smc 0x12F]] call. | Executes [[SMC|smc 0x12F]] call. | ||
<source lang="c">int sceSblSmSchedProxyGetStatusForKernel(SceSmSchedRequestId req_id, status_handler* status);</source> | <source lang="c">int sceSblSmSchedProxyGetStatusForKernel(SceSmSchedRequestId req_id, status_handler *status);</source> | ||
=== sceSblSmSchedProxyKillForKernel === | === sceSblSmSchedProxyKillForKernel === |
Revision as of 01:25, 6 June 2020
Module
Version | Name | World | Privilege |
---|---|---|---|
0.931-3.60 | SceSblSmschedProxy | Non-secure | Kernel |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
0.931-3.60 | SceSblSmSchedProxyForKernel | Non-secure | Kernel | 0x15F25C84 |
Types
typedef SceUInt32 SceSmSchedRequestId; #define CRY_INTERRUPT_INDEX0 0 #define CRY_INTERRUPT_INDEX1 1 #define CRY_INTERRUPT_INDEX2 2 #define CRY_INTERRUPT_INDEX3 3 #define MAILBOX_ID1 1 #define MAILBOX_ID2 2 #define MAILBOX_ID3 3 enum SceSmStatus { SM_STATUS_1 = 0x1, SM_STATUS_2 = 0x2, SM_STATUS_EXIT = 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 sk_cmd_index { SK_CMD_0xB01_INDEX = 0, SK_CMD_0xC01_INDEX = 1, SK_CMD_0xD01_INDEX = 2, SK_CMD_0xE01_INDEX = 3, SK_CMD_0xF01_INDEX = 4 }; typedef struct SceSblSmschedCallFuncArg_old { // size is 0x10 (on FW 0.931) + sizeof(data) SceSize size; // Size of this structure SceUInt32 func_id; SceUInt32 response; // Set to 0 SceUInt32 reserved; // Set to 0 char data[0]; } SceSblSmschedCallFuncArg_old; typedef struct SceSblSmschedCallFuncArg { // size is 0x40 (on FW 3.60) + sizeof(data) SceSize size; // Size of this structure SceUInt32 func_id; SceUInt32 response; // Set to 0 SceUInt32 reserved; // Set to 0 char padding[0x30]; char data[0]; } SceSblSmschedCallFuncArg; typedef struct status_handler { int status0; SceSmStatus status1; } status_handler; typedef SceUInt32 SceSblTzsBridgeArgArea;
SceSblSmSchedProxyForKernel
sceSblSmSchedProxyInitForKernel
Version | NID |
---|---|
0.931-3.60 | 0xA488D604 |
Temp name was sceSblSmSchedProxyInitializeForKernel.
Calls module_start if cpuId is 0.
int sceSblSmSchedProxyInitForKernel(void);
sceSblSmSchedProxyInvokeForKernel
Version | NID |
---|---|
0.931-3.60 | 0x1916509B |
Temp name was sceSblSmSchedProxyCreateSmOperationForKernel.
Executes smc 0x12D call.
typedef struct sm_invoke_data_block_input { int unk0; int unk4; int unk8; int unkC; } sm_invoke_data_block_input; // sm_self_paddr = Physical address of the buffer containing the result of sceKernelVARangeToPAVectorForDriver (req.output_buffer) // num_pa_range = number of SceKernelPARange in the buffer returned by sceKernelVARangeToPAVectorForDriver (ret_count) int sceSblSmSchedProxyInvokeForKernel(SceBool priority, void *sm_self_paddr, SceUInt32 num_pa_range, sm_invoke_data_block_input *invoke_input, SceSblSmCommContext130 *pCtx, SceSmSchedRequestId *pReqId);
sceSblSmSchedProxyWaitForKernel
Version | NID |
---|---|
0.931-3.60 | 0xF35EFC1A |
Executes smc 0x12E call.
int sceSblSmSchedProxyWaitForKernel(SceSmSchedRequestId req_id, status_handler *result);
sceSblSmSchedProxyGetStatusForKernel
Version | NID |
---|---|
0.931-3.60 | 0x27EB92F1 |
Executes smc 0x12F call.
int sceSblSmSchedProxyGetStatusForKernel(SceSmSchedRequestId req_id, status_handler *status);
sceSblSmSchedProxyKillForKernel
Version | NID |
---|---|
0.931-3.60 | 0xDE4EAC3C |
Temp name was sceSblSmSchedProxyChangeF00DStatusForKernel.
Executes smc 0x130 call.
int sceSblSmSchedProxyKillForKernel(SceSmSchedRequestId req_id);
SceSblSmSchedProxyForKernel_984EC9D1
Version | NID |
---|---|
0.931-3.60 | 0x984EC9D1 |
Reserved function along with smc 0x131.
On FWs 0.931-3.60, does nothing and returns 0x800F0425.
SceSblSmSchedProxyForKernel_1DFC8624
Version | NID |
---|---|
0.931-3.60 | 0x1DFC8624 |
Reserved function along with smc 0x132.
On FWs 0.931-3.60, does nothing and returns 0x800F0425.
sceSblSmSchedProxyCallFuncForKernel
Version | NID |
---|---|
0.931-3.60 | 0x723B382F |
Temp name was sceSblSmSchedProxySetCommandF00DRegisterForKernel.
Executes smc 0x133 call.
Called by sceSblSmCommCallFunc.
int sceSblSmSchedProxyCallFuncForKernel(SceSmSchedRequestId req_id, int mailbox_id, SceUInt32 mailval);
sceSblSmSchedProxyReadArm2CryForKernel
Version | NID |
---|---|
0.931-3.60 | 0xF70C04EC |
Executes smc 0x134 call.
int sceSblSmSchedProxyReadArm2CryForKernel(SceSmSchedRequestId req_id, int mailbox_id, SceUInt32 *pMailval);
sceSblSmSchedProxyWriteArm2CryForKernel
Version | NID |
---|---|
0.931-3.60 | 0x3CE17233 |
Executes smc 0x135 call.
int sceSblSmSchedProxyWriteArm2CryForKernel(SceSmSchedRequestId req_id, int mailbox_id, SceUInt32 mailval);
sceSblSmSchedProxyWriteCry2ArmForKernel
Version | NID |
---|---|
0.931-3.60 | 0x15B0E4DF |
Temp name was sceSblSmSchedProxySetStatusCodeF00DRegisterForKernel.
Executes smc 0x136 call.
Used by SceSblAuthMgr.
int sceSblSmSchedProxyWriteCry2ArmForKernel(SceSmSchedRequestId req_id, int mailbox_id, SceUInt32 mailval);
sceSblSmSchedProxyReadCry2ArmForKernel
Version | NID |
---|---|
0.931-3.60 | 0x973A4A7D |
Temp name was sceSblSmSchedProxyGetStatusCodeF00DRegisterForKernel.
Executes smc 0x137 call.
Used by SceSblAuthMgr.
int sceSblSmSchedProxyReadCry2ArmForKernel(SceSmSchedRequestId req_id, int mailbox_id, SceUInt32 *pMailval);
sceSblSmSchedProxyRegisterIntrHandlerForKernel
Version | NID |
---|---|
0.931-3.60 | 0x8B84AC2A |
Temp name was sceSblSmSchedProxyEnableCry2ArmInterruptForKernel.
Executes smc 0x138 call.
Called by SceSblAuthMgr.
typedef int sceSblSmSchedProxyIntrHandler(SceSmSchedRequestId req_id, int mailbox_id, int arg1, int arg2, int arg3); int sceSblSmSchedProxyRegisterIntrHandlerForKernel(SceSmSchedRequestId req_id, int mailbox_id, sceSblSmSchedProxyIntrHandler *cb, int unk_unused);
sceSblSmSchedProxyReleaseIntrHandlerForKernel
Version | NID |
---|---|
0.931-3.60 | 0x85EDA5FC |
Temp name was sceSblSmSchedProxyDisableCry2ArmInterruptForKernel.
Executes smc 0x139 call.
Called by SceSblAuthMgr.
int sceSblSmSchedProxyReleaseIntrHandlerForKernel(SceSmSchedRequestId req_id, int mailbox_id);
sceSblSmSchedProxyUninitializeForKernel
Version | NID |
---|---|
0.931-3.60 | 0x33A3A1E2 |
Executes smc 0x13B call.
Only executes if cpuId is 0.
int sceSblSmSchedProxyUninitializeForKernel(void);
sceSblSmSchedProxyExecuteSKCommandForKernel
Version | NID |
---|---|
0.931-3.60 | 0x7894B6F0 |
Temp name was sceSblSmSchedProxyExecuteF00DCommandForKernel.
Executes smc 0x13C call.
int sceSblSmSchedProxyExecuteSKCommandForKernel(sk_cmd_index cmd_index, int unused1, int unused2, int unused3);
This function is called by two modules:
SceSblSsMgr just before PSVita entering suspend mode:
sceSblSmSchedProxyExecuteSKCommandForKernel(4, 0, 0, 0);
SceSdif at init (at PSVita boot and maybe called after PSVita resume):
sceSblSmSchedProxyExecuteSKCommandForKernel(3, 0, 0, 0);