init: Updated header files.

This commit is contained in:
Felix 2013-04-27 15:35:05 +02:00
parent 68aae80ad1
commit c3e09159e7
5 changed files with 96 additions and 37 deletions

View File

@ -35,6 +35,8 @@
#define SCE_USERSPACE_ADDR_K1 0xA8800000 /* K1 segment (uncached) */
#define SCE_USERSPACE_SIZE 0x01800000 /* 24 MB */
#define SCE_USERSPACE_GAME_ADDR_K0 0x88900000 /* K0 segment (chached) */
#define UCACHED(ptr) (void *)((u32)(void *)(ptr) & 0x1FFFFFFF) /* KU0 - cached. */
#define KCACHED(ptr) (void *)(K0_BASE | ((u32)(void *)(ptr) & 0x1FFFFFFF)) /* K0 - cached */
#define KUNCACHED(ptr) (void *)(K1_BASE | ((u32)(void *)(ptr) & 0x1FFFFFFF)) /* K1 - uncached */

View File

@ -7,35 +7,8 @@
#include "common_imp.h"
#include "loadcore.h"
#include "loadexec_kernel.h"
/** The internal name of the INIT module. */
#define INIT_MODULE_NAME "sceInit"
typedef struct {
s32 apiType; //0
void *fileModAddr; //4
u32 discModAddr; //8
SceKernelLoadExecVSHParam vshParam; //12
s32 unk60;
s32 unk64;
s32 unk68;
s32 unk72;
s32 unk76;
s32 unk80;
s32 unk84;
s32 unk88;
u32 applicationType; //92
s32 numPowerLocks;
void *paramSfoBase; //100
SceSize paramSfoSize; //104
s32 lptSummary;
SceBootCallback *bootCallbacks1;
void *unk116;
SceBootCallback *bootCallbacks2; //120
void *unk124;
} SceInit;
#endif /* INIT_H */

View File

