SceSblSmschedProxy

From Vita Development Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Module

Version World Privilege
0.931-3.60 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_SUSPENDED = 0x1,
   SM_STATUS_RUNNING = 0x2,
   SM_STATUS_STOPPED = 0x3,
   SM_STATUS_4 = 0x4,
   SM_STATUS_5 = 0x5,
   SM_STATUS_START_RESUME_REQUESTED = 0x6,
   SM_STATUS_SUSPENDING = 0x7,
   SM_STATUS_8 = 0x8,
   SM_STATUS_9 = 0x9,
   SM_STATUS_A = 0xA,
   SM_STATUS_SUSPEND_REQUESTED = 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.

// mailval is paddr | 1
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);