SceSblSmschedProxy: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
No edit summary
 
(26 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Module ==
== Module ==


=== Known NIDs ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! Name !! World !! Privilege !! NID
! Version !! World !! Privilege
|-
| 1.69 || SceSblSmschedProxy || Non-secure || Kernel || 0xF3BC3013
|-
|-
| 3.60 || SceSblSmschedProxy || Non-secure || Kernel || 0x254B02B3
| 0.931-3.60 || Non-secure || Kernel
|}
|}


Line 19: Line 16:
! Version !! Name !! World !! Visibility !! NID
! Version !! Name !! World !! Visibility !! NID
|-
|-
| 1.69 || [[SceSblSmschedProxy#SceSblSmSchedProxyForKernel|SceSblSmSchedProxyForKernel]] || Non-secure || Kernel || 0x15F25C84
| 0.931-3.60 || [[SceSblSmschedProxy#SceSblSmSchedProxyForKernel|SceSblSmSchedProxyForKernel]] || Non-secure || Kernel || 0x15F25C84
|-
| 3.60 || [[SceSblSmschedProxy#SceSblSmSchedProxyForKernel|SceSblSmSchedProxyForKernel]] || Non-secure || Kernel || 0x15F25C84
|}
|}


Line 27: Line 22:


<source lang="C">
<source lang="C">
 
typedef SceUInt32 SceSmSchedRequestId;
typedef unsigned int SmOperationId;


#define CRY_INTERRUPT_INDEX0 0
#define CRY_INTERRUPT_INDEX0 0
Line 35: Line 29:
#define CRY_INTERRUPT_INDEX3 3
#define CRY_INTERRUPT_INDEX3 3


#define F00D_FIFO_REGISTER_INDEX1 1
#define MAILBOX_ID1 1
#define F00D_FIFO_REGISTER_INDEX2 2
#define MAILBOX_ID2 2
#define F00D_FIFO_REGISTER_INDEX3 3
#define MAILBOX_ID3 3


enum SmStatus
enum SceSmStatus {
{
   SM_STATUS_SUSPENDED = 0x1,
   SM_STATUS_1 = 0x1,
   SM_STATUS_RUNNING = 0x2,
   SM_STATUS_2 = 0x2,
   SM_STATUS_STOPPED = 0x3,
   SM_STATUS_3 = 0x3,
   SM_STATUS_4 = 0x4,
   SM_STATUS_4 = 0x4,
   SM_STATUS_5 = 0x5,
   SM_STATUS_5 = 0x5,
   SM_STATUS_6 = 0x6,
   SM_STATUS_START_RESUME_REQUESTED = 0x6,
   SM_STATUS_7 = 0x7,
   SM_STATUS_SUSPENDING = 0x7,
   SM_STATUS_8 = 0x8,
   SM_STATUS_8 = 0x8,
   SM_STATUS_9 = 0x9,
   SM_STATUS_9 = 0x9,
   SM_STATUS_A = 0xA,
   SM_STATUS_A = 0xA,
   SM_STATUS_B = 0xB,
   SM_STATUS_SUSPEND_REQUESTED = 0xB,
   SM_STATUS_C = 0xC,
   SM_STATUS_C = 0xC
};
};


enum class F00D_cmd_index
enum class sk_cmd_index {
{
   SK_CMD_0xB01_INDEX = 0,
   F00D_CMD_B_INDEX = 0,
   SK_CMD_0xC01_INDEX = 1,
   F00D_CMD_C_INDEX = 1,
   SK_CMD_0xD01_INDEX = 2,
   F00D_CMD_D_INDEX = 2,
   SK_CMD_0xE01_INDEX = 3,
   F00D_CMD_E_INDEX = 3,
   SK_CMD_0xF01_INDEX = 4
   F00D_CMD_F_INDEX = 4,
};
};


typedef struct SceSblSmschedCallFuncCommand {
typedef struct SceSblSmschedCallFuncArg_old { // size is 0x10 (on FW 0.931) + sizeof(data)
unsigned int size;
  SceSize size;         // Size of this structure
unsigned int service_id;
  SceUInt32 func_id;
unsigned int response;
  SceUInt32 response;   // Set to 0
unsigned int unk2;
  SceUInt32 reserved;   // Set to 0
unsigned int padding[(0x40 - 0x10) / 4];
  char data[0];
unsigned int data[0];
} SceSblSmschedCallFuncArg_old;
} SceSblSmschedCallFuncCommand; /* size = 0X40 + ... */
 
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;
</source>
</source>


== SceSblSmSchedProxyForKernel ==
== SceSblSmSchedProxyForKernel ==


=== sceSblSmSchedProxyInitializeForKernel ===
=== sceSblSmSchedProxyInitForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0xA488D604
| 0.931-3.60 || 0xA488D604
|}
|}


Calls module_start if cpuid is 0.
Temp name was sceSblSmSchedProxyInitializeForKernel.
 
Calls module_start if cpuId is 0.


<source lang="C">int sceSblSmSchedProxyInitializeForKernel();</source>
<source lang="C">int sceSblSmSchedProxyInitForKernel(void);</source>


=== sceSblSmSchedProxyInvokeForKernel ===
=== sceSblSmSchedProxyInvokeForKernel ===
Other possible name: sceSblSmSchedProxyCreateSmOperationForKernel
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 1.05-3.60 || 0x1916509B
| 0.931-3.60 || 0x1916509B
|}
|}


