SceMsif: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
Line 108: Line 108:
| 0x18D0 || 0x8 || UInt64 probably time in ms
| 0x18D0 || 0x8 || UInt64 probably time in ms
|-
|-
| 0x18D8 || 0xE0 || decrypted data - array of 8 elements of size 0x1C
| 0x18D8 || 0xE0 || decrypted data - array of 8 elements of size 0x1C (0x1C is probably size of sha224)
|-
|-
| 0x19B8 || 0x8 || unknown
| 0x19B8 || 0x8 || unknown

Revision as of 15:38, 18 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 0x4 SceMsif_subctx*
0x0004 0x4 pointer to data at offset 0x18
0x0008 0x4 unknown
0x000C 0x4 unknown
0x0010 0x4 pointer to table of 11 function pointers
0x0014 0x146C 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 0xE0 decrypted data - array of 8 elements of size 0x1C (0x1C is probably size of sha224)
0x19B8 0x8 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 init_mbr();

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