Difference between revisions of "SceKernelDmacMgr"

From Vita Development Wiki
Jump to navigation Jump to search
(28 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
Direct memory access control Manager
 +
 
== Module ==
 
== Module ==
  
Line 19: Line 21:
 
! Version !! Name !! World !! Visibility !! NID
 
! Version !! Name !! World !! Visibility !! NID
 
|-
 
|-
| 1.69-3.60 || [[SceKernelDmacMgr#SceDmacmgrForDriver|SceDmacmgrForDriver]] || Non-secure || Kernel || 0xEB4E3738
+
| 0.990-3.60 || [[SceKernelDmacMgr#SceDmacmgrForDriver|SceDmacmgrForDriver]] || Non-secure || Kernel || 0xEB4E3738
 +
|-
 +
| 0.990 || [[SceKernelDmacMgr#SceDmacmgr|SceDmacmgr]] || Non-secure || User || not present
 
|-
 
|-
 
| 3.60 || [[SceKernelDmacMgr#SceDmacmgr|SceDmacmgr]] || Non-secure || User || 0xA9E5B2F0
 
| 3.60 || [[SceKernelDmacMgr#SceDmacmgr|SceDmacmgr]] || Non-secure || User || 0xA9E5B2F0
Line 48: Line 52:
  
 
== SceDmacmgrForDriver ==
 
== SceDmacmgrForDriver ==
 +
 +
=== sceKernelDmaOpSetupChainForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.990-3.60 || 0x167079FC
 +
|}
 +
 +
<source lang="C">int sceKernelDmaOpSetupChainForDriver(uint32_t opid, void *pTag, int *a3, uint32_t flag);</source>
  
 
=== sceKernelDmaOpQuitForDriver ===
 
=== sceKernelDmaOpQuitForDriver ===
Line 54: Line 68:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x03052D0D
+
| 0.990-3.60 || 0x03052D0D
 
|}
 
|}
 +
 +
<source lang="C">int sceKernelDmaOpQuitForDriver(int opid);</source>
  
 
=== sceKernelDmaOpAllocForDriver ===
 
=== sceKernelDmaOpAllocForDriver ===
Line 62: Line 78:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x7CD5088A
+
| 0.990-3.60 || 0x7CD5088A
 
|}
 
|}
  
Line 70: Line 86:
 
! Module !! Name
 
! Module !! Name
 
|-
 
|-
| SceSblSsMgr || SceSblDmac5Common
+
| SceSblSsMgr || SceSblDmac5Common, Dmac5Test_Direct
 
|-
 
|-
 
| SceDisplay || SceDisplay
 
| SceDisplay || SceDisplay
Line 79: Line 95:
 
|}
 
|}
  
<source lang="C">int sceKernelDmaOpAllocForDriver(char* name);</source>
+
Allocate 0x60 bytes of heap.
 +
 
 +
Return opid = (uint)dma_op_heap_addr >> 1 | 1;
 +
 
 +
<source lang="C">
 +
typedef struct SceDmaOpAlloc { // size is 0x60 on FW 0.990
 +
uint unk_0;
 +
uint unk_4;
 +
uint magic; // 0x81005001
 +
SceUID evfId;
 +
uint unk_10;
 +
uint16_t unk_14; // 1
 +
uint16_t unk_16;
 +
uint maybe_callback_1;
 +
uint stat;
 +
char unk_20[0x14];
 +
int curchain;
 +
uint unk_38; // 0
 +
uint unk_3C;
 +
const char opname[0x20];
 +
} SceDmaOpAlloc;
 +
 
 +
int sceKernelDmaOpAllocForDriver(const char* name);</source>
  
 
=== sceKernelDmaOpAssignForDriver ===
 
=== sceKernelDmaOpAssignForDriver ===
Line 86: Line 124:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xFCE4171A
+
| 0.990-3.60 || 0xFCE4171A
 
|}
 
|}
  
 
Executes [[Dmac5|Dmac5 command]].
 
Executes [[Dmac5|Dmac5 command]].
  
<source lang="C">int sceKernelDmaOpAssignForDriver(int id, int unk1, int unk2);</source>
+
<source lang="C">int sceKernelDmaOpAssignForDriver(int opid, int unk1, int unk2);</source>
  
 
=== sceKernelDmaOpFreeForDriver ===
 
=== sceKernelDmaOpFreeForDriver ===
Line 98: Line 136:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xADFF1186
+
| 0.990-3.60 || 0xADFF1186
 
|}
 
|}
  