Executes [[SceExcpmgr|smc 0x12D]] call.
Temp name was sceSblSmSchedProxyCreateSmOperationForKernel.


* priority - first smc arg
Executes [[SMC|smc 0x12D]] call.
* sm_self_data_paddr - second smc arg
* num_pairs - third smc arg


<source lang="c">
<source lang="c">
struct sm_invoke_data_block_input
typedef struct sm_invoke_data_block_input {
{
   int unk0;
   int unk0;
   int unk4;
   int unk4;
   int unk8;
   int unk8;
   int unkC;
   int unkC;
};
} sm_invoke_data_block_input;


// paddr = Physical address of the buffer containing the result of ksceKernelGetPaddrList (req.output_buffer)
// sm_self_paddr = Physical address of the buffer containing the result of sceKernelVARangeToPAVectorForDriver (req.output_buffer)
// num_pairs = number of (paddr, size) pairs in the buffer returned by ksceKernelGetPaddrList (ret_count)
// num_pa_range = number of SceKernelPARange in the buffer returned by sceKernelVARangeToPAVectorForDriver (ret_count)
int sceSblSmSchedProxyInvokeForKernel(int priority, void *sm_self_data_paddr, unsigned int num_pairs, sm_invoke_data_block_input *invoke_input, SceSblSmCommContext130 *ctx, SmOperationId *id);
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 125: Line 127:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-3.60 || 0xF35EFC1A
| 0.931-3.60 || 0xF35EFC1A
|}
|}


Executes [[SceExcpmgr|smc 0x12E]] call.
Executes [[SMC|smc 0x12E]] call.
 
<source lang="c">
struct smc_12E_data_t
{
  int status0;
  SmStatus status1;
};


int sceSblSmSchedProxyWaitForKernel(SmOperationId id, smc_12E_data_t* result);
<source lang="c">int sceSblSmSchedProxyWaitForKernel(SceSmSchedRequestId req_id, status_handler *result);</source>
</source>


=== sceSblSmSchedProxyGetStatusForKernel ===
=== sceSblSmSchedProxyGetStatusForKernel ===
Line 145: Line 139:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-3.60 || 0x27EB92F1
| 0.931-3.60 || 0x27EB92F1
|}
|}


Executes [[SceExcpmgr|smc 0x12F]] call.
Executes [[SMC|smc 0x12F]] call.


<source lang="c">
<source lang="c">int sceSblSmSchedProxyGetStatusForKernel(SceSmSchedRequestId req_id, status_handler *status);</source>
struct smc_12F_data_t
{
  int status0;
  SmStatus status1;
};


int sceSblSmSchedProxyGetStatusForKernel(SmOperationId id, smc_12F_data_t* status);
=== sceSblSmSchedProxyKillForKernel ===
</source>
 
=== sceSblSmSchedProxyChangeF00DStatusForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0xDE4EAC3C
| 0.931-3.60 || 0xDE4EAC3C
|}
|}


executes [[SceExcpmgr|smc 0x130]] call
Temp name was sceSblSmSchedProxyChangeF00DStatusForKernel.
 
Executes [[SMC|smc 0x130]] call.


<source lang="C">int sceSblSmSchedProxyChangeF00DStatusForKernel(SmOperationId id);</source>
<source lang="C">int sceSblSmSchedProxyKillForKernel(SceSmSchedRequestId req_id);</source>


=== sceSblSmSchedProxyNotImplementedMaybeSMC0x131ForKernel ===
=== SceSblSmSchedProxyForKernel_984EC9D1 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0x984EC9D1
| 0.931-3.60 || 0x984EC9D1
|}
|}


returns 0x800F0425
Reserved function along with [[SMC|smc 0x131]].
 
On FWs 0.931-3.60, does nothing and returns 0x800F0425.


=== sceSblSmSchedProxyNotImplementedMaybeSMC0x132ForKernel ===
=== SceSblSmSchedProxyForKernel_1DFC8624 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0x1DFC8624
| 0.931-3.60 || 0x1DFC8624
|}
|}


