10#include "common_imp.h"
11#include "threadman_kernel.h"
20#define LIBRARY_VERSION_MINOR (0)
23#define LIBRARY_VERSION_MAJOR (1)
26#define LIBRARY_VERSION_NUMBER_CATEGORY_SIZE (2)
29#define LIBRARY_ENTRY_TABLE_OLD_LEN (4)
32#define LIBRARY_ENTRY_TABLE_NEW_LEN (5)
35#define STUB_LIBRARY_ENTRY_TABLE_OLD_LEN (6)
38#define STUB_LIBRARY_ENTRY_TABLE_NEW_LEN (7)
41#define LOADCORE_LIB_HASH_TABLE_SIZE (128)
44#define SCE_BOOT_CALLBACK_FUNCTION_QUEUED (1)
47#define SCE_PROTECT_INFO_STATE_IS_ALLOCATED (1 << 0)
50#define SCE_PROTECT_INFO_TYPE_FILE_NAME (0x2)
53#define SCE_PROTECT_INFO_TYPE_VSH_PARAM (0x4)
56#define SCE_PROTECT_INFO_TYPE_DISC_IMAGE (0x40)
59#define SCE_PROTECT_INFO_TYPE_NPDRM_DATA (0x80)
62#define SCE_PROTECT_INFO_TYPE_USER_PARAM (0x100)
65#define SCE_PROTECT_INFO_TYPE_PARAM_SFO (0x400)
72#define GET_PROTECT_INFO_STATE(attr) ((u32)(attr) >> 16)
80#define SET_PROTECT_INFO_STATE(state, src) (((state) << 16) | (src))
88#define REMOVE_PROTECT_INFO_STATE(state, src) ((~((state) << 16)) & (src))
95#define GET_PROTECT_INFO_TYPE(attr) ((attr) & 0xFFFF)
103#define SET_PROTECT_INFO_TYPE(type, src) (((type) & 0xFFFF) | (src))
173typedef s32 (*SceKernelRebootPhaseForKernel)(s32 arg1,
void *arg2, s32 arg3, s32 arg4);
567#define SCE_KERNEL_MAX_MODULE_SEGMENT (4)
662 u32 segmentAddr[SCE_KERNEL_MAX_MODULE_SEGMENT];
664 u32 segmentSize[SCE_KERNEL_MAX_MODULE_SEGMENT];
668 u32 segmentAlign[SCE_KERNEL_MAX_MODULE_SEGMENT];
674#define SCE_MODULE_USER_MODULE (0x100)
678#define GET_MCB_STATUS(status) (status & 0xF)
679#define SET_MCB_STATUS(v, m) (v = (v & ~0xF) | m)
681enum ModuleMgrMcbStatus {
682 MCB_STATUS_NOT_LOADED = 0,
683 MCB_STATUS_LOADING = 1,
684 MCB_STATUS_LOADED = 2,
685 MCB_STATUS_RELOCATED = 3,
686 MCB_STATUS_STARTING = 4,
687 MCB_STATUS_STARTED = 5,
688 MCB_STATUS_STOPPING = 6,
689 MCB_STATUS_STOPPED = 7
702 u8
version[MODULE_VERSION_NUMBER_CATEGORY_SIZE];
s32 sceKernelLoadCoreLock(void)
s32 sceKernelProbeExecutableObject(u8 *buf, SceLoadCoreExecFileInfo *execInfo)
SceModule * sceKernelFindModuleByUID(SceUID uid)
u32 sceKernelLoadCoreMode(void)
s32 sceKernelReleaseLibrary(SceResidentLibraryEntryTable *libEntryTable)
s32 sceKernelSegmentChecksum(SceModule *mod)
s32(* SceKernelRebootBeforeForKernel)(void *arg1, s32 arg2, s32 arg3, s32 arg4)
Definition loadcore.h:172
SceLibAttr
Definition loadcore.h:151
s32 sceKernelLoadRebootBin(u8 *file, u32 size)
s32 sceKernelDeleteModule(SceModule *mod)
SceModule * sceKernelCreateModule(void)
SceUID sceKernelGetModuleListWithAlloc(u32 *modCount)
s32 sceKernelRegisterLibrary(SceResidentLibraryEntryTable *libEntryTable)
u32 sceKernelMaskLibraryEntries(void)
s32 sceKernelCanReleaseLibrary(SceResidentLibraryEntryTable *libEntryTable)
SceModule * sceKernelCreateAssignModule(SceLoadCoreExecFileInfo *execFileInfo)
s32 sceKernelUnlinkLibraryEntries(SceStubLibraryEntryTable *libStubTable, u32 size)
s32 sceKernelRegisterModule(SceModule *mod)
s32(* SceKernelBootCallbackFunction)(void *data, s32 arg, void *opt)
Definition loadcore.h:169
s32 sceKernelCheckPspConfig(u8 *file, u32 size)
s32 sceKernelLinkLibraryEntries(SceStubLibraryEntryTable *libStubTable, u32 size)
s32 sceKernelLinkLibraryEntriesWithModule(SceModule *mod, SceStubLibraryEntryTable *libStubTable, u32 size)
SceExecFileAttr
Definition loadcore.h:108
SceModule * sceKernelGetModuleFromUID(SceUID uid)
SceModule * sceKernelFindModuleByName(const char *name)
s32 sceKernelAssignModule(SceModule *mod, SceLoadCoreExecFileInfo *execFileInfo)
SceLoadCore * sceKernelQueryLoadCoreCB(void)
SceModule * sceKernelFindModuleByAddress(u32 addr)
s32 sceKernelLoadExecutableObject(u8 *buf, SceLoadCoreExecFileInfo *execInfo)
s32 sceKernelGetModuleGPByAddressForKernel(u32 addr)
s32 sceKernelLoadModuleBootLoadCore(SceLoadCoreBootModuleInfo *bootModInfo, SceLoadCoreExecFileInfo *execInfo, SceUID *modMemId)
s32 sceKernelReleaseModule(SceModule *mod)
#define LOADCORE_LIB_HASH_TABLE_SIZE
Definition loadcore.h:41
s32 sceKernelSetBootCallbackLevel(SceKernelBootCallbackFunction bootCBFunc, u32 flag, s32 *status)
s32 sceKernelCheckExecFile(u8 *buf, SceLoadCoreExecFileInfo *execInfo)
SceExecFileElfType
Definition loadcore.h:134
void sceKernelLoadCoreUnlock(s32 intrState)
s32 sceKernelGetModuleIdListForKernel(SceUID *modIdList, u32 size, u32 *modCount, u32 userModsOnly)
#define LIBRARY_VERSION_NUMBER_CATEGORY_SIZE
Definition loadcore.h:26
SceExecFileModeAttr
Definition loadcore.h:122
s32 sceKernelRegisterLibraryForUser(SceResidentLibraryEntryTable *libEntryTable)
s32 sceKernelLinkLibraryEntriesForUser(SceStubLibraryEntryTable *libStubTable, u32 size)
@ SCE_LIB_IS_SYSLIB
Definition loadcore.h:165
@ SCE_LIB_WEAK_EXPORT
Definition loadcore.h:157
@ SCE_LIB_WEAK_IMPORT
Definition loadcore.h:161
@ SCE_LIB_NO_SPECIAL_ATTR
Definition loadcore.h:153
@ SCE_LIB_SYSCALL_EXPORT
Definition loadcore.h:163
@ SCE_LIB_AUTO_EXPORT
Definition loadcore.h:155
@ SCE_LIB_NOLINK_EXPORT
Definition loadcore.h:159
@ SCE_EXEC_FILE_COMPRESSED
Definition loadcore.h:110
@ SCE_EXEC_FILE_KL4E_COMPRESSED
Definition loadcore.h:116
@ SCE_EXEC_FILE_ELF
Definition loadcore.h:112
@ SCE_EXEC_FILE_GZIP_OVERLAP
Definition loadcore.h:114
@ SCE_EXEC_FILE_TYPE_PRX_2
Definition loadcore.h:140
@ SCE_EXEC_FILE_TYPE_PRX
Definition loadcore.h:138
@ SCE_EXEC_FILE_TYPE_INVALID_ELF
Definition loadcore.h:136
@ SCE_EXEC_FILE_TYPE_ELF
Definition loadcore.h:142
@ SCE_EXEC_FILE_NO_HEADER_COMPRESSION
Definition loadcore.h:126
@ SCE_EXEC_FILE_DECRYPT
Definition loadcore.h:124
@ SCE_EXEC_FILE_NO_COMPRESSION
Definition loadcore.h:128
Definition loadcore.h:179
u32 call
Definition loadcore.h:181
u32 delaySlot
Definition loadcore.h:183
Definition loadcore.h:293
u32 gp
Definition loadcore.h:297
void * bootCBFunc
Definition loadcore.h:295
Definition loadcore.h:495
u32 unk116
Definition loadcore.h:560
SceUID modProtId
Definition loadcore.h:520
char * configFile
Definition loadcore.h:530
u32 unk84
Definition loadcore.h:544
u32 numModules
Definition loadcore.h:506
SceLoadCoreBootModuleInfo * modules
Definition loadcore.h:508
s32 unk52
Definition loadcore.h:528
u32 unk92
Definition loadcore.h:548
u32 loadedModules
Definition loadcore.h:504
u32 unk80
Definition loadcore.h:542
u32 unk112
Definition loadcore.h:558
s32 unk76
Definition loadcore.h:540
u32 unk96
Definition loadcore.h:550
void * memBase
Definition loadcore.h:500
u32 memSize
Definition loadcore.h:502
u32 unk98
Definition loadcore.h:546
u8 unk24
Definition loadcore.h:512
s32 unk44
Definition loadcore.h:524
u32 unk124
Definition loadcore.h:564
u32 unk108
Definition loadcore.h:556
SceUID modArgProtId
Definition loadcore.h:522
s32 unk64
Definition loadcore.h:534
s32 unk20
Definition loadcore.h:510
s32 buildVersion
Definition loadcore.h:526
u32 unk104
Definition loadcore.h:554
s32 unk68
Definition loadcore.h:536
SceLoadCoreProtectInfo * protects
Definition loadcore.h:518
u32 unk100
Definition loadcore.h:552
s32 unk72
Definition loadcore.h:538
u32 unk120
Definition loadcore.h:562
s32 numProtects
Definition loadcore.h:516
s32 unk60
Definition loadcore.h:532
Definition loadcore.h:470
u32 attr
Definition loadcore.h:480
u8 * modPath
Definition loadcore.h:472
u8 * modBuf
Definition loadcore.h:474
SceSize modSize
Definition loadcore.h:476
s32 bootData
Definition loadcore.h:485
s32 unk12
Definition loadcore.h:478
SceUID argPartId
Definition loadcore.h:489
u32 argSize
Definition loadcore.h:487
Definition loadcore.h:572
SceSize dataSize
Definition loadcore.h:608
SceSize bssSize
Definition loadcore.h:610
void * exportsInfo
Definition loadcore.h:648
u32 elfType
Definition loadcore.h:590
u32 partitionId
Definition loadcore.h:612
void * importsInfo
Definition loadcore.h:652
u32 isSignChecked
Definition loadcore.h:642
u32 moduleInfoOffset
Definition loadcore.h:624
SceUID decompressionMemId
Definition loadcore.h:586
u32 modeAttribute
Definition loadcore.h:576
u32 unk44
Definition loadcore.h:599
u32 isDecompressed
Definition loadcore.h:636
char * secureInstallId
Definition loadcore.h:644
u32 apiType
Definition loadcore.h:578
u32 unk12
Definition loadcore.h:580
SceSize modCodeSize
Definition loadcore.h:604
SceSize maxAllocSize
Definition loadcore.h:584
SceSize execSize
Definition loadcore.h:582
u32 isDecrypted
Definition loadcore.h:622
u32 maxSegAlign
Definition loadcore.h:670
u32 unk0
Definition loadcore.h:574
u16 execAttribute
Definition loadcore.h:632
SceUID memBlockId
Definition loadcore.h:666
void * fileBase
Definition loadcore.h:588
u16 modInfoAttribute
Definition loadcore.h:630
void * topAddr
Definition loadcore.h:592
SceSize decSize
Definition loadcore.h:634
SceSize textSize
Definition loadcore.h:606
SceSize exportsSize
Definition loadcore.h:650
SceSize importsSize
Definition loadcore.h:654
u32 entryAddr
Definition loadcore.h:597
SceSize overlapSize
Definition loadcore.h:646
SceModuleInfo * moduleInfo
Definition loadcore.h:626
u32 isKernelMod
Definition loadcore.h:617
void * strtabOffset
Definition loadcore.h:656
u8 numSegments
Definition loadcore.h:658
u32 isCompressed
Definition loadcore.h:628
Definition loadcore.h:438
u32 addr
Definition loadcore.h:440
u32 attr
Definition loadcore.h:455
SceUID partId
Definition loadcore.h:457
SceSize size
Definition loadcore.h:442
s32 unk20
Definition loadcore.h:461
s32 unk16
Definition loadcore.h:459
s32 unk24
Definition loadcore.h:463
Definition loadcore.h:837
SceUID loadCoreHeapId
Definition loadcore.h:864
u32 unk520
Definition loadcore.h:849
SceModule * lastRegMod
Definition loadcore.h:853
u32 secModId
Definition loadcore.h:857
u32 regModCount
Definition loadcore.h:855
SceModule * registeredMods
Definition loadcore.h:851
u32 linkedLoadCoreStubs
Definition loadcore.h:866
u32 sysCallTableSeed
Definition loadcore.h:847
SceSyscallTable * sysCallTable
Definition loadcore.h:845
SceBootCallback * bootCallBacks
Definition loadcore.h:868
SceStubLibrary * unLinkedStubLibs
Definition loadcore.h:859
Definition loadcore.h:693
u32 textAddr
Definition loadcore.h:767
SceKernelRebootBeforeForKernel moduleRebootBefore
Definition loadcore.h:753
SceKernelThreadEntry moduleStop
Definition loadcore.h:743
char terminal
Definition loadcore.h:706
SceSize moduleRebootBeforeThreadStacksize
Definition loadcore.h:799
u32 computeTextSegmentChecksum
Definition loadcore.h:813
u32 entryAddr
Definition loadcore.h:763
SceKernelRebootPhaseForKernel moduleRebootPhase
Definition loadcore.h:758
u8 version[MODULE_VERSION_NUMBER_CATEGORY_SIZE]
Definition loadcore.h:702
s32 moduleStopThreadPriority
Definition loadcore.h:791
SceUID userModThid
Definition loadcore.h:719
SceUID moduleBlockId
Definition loadcore.h:721
u8 padding2[3]
Definition loadcore.h:777
void * entTop
Definition loadcore.h:727
char modName[SCE_MODULE_NAME_LEN]
Definition loadcore.h:704
u32 textSegmentChecksum
Definition loadcore.h:807
u32 gpValue
Definition loadcore.h:765
SceUInt moduleStopThreadAttr
Definition loadcore.h:795
SceUID mpIdText
Definition loadcore.h:723
s32 moduleStartThreadPriority
Definition loadcore.h:785
u16 attribute
Definition loadcore.h:697
SceSize moduleStartThreadStacksize
Definition loadcore.h:787
SceUInt moduleRebootBeforeThreadAttr
Definition loadcore.h:801
u32 segmentAddr[SCE_KERNEL_MAX_MODULE_SEGMENT]
Definition loadcore.h:779
SceUInt moduleStartThreadAttr
Definition loadcore.h:789
SceSize segmentSize[SCE_KERNEL_MAX_MODULE_SEGMENT]
Definition loadcore.h:781
u32 countRegVal
Definition loadcore.h:803
u16 status
Definition loadcore.h:711
SceKernelThreadEntry moduleBootstart
Definition loadcore.h:748
SceUID modId
Definition loadcore.h:717
void * stubTop
Definition loadcore.h:731
SceUID mpIdData
Definition loadcore.h:725
s32 moduleRebootBeforeThreadPriority
Definition loadcore.h:797
SceSize entSize
Definition loadcore.h:729
u16 padding
Definition loadcore.h:713
SceSize bssSize
Definition loadcore.h:773
struct SceModule * next
Definition loadcore.h:695
SceSize dataSize
Definition loadcore.h:771
SceUID secId
Definition loadcore.h:715
u32 segmentChecksum
Definition loadcore.h:805
SceSize moduleStopThreadStacksize
Definition loadcore.h:793
u8 nSegments
Definition loadcore.h:775
SceSize stubSize
Definition loadcore.h:733
SceKernelThreadEntry moduleStart
Definition loadcore.h:738
SceSize textSize
Definition loadcore.h:769
u32 segmentAlign[SCE_KERNEL_MAX_MODULE_SEGMENT]
Definition loadcore.h:783
Definition loadcore.h:221
u32 * entryTable
Definition loadcore.h:246
u8 unk18
Definition loadcore.h:250
u8 len
Definition loadcore.h:236
u8 vStubCount
Definition loadcore.h:238
const char * libName
Definition loadcore.h:223
u16 unk16
Definition loadcore.h:248
u8 unk19
Definition loadcore.h:252
s16 attribute
Definition loadcore.h:231
u16 stubCount
Definition loadcore.h:240
Definition loadcore.h:359
u32 midFuncIndex
Definition loadcore.h:409
u32 isUserLib
Definition loadcore.h:417
u8 version[LIBRARY_VERSION_NUMBER_CATEGORY_SIZE]
Definition loadcore.h:368
u8 unk21
Definition loadcore.h:391
u32 unk28
Definition loadcore.h:397
u16 attribute
Definition loadcore.h:372
u32 unk64
Definition loadcore.h:419
u16 vStubCount
Definition loadcore.h:382
char * libName
Definition loadcore.h:421
u16 extraExportEntries
Definition loadcore.h:432
u32 libNameInHeap
Definition loadcore.h:423
u32 sysTableEntry
Definition loadcore.h:415
u32 unk48
Definition loadcore.h:411
u8 unk20
Definition loadcore.h:389
u16 stubCount
Definition loadcore.h:377
u32 * entryTable
Definition loadcore.h:403
u8 unk22
Definition loadcore.h:393
struct SceResidentLibrary * next
Definition loadcore.h:361
u32 numExports
Definition loadcore.h:387
u16 sysTableEntryStartIndex
Definition loadcore.h:428
u32 * exportsBaseAddr
Definition loadcore.h:405
SceStubLibrary * stubLibs
Definition loadcore.h:413
u32 exportsSize
Definition loadcore.h:407
SceResidentLibraryEntryTable * libEntryTable
Definition loadcore.h:363
s32 unk24
Definition loadcore.h:395
Definition loadcore.h:259
SceStub * stubTable
Definition loadcore.h:283
u8 len
Definition loadcore.h:275
u8 vStubCount
Definition loadcore.h:277
u16 attribute
Definition loadcore.h:269
u32 * nidTable
Definition loadcore.h:281
u16 unk24
Definition loadcore.h:287
const char * libName
Definition loadcore.h:261
SceVariableStub * vStubTable
Definition loadcore.h:285
u16 stubCount
Definition loadcore.h:279
Definition loadcore.h:304
u32 status
Definition loadcore.h:346
u32 isUserLib
Definition loadcore.h:348
u8 vStubCount
Definition loadcore.h:327
char * libName2
Definition loadcore.h:350
SceVariableStub * vStubTable
Definition loadcore.h:338
SceStub * stubTable
Definition loadcore.h:336
struct SceStubLibrary * next
Definition loadcore.h:310
u16 attribute
Definition loadcore.h:320
u16 stubCount
Definition loadcore.h:332
SceStubLibraryEntryTable * libStubTable
Definition loadcore.h:342
u16 unk32
Definition loadcore.h:340
u8 stubEntryTableLen
Definition loadcore.h:322
u32 unk0
Definition loadcore.h:306
u32 libNameInHeap
Definition loadcore.h:352
u32 * nidTable
Definition loadcore.h:334
const char * libName
Definition loadcore.h:312
u8 version[LIBRARY_VERSION_NUMBER_CATEGORY_SIZE]
Definition loadcore.h:316
Definition loadcore.h:820
s32 funcTableSize
Definition loadcore.h:826
s32 tableSize
Definition loadcore.h:828
void(* syscalls[])()
Definition loadcore.h:830
s32 seed
Definition loadcore.h:824
struct SceSyscallTable * next
Definition loadcore.h:822
Definition loadcore.h:210
u32 nid
Definition loadcore.h:213
Definition loadcore.h:190
u32 returnAddr
Definition loadcore.h:192
u32 syscall
Definition loadcore.h:194
Definition loadcore.h:200
DirectCall dc
Definition loadcore.h:202
Syscall sc
Definition loadcore.h:204