<source lang="C">int sceKernelDmaOpFreeForDriver(int id);</source>
+
<source lang="C">int sceKernelDmaOpFreeForDriver(int opid);</source>
  
 
=== sceKernelDmaOpConcatenateForDriver ===
 
=== sceKernelDmaOpConcatenateForDriver ===
Line 108: Line 146:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xA4454DEA
+
| 0.990-3.60 || 0xA4454DEA
 
|}
 
|}
  
Line 116: Line 154:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x543F54CF
+
| 0.990-3.60 || 0x543F54CF
 
|}
 
|}
 +
 +
<source lang="C">int sceKernelDmaOpEnQueueForDriver(int opid);</source>
  
 
=== sceKernelDmaOpDeQueueForDriver ===
 
=== sceKernelDmaOpDeQueueForDriver ===
Line 124: Line 164:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x7433F70F
+
| 0.990-3.60 || 0x7433F70F
 
|}
 
|}
  
Line 132: Line 172:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xCF627CFD
+
| 0.990-3.60 || 0xCF627CFD
 
|}
 
|}
 +
 +
<source lang="C">int sceKernelDmaOpSetCallbackForDriver(int opid, int a2, int a3);</source>
  
 
=== sceKernelDmaOpSyncForDriver ===
 
=== sceKernelDmaOpSyncForDriver ===
Line 140: Line 182:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x397A917C
+
| 0.990-3.60 || 0x397A917C
 
|}
 
|}
 +
 +
<source lang="C">int sceKernelDmaOpSyncForDriver(int opid, SceUInt32 op_sync_mode, SceUInt32 timeout, SceInt32 *result);</source>
  
 
=== sceKernelDmacMemcpyForDriver ===
 
=== sceKernelDmacMemcpyForDriver ===
Line 148: Line 192:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x00896B11
+
| 0.990-3.60 || 0x00896B11
 +
|}
 +
 
 +
=== sceKernelDmacMemsetForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.990-3.60 || 0x4BAC049B
 
|}
 
|}
 +
 +
=== sceKernelDmaOpSetupDirectForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.990-3.60 || 0x01A599E0
 +
|}
 +
 +
<source lang="C">
 +
typedef struct SceDmaOpKey {
 +
char data[0x4C];
 +
} SceDmaOpKey;
 +
 +
int sceKernelDmaOpSetupDirectForDriver(int opid, SceDmaOpKey *a2, int a3);</source>
  
 
=== sceKernelDmacMemcpyAsyncForDriver ===
 
=== sceKernelDmacMemcpyAsyncForDriver ===
Line 156: Line 223:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x6E81B8BF
+
| 0.990 || 0x6E81B8BF
 +
|-
 +
| 3.60 || not present
 +
|}
 +
 
 +
=== sceKernelDmacMemsetAsyncForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.990 || 0x6FD7F708
 +
|-
 +
| 3.60 || not present
 +
|}
 +
 
 +
=== SceDmacmgrForDriver_BCBB5E85 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.990-3.60 || 0xBCBB5E85
 
|}
 
|}
  
=== sceKernelDmacMemsetForDriver ===
+
A big function. TO RE.
 +
 
 +
=== SceDmacmgrForDriver_893FCB80 ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x4BAC049B
+
| 0.990-3.60 || 0x893FCB80
 
|}
 
|}
 +
 +
On FW 0.990 simply returns SCE_KERNEL_ERROR_NOT_IMPLEMENTED.
  
 
== SceDmacmgr ==
 
== SceDmacmgr ==
 +
 +
This library doesn't exist on FW 0.990.
  
 
=== sceDmacMemcpy ===
 
=== sceDmacMemcpy ===

Revision as of 13:38, 26 December 2019

Direct memory access control Manager

Module

Known NIDs

Version Name World Privilege NID
1.69 SceKernelDmacMgr Non-secure Kernel 0x67E3D2D2
3.60 SceKernelDmacMgr Non-secure Kernel 0xF926C804

Libraries

Known NIDs

Version Name World Visibility NID
0.990-3.60 SceDmacmgrForDriver Non-secure Kernel 0xEB4E3738
0.990 SceDmacmgr Non-secure User not present
3.60 SceDmacmgr Non-secure User 0xA9E5B2F0

Data segment layout