returns 0x800F0425
Reserved function along with [[SMC|smc 0x132]].
 
=== sceSblSmSchedCallFuncForKernel ===


temp name on wiki was: sceSblSmSchedProxySetCommandF00DRegisterForKernel
On FWs 0.931-3.60, does nothing and returns 0x800F0425.


=== sceSblSmSchedProxyCallFuncForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0x723B382F
| 0.931-3.60 || 0x723B382F
|}
|}


Executes [[SceExcpmgr|smc 0x133]] call.
Temp name was sceSblSmSchedProxySetCommandF00DRegisterForKernel.
 
Executes [[SMC|smc 0x133]] call.


Called by [[SceSblSsSmComm#sceSblSmCommCallFunc|sceSblSmCommCallFunc]].
Called by [[SceSblSsSmComm#sceSblSmCommCallFunc|sceSblSmCommCallFunc]].


* f00d_fifo_register_index - second smc arg
<source lang="C">
* cmd_paddr - third smc arg
// mailval is paddr | 1
 
int sceSblSmSchedProxyCallFuncForKernel(SceSmSchedRequestId req_id, int mailbox_id, SceUInt32 mailval);
<source lang="c">
// f00d_cmd_fifo_idx can be 1, 2 or 3
int sceSblSmSchedCallFuncForKernel(SmOperationId id, int f00d_fifo_register_index, SceSblSmschedCallFuncCommand* cmd_paddr);
</source>
</source>


=== sceSblSmSchedProxyGetCommandF00DRegisterForKernel ===
=== sceSblSmSchedProxyReadArm2CryForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 0.990-3.60 || 0xF70C04EC
| 0.931-3.60 || 0xF70C04EC
|}
|}


Calls sub "sceSblSmSchedProxyAccessMailbox".
Executes [[SMC|smc 0x134]] call.
 
executes [[SceExcpmgr|smc 0x134]] call


<source lang="C">int sceSblSmSchedProxyGetCommandF00DRegisterForKernel(SmOperationId id, int f00d_fifo_register_index, SceSblSmschedCallFuncCommand** cmd_paddr);</source>
<source lang="C">int sceSblSmSchedProxyReadArm2CryForKernel(SceSmSchedRequestId req_id, int mailbox_id, SceUInt32 *pMailval);</source>


=== sceSblSmSchedProxyGetUnknownF00DRegisterForKernel ===
=== sceSblSmSchedProxyWriteArm2CryForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0x3CE17233
| 0.931-3.60 || 0x3CE17233
|}
|}


executes [[SceExcpmgr|smc 0x135]] call
Executes [[SMC|smc 0x135]] call.


<source lang="C">int sceSblSmSchedProxyGetUnknownF00DRegisterForKernel(SmOperationId id, int f00d_fifo_register_index, int f00d_fifo_register_value);</source>
<source lang="C">int sceSblSmSchedProxyWriteArm2CryForKernel(SceSmSchedRequestId req_id, int mailbox_id, SceUInt32 mailval);</source>


=== sceSblSmSchedProxyWriteCry2ArmForKernel ===
=== sceSblSmSchedProxyWriteCry2ArmForKernel ===
Line 246: Line 232:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-3.60 || 0x15B0E4DF
| 0.931-3.60 || 0x15B0E4DF
|}
|}


Temp name was sceSblSmSchedProxySetStatusCodeF00DRegisterForKernel.
Temp name was sceSblSmSchedProxySetStatusCodeF00DRegisterForKernel.


Executes [[SceExcpmgr|smc 0x136]] call.
Executes [[SMC|smc 0x136]] call.


Used by [[SceSblAuthMgr]].
Used by [[SceSblAuthMgr]].


<source lang="C">int sceSblSmSchedProxyWriteCry2ArmForKernel(SmOperationId id, int f00d_fifo_register_index, int status_code);</source>
<source lang="C">int sceSblSmSchedProxyWriteCry2ArmForKernel(SceSmSchedRequestId req_id, int mailbox_id, SceUInt32 mailval);</source>


=== sceSblSmSchedProxyReadCry2ArmForKernel ===
=== sceSblSmSchedProxyReadCry2ArmForKernel ===
Line 262: Line 248:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-3.60 || 0x973A4A7D
| 0.931-3.60 || 0x973A4A7D
|}
|}


Temp name was sceSblSmSchedProxyGetStatusCodeF00DRegisterForKernel.
Temp name was sceSblSmSchedProxyGetStatusCodeF00DRegisterForKernel.


On 0.940, calls sub "sceSblSmSchedProxyAccessMailbox".
Executes [[SMC|smc 0x137]] call.
 
Executes [[SceExcpmgr|smc 0x137]] call.


Used by [[SceSblAuthMgr]].
Used by [[SceSblAuthMgr]].