@ -58,6 +58,9 @@
/** Indicates the type of the protected information block is a disc image. */
#define SCE_PROTECT_INFO_TYPE_DISC_IMAGE (0x40)
/** Indicates protected information block belongs to a NPDRM package. */
#define SCE_PROTECT_INFO_TYPE_NPDRM_DATA (0x80)
/** Indicates the type of the protected information block is a user param. */
#define SCE_PROTECT_INFO_TYPE_USER_PARAM (0x100)
@ -474,7 +477,10 @@ typedef struct {
s32 unk12; //12
/** Attributes. */
u32 attr; //16
/** Unknown. */
/**
* Contains the API type of the module prior to the allocation of memory for the module.
* Once memory is allocated, ::bootData contains the ID of that memory partition.
*/
s32 bootData; //20
/** The size of the arguments passed to the module's entry function? */
u32 argSize; //24

View File

@ -4,11 +4,22 @@
#include "common_header.h"
#include "loadcore.h"
#include "loadexec_kernel.h"
/**
* Application types.
*/
enum SceApplicationType {
SCE_INIT_APPLICATION_VSH = 0x100,
/** The application is a VSH application (i.e. VSH modules). */
SCE_INIT_APPLICATION_VSH = 0x100,
/** The application is an updater. */
SCE_INIT_APPLICATION_UPDATER = 0x110,
/** The application is a PSP game. */
SCE_INIT_APPLICATION_GAME = 0x200,
/** The application is a Playstation One game. */
SCE_INIT_APPLICATION_POPS = 0x300,
/** The application is a PSP application (i.e. Skype). */
SCE_INIT_APPLICATION_APP = 0x400,
};
@ -22,8 +33,8 @@ enum SceInitApiType {
SCE_INIT_APITYPE_EMU_EBOOT_EF = 0x114,
SCE_INIT_APITYPE_EMU_BOOT_EF = 0x115,
/* Kernel only */
SCE_INIT_APITYPE_NPDRM_MS = 0x116,
SCE_INIT_APITYPE_NPDRM_EF = 0x118,
SCE_INIT_APITYPE_NPDRM_MS = 0x116, /* Distributed programs and data through the Playstation Store. */
SCE_INIT_APITYPE_NPDRM_EF = 0x118, /* NP-DRM: PlayStation Network Platform Digital Rights Management */
SCE_INIT_APITYPE_DISC = 0x120,
SCE_INIT_APITYPE_DISC_UPDATER = 0x121,
SCE_INIT_APITYPE_DISC_DEBUG = 0x122,
@ -58,16 +69,76 @@ enum SceInitApiType {
SCE_INIT_APITYPE_DEBUG = 0x420 /* doesn't start reboot */
};
int sceKernelApplicationType(void);
int sceKernelInitApitype(void);
/**
* This structure represents an Init control block. It holds information about the
* currently booted module by Init.
*/
typedef struct {
/** The API type of the currently loaded module. One of ::SceInitApiType. */
s32 apiType; //0
/** The address of a memory protection block of type ::SCE_PROTECT_INFO_TYPE_FILE_NAME. */
void *fileModAddr; //4
/** The address of a memory protection block of type ::SCE_PROTECT_INFO_TYPE_DISC_IMAGE. */
void *discModAddr; //8
/** VSH parameters. Used to reboot the kernel. */
SceKernelLoadExecVSHParam vshParam; //12
/** Unknown. */
s32 unk60;
/** Unknown. */
s32 unk64;
/** Unknown. */
s32 unk68;
/** Unknown. */
s32 unk72;
/** Unknown. */
s32 unk76;
/** Unknown. */
s32 unk80;
/** Unknown. */
s32 unk84;
/** Unknown. */
s32 unk88;
/** The application type of the currently loaded module. One of ::SceApplicationType. */
u32 applicationType; //92
/** The number of power locks used by init. */
s32 numPowerLocks;
/** The address of a memory protection block of type ::SCE_PROTECT_INFO_TYPE_PARAM_SFO. */
void *paramSfoBase; //100
/** The size of of the memory block pointed to by ::paramSfoBase. */
SceSize paramSfoSize; //104
/** Unknown. */
s32 lptSummary;
/** Pointer to boot callbacks of modules. */
SceBootCallback *bootCallbacks1;
/** Unknown. */
void *unk116;
/** Pointer to boot callbacks of modules. */
SceBootCallback *bootCallbacks2; //120
/** Unknown. */
void *unk124;
} SceInit;
int sceKernelRegisterChunk(int chunkId, int unk1);
SceUID sceKernelGetChunk(int chunkId);
/**
* Get the application type of a module.
*
* @return The application type. One of ::SceApplicationType.
*/
s32 sceKernelApplicationType(void);
/**
* Get the API type of a module.
*
* @return The API type. One of ::SceInitApiType.
*/
s32 sceKernelInitApitype(void);
s32 sceKernelRegisterChunk(SceUID chunkId, int unk1);
SceUID sceKernelGetChunk(SceUID chunkId);
s32 sceKernelBootFrom(void);
int sceKernelSetInitCallback(void *, int, int);
void *InitForKernel_040C934B(void);
SceInit *sceKernelQueryInitCB(void); //InitForKernel_040C934B
void *InitForKernel_D83A9BD7(void *);
s32 InitForKernel_9D33A110(void);

View File

@ -8,8 +8,15 @@
#include "common_header.h"
#include "modulemgr_options.h"
typedef struct {
SceSize size; //0
s32 unk4; //4
SceOff fileOffset; //8
u8 keyData[16]; //16 -- TODO: Confirm
} SceNpDrm;
s32 sceKernelLoadModuleForLoadExecForUser(s32 apiType, const char *file, s32 flags, SceKernelLMOption *option);
s32 sceKernelLoadModuleForLoadExecNpDrm(s32 apiType, const char *file, SceOff fileOffset, s32 buf[4], s32 flags, SceKernelLMOption *option);
s32 sceKernelLoadModuleForLoadExecNpDrm(s32 apiType, const char *file, SceOff fileOffset, u8 keyData[16], s32 flags, SceKernelLMOption *option);
s32 sceKernelLoadModuleForLoadExecVSHDisc(const char *file, s32 flags, SceKernelLMOption *option);
s32 sceKernelLoadModuleForLoadExecVSHDiscUpdater(const char *file, s32 flags, SceKernelLMOption *option);
s32 sceKernelLoadModuleForLoadExecVSHDiscDebug(const char *file, s32 flags, SceKernelLMOption *option);