Address Size Description
0x0000 0x04 void* SceDmacmgrDmac0Reg membase
0x0004 0x04 void* SceDmacmgrDmac1Reg membase
0x0008 0x04 void* SceDmacmgrDmac2Reg membase
0x000C 0x04 void* SceDmacmgrDmac3Reg membase
0x0010 0x04 void* SceDmacmgrDmac4Reg membase
0x0014 0x04 void* SceDmacmgrDmac5Reg membase
0x0018 0x04 void* SceDmacmgrDmac6Reg membase
0x001C 0x1284

SceDmacmgrForDriver

sceKernelDmaOpSetupChainForDriver

Version NID
0.990-3.60 0x167079FC
int sceKernelDmaOpSetupChainForDriver(uint32_t opid, void *pTag, int *a3, uint32_t flag);

sceKernelDmaOpQuitForDriver

Version NID
0.990-3.60 0x03052D0D
int sceKernelDmaOpQuitForDriver(int opid);

sceKernelDmaOpAllocForDriver

Version NID
0.990-3.60 0x7CD5088A

Usages:

Module Name
SceSblSsMgr SceSblDmac5Common, Dmac5Test_Direct
SceDisplay SceDisplay
SceAudio SceSrcMix%d%d
SceCodecEngineWrapper SceVeneziaDmacMemcpy%02u, SceHwd0DmacMemcpy%02u

Allocate 0x60 bytes of heap.

Return opid = (uint)dma_op_heap_addr >> 1 | 1;

typedef struct SceDmaOpAlloc { // size is 0x60 on FW 0.990
	uint unk_0;
	uint unk_4;
	uint magic; // 0x81005001
	SceUID evfId;
	uint unk_10;
	uint16_t unk_14; // 1
	uint16_t unk_16;
	uint maybe_callback_1;
	uint stat;
	char unk_20[0x14];
	int curchain;
	uint unk_38; // 0
	uint unk_3C;
	const char opname[0x20];
} SceDmaOpAlloc;

int sceKernelDmaOpAllocForDriver(const char* name);

sceKernelDmaOpAssignForDriver

Version NID
0.990-3.60 0xFCE4171A

Executes Dmac5 command.

int sceKernelDmaOpAssignForDriver(int opid, int unk1, int unk2);

sceKernelDmaOpFreeForDriver

Version NID
0.990-3.60 0xADFF1186
int sceKernelDmaOpFreeForDriver(int opid);

sceKernelDmaOpConcatenateForDriver

Version NID
0.990-3.60 0xA4454DEA

sceKernelDmaOpEnQueueForDriver

Version NID
0.990-3.60 0x543F54CF
int sceKernelDmaOpEnQueueForDriver(int opid);

sceKernelDmaOpDeQueueForDriver

Version NID
0.990-3.60 0x7433F70F

sceKernelDmaOpSetCallbackForDriver

Version NID
0.990-3.60 0xCF627CFD
int sceKernelDmaOpSetCallbackForDriver(int opid, int a2, int a3);

sceKernelDmaOpSyncForDriver

Version NID
0.990-3.60 0x397A917C
int sceKernelDmaOpSyncForDriver(int opid, SceUInt32 op_sync_mode, SceUInt32 timeout, SceInt32 *result);

sceKernelDmacMemcpyForDriver

Version NID
0.990-3.60 0x00896B11

sceKernelDmacMemsetForDriver

Version NID
0.990-3.60 0x4BAC049B

sceKernelDmaOpSetupDirectForDriver

Version NID
0.990-3.60 0x01A599E0
typedef struct SceDmaOpKey {
	char data[0x4C];
} SceDmaOpKey;

int sceKernelDmaOpSetupDirectForDriver(int opid, SceDmaOpKey *a2, int a3);

sceKernelDmacMemcpyAsyncForDriver

Version NID
0.990 0x6E81B8BF
3.60 not present

sceKernelDmacMemsetAsyncForDriver

Version NID
0.990 0x6FD7F708
3.60 not present

SceDmacmgrForDriver_BCBB5E85

Version NID
0.990-3.60 0xBCBB5E85

A big function. TO RE.

SceDmacmgrForDriver_893FCB80

Version NID
0.990-3.60 0x893FCB80

On FW 0.990 simply returns SCE_KERNEL_ERROR_NOT_IMPLEMENTED.

SceDmacmgr

This library doesn't exist on FW 0.990.

sceDmacMemcpy

Version NID
3.60 0x9B2FF739

sceDmacMemset

Version NID
3.60 0xA4C33F11