<source lang="C">int sceSblSmSchedProxyReadCry2ArmForKernel(SmOperationId id, int f00d_fifo_register_index, int* status_code);</source>
<source lang="C">int sceSblSmSchedProxyReadCry2ArmForKernel(SceSmSchedRequestId req_id, int mailbox_id, SceUInt32 *pMailval);</source>


=== sceSblSmSchedProxyRegisterIntrHandlerForKernel ===
=== sceSblSmSchedProxyRegisterIntrHandlerForKernel ===
Line 280: Line 264:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-3.60 || 0x8B84AC2A
| 0.931-3.60 || 0x8B84AC2A
|}
|}


Temp name was sceSblSmSchedProxyEnableCry2ArmInterruptForKernel.
Temp name was sceSblSmSchedProxyEnableCry2ArmInterruptForKernel.


Executes [[SceExcpmgr|smc 0x138]] call.
Executes [[SMC|smc 0x138]] call.


Called by [[SceSblAuthMgr]].
Called by [[SceSblAuthMgr]].
* smcArg1_funcArg1 - second smc arg


<source lang="C">
<source lang="C">
typedef int smc_138_callback(SmOperationId id, int intr_index, int arg2, int arg3, int arg4);
typedef int sceSblSmSchedProxyIntrHandler(SceSmSchedRequestId req_id, int mailbox_id, int arg1, int arg2, int arg3);


int sceSblSmSchedProxyRegisterIntrHandlerForKernel(SmOperationId id, int intr_index, smc_138_callback *cb, int func_arg2);
int sceSblSmSchedProxyRegisterIntrHandlerForKernel(SceSmSchedRequestId req_id, int mailbox_id, sceSblSmSchedProxyIntrHandler *cb, int unk_unused);
</source>
</source>


Line 302: Line 284:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-3.60 || 0x85EDA5FC
| 0.931-3.60 || 0x85EDA5FC
|}
|}


Temp name was sceSblSmSchedProxyDisableCry2ArmInterruptForKernel.
Temp name was sceSblSmSchedProxyDisableCry2ArmInterruptForKernel.


Executes [[SceExcpmgr|smc 0x139]] call.
Executes [[SMC|smc 0x139]] call.


Called by [[SceSblAuthMgr]].
Called by [[SceSblAuthMgr]].


<source lang="C">int sceSblSmSchedProxyReleaseIntrHandlerForKernel(SmOperationId id, int intr_index);</source>
<source lang="C">int sceSblSmSchedProxyReleaseIntrHandlerForKernel(SceSmSchedRequestId req_id, int mailbox_id);</source>


=== sceSblSmSchedProxyUninitializeForKernel ===
=== sceSblSmSchedProxyUninitializeForKernel ===
Line 318: Line 300:
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0x33A3A1E2
| 0.931-3.60 || 0x33A3A1E2
|}
|}


executes [[SceExcpmgr|smc 0x13B]] call
Executes [[SMC|smc 0x13B]] call.


only executes if cpuid is 0  
Only executes if cpuId is 0.


<source lang="C">int sceSblSmSchedProxyUninitializeForKernel();</source>
<source lang="C">int sceSblSmSchedProxyUninitializeForKernel(void);</source>


=== sceSblSmSchedProxyExecuteF00DCommandForKernel ===
=== sceSblSmSchedProxyExecuteSKCommandForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0x7894B6F0
| 0.931-3.60 || 0x7894B6F0
|}
|}


executes [[SceExcpmgr|smc 0x13C]] call
Temp name was sceSblSmSchedProxyExecuteF00DCommandForKernel.


<source lang="C">int sceSblSmSchedProxyExecuteF00DCommandForKernel(F00D_cmd_index cmd_index, int unused1, int unused2, int unused3);</source>
Executes [[SMC|smc 0x13C]] call.
 
<source lang="C">int sceSblSmSchedProxyExecuteSKCommandForKernel(sk_cmd_index cmd_index, int unused1, int unused2, int unused3);</source>


This function is called by two modules:
This function is called by two modules:


[[SceSblSsMgr]] just before PSVita entering suspend mode:
[[SceSblSsMgr]] just before PSVita entering suspend mode:
<source lang="C">sceSblSmSchedProxyExecuteF00DCommandForKernel(4, 0, 0, 0);</source>
<source lang="C">sceSblSmSchedProxyExecuteSKCommandForKernel(4, 0, 0, 0);</source>


[[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">sceSblSmSchedProxyExecuteSKCommandForKernel(3, 0, 0, 0);</source>


[[Category:ARM]]
[[Category:Kernel]]
[[Category:Modules]]
[[Category:Modules]]
[[Category:Kernel]]
[[Category:Library]]

Latest revision as of 21:29, 1 May 2023

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);