Difference between revisions of "SceMsif"

From Vita Development Wiki
Jump to navigation Jump to search
(5 intermediate revisions by the same user not shown)
Line 39: Line 39:
 
   SceUID SceMsif_memblock2_id; // 0x50
 
   SceUID SceMsif_memblock2_id; // 0x50
 
   uint32_t unk_54;
 
   uint32_t unk_54;
   uint32_t unk_58; // = 0
+
   uint32_t unk_58; // = 0 - used for suspend resume intr
 
    
 
    
 
   uint8_t unk_5C;
 
   uint8_t unk_5C;
Line 56: Line 56:
 
   void* unk_7C; // = 0xB9E840 (840)
 
   void* unk_7C; // = 0xB9E840 (840)
 
    
 
    
   uint8_t unk_80[0x100];
+
  addr_pair paddr_list_80[4];
 +
 
 +
   uint8_t unk_A0[0xE0];
 
    
 
    
   uint8_t unk_180[0x40]; // probably some buffer for accessing device
+
   uint8_t unk_180[0x40]; // buffer for accessing device (invalidate range). size confirmed.
 
    
 
    
   uint8_t unk_1C0[0x50]; // probably some buffer for accessing device
+
   uint8_t unk_1C0[0x50]; // buffer for accessing device (invalidate range). size confirmed.
 
    
 
    
 
   void* paddr_210; // 0x210 - physical address of SceMsif_memblock2_base
 
   void* paddr_210; // 0x210 - physical address of SceMsif_memblock2_base
Line 88: Line 90:
 
| 0x1480 || 0x440 || SceMsif_ctx
 
| 0x1480 || 0x440 || SceMsif_ctx
 
|-
 
|-
| 0x18C0 || 0x100 || unknown
+
| 0x18C0 || 0x4 || SceMsif suspend callback id
 +
|-
 +
| 0x18C4 || 0x4 || unknown
 +
|-
 +
| 0x18C8 || 0x8 || UInt64 wide time
 +
|-
 +
| 0x18D0 || 0x8 || UInt64 probably time in ms
 +
|-
 +
| 0x18D8 || 0xE8 || unknown
 
|-
 
|-
 
|}
 
|}

Revision as of 20:31, 17 July 2017

Module

Known NIDs

Version Name World Privilege NID
1.69 SceMsif Non-secure Kernel 0xFA979E8E
3.60 SceMsif ? Kernel 0x3305A0FE

Libraries

Known NIDs

Version Name World Visibility NID
1.69 SceMsifForDriver Non-secure Kernel 0xB706084A
3.60 SceMsifForDriver ? Kernel 0xB706084A

Types

typedef struct SceMsif_ctx //size is 0x440
{
   void* SceMsif_memblock1_base; // 0x0
   SceUID SceMsif_memblock1_id; // 0x4 - size 0x1000 - mapped to 0xE0900000
   uint32_t unk_8; // = 0
   SceUID SceMsif_evid; // 0xC
   
   fast_mutex SceMsif_fast_mutex; //0x10 - size is 0x40
   
   SceUID SceMsif_memblock2_id; // 0x50
   uint32_t unk_54;
   uint32_t unk_58; // = 0 - used for suspend resume intr
   
   uint8_t unk_5C;
   uint8_t unk_5D;
   uint8_t unk_5E; // timewide byte
   uint8_t unk_5F; // timewide byte
   
   uint32_t unk_60;
   uint32_t unk_64;
   uint32_t unk_68;
   uint32_t unk_6C;
   
   void* paddr_70; // 0x70 - physical address of unk_180
   void* paddr_74; // 0x74 - physical address of unk_1C0
   void* SceMsif_memblock2_base; // 0x78 - size 0x18000
   void* unk_7C; // = 0xB9E840 (840)
   
   addr_pair paddr_list_80[4];

   uint8_t unk_A0[0xE0];
   
   uint8_t unk_180[0x40]; // buffer for accessing device (invalidate range). size confirmed.
   
   uint8_t unk_1C0[0x50]; // buffer for accessing device (invalidate range). size confirmed.
   
   void* paddr_210; // 0x210 - physical address of SceMsif_memblock2_base
   
   uint8_t unk_214[0x214];
   
   SceUID SceMsifSleepCtrl_evid; // 428
   SceUID SceMsifSleepCtrl_thid; // 42C - thread id
   
   uint32_t unk_430; // = 0
   uint32_t unk_434; // = 0
   uint32_t unk_438;
   uint32_t unk_43C;

}SceMsif_ctx;

Data segment layout

Address Size Description
0x0000 0x1480 unknown
0x1480 0x440 SceMsif_ctx
0x18C0 0x4 SceMsif suspend callback id
0x18C4 0x4 unknown
0x18C8 0x8 UInt64 wide time
0x18D0 0x8 UInt64 probably time in ms
0x18D8 0xE8 unknown

SceMsifForDriver

module_start

Version NID
3.60 0x935cd196
int module_start();

read_sector

Version NID
3.60 0x58654AA3
int ms_read_sector(int sector, char* buffer, int nSectors);

write_sector

Version NID
3.60 0x329035EF
int ms_write_sector(int sector, char* buffer, int nSectors);

enable_slow_mode

Version NID
3.60 0x4B751CE6
int ms_enable_slow_mode();

disable_slow_mode

Version NID
3.60 0x75848756
int ms_disable_slow_mode();

get_slow_mode_state

Version NID
3.60 0x491E25B5
int ms_get_slow_mode_state();

init1

Version NID
3.60 0x4EA579EF
int ms_init1();

init2

Version NID
3.60 0xD0307849
int ms_init2(void* unk0_40);

ms_get_state

Version NID
3.60 0xF997286B
int ms_get_state();

ms_substract_pair

Version NID
3.60 0x855E1E38
typedef struct ms_pair
{
   uint32_t unk_0;
   uint32_t unk_4;
} ms_pair;

ms_pair ms_substract_pair();

ms_unk

Version NID
3.60 0x0f86BEEA
int ms_unk(int unk0, int unk1);

ms_unk

Version NID
3.60 0x6EDE7DBA
int ms_unk(int unk0);

ms_unk

Version NID
3.60 0x718BDFDE
int ms_unk(int unk0);