XRPC
From t-hack.com - Hack X300T / X301T
(New page: Making a xrpc (secure remote procedure call) to the to SMP8630 xpu works like this :<br> 1) Build a xrpc_block_header at VIRTUAL address $A <code><pre> #define XRPC_ID_GETSERIAL 0 // ...) |
|||
Line 36: | Line 36: | ||
2) Acquire XRPC_MUTEX aka (REG_BASE_host_interface+host_mutex10) by reading from XRPC_MUTEX until the return value is 0<br> | 2) Acquire XRPC_MUTEX aka (REG_BASE_host_interface+host_mutex10) by reading from XRPC_MUTEX until the return value is 0<br> | ||
− | 3) Tell the XOS where to find your xrpc_block_header by writing the PHYSICAL address | + | 3) Tell the XOS where to find your xrpc_block_header by writing the PHYSICAL address $A to (REG_BASE_cpu_block+LR_XPU_STAGE), aka CPU_LOCALRAM_STAGE, aka (REG_BASE_cpu_block+CPU_LOCALRAM_SIZE-4)<br> |
4) Set SOFT_IRQ_XRPC at (REG_BASE_xpu_block+CPU_irq_softset) to tell the XOS that there is a valid xrpc_block_header<br> | 4) Set SOFT_IRQ_XRPC at (REG_BASE_xpu_block+CPU_irq_softset) to tell the XOS that there is a valid xrpc_block_header<br> | ||
5) Poll (REG_BASE_xpu_block+CPU_irq_softset) until SOFT_IRQ_XRPC is 0 which means that the xrpc call has finished<br> | 5) Poll (REG_BASE_xpu_block+CPU_irq_softset) until SOFT_IRQ_XRPC is 0 which means that the xrpc call has finished<br> | ||
Line 43: | Line 43: | ||
8) Use the returned parameters from param0-param4 | 8) Use the returned parameters from param0-param4 | ||
− | This is how the whole shebang looks like in reality, TV2Engine.dll's DoPlatformSpecificInitialization from the DRA nk.bin : | + | This is how the whole shebang looks like in reality, TV2Engine.dll's DoPlatformSpecificInitialization from the DRA nk.bin. The sub builds a xrpc block at 0xA0190000 and calls XRPC_ID_BONDINGCOMMENT, then checks the return values.<br> |
+ | [[Image:Bondingcomment_DRA.png]] |