Detect the main VSH module and log

This commit is contained in:
Henrik Rydgård committed 2026-07-27 23:44:14 +02:00
1 parent 606c233ee1
commit 02aedb598d
2 files changed
+13 -1

No files matched your search

+5
View File
@@ -1304,6 +1304,11 @@ static PSPModule *__KernelLoadELFFromPtr(const u8 *ptr, size_t elfSize, u32 load
module->nm.nsegment = reader.GetNumSegments();
module->nm.attribute = modinfo->moduleAttrs;
if ((module->nm.attribute & PSP_MODULE_VSH_MODE) != 0) {
// Used by the PSP's Visual Shell (VSH/XMB) and modules it loads, such as vshmain.prx.
// We don't do anything special with this yet, just recognizing it for now.
INFO_LOG(Log::sceModule, "VSH mode module detected: %s", modinfo->name);
}
module->nm.version[0] = modinfo->moduleVersion & 0xFF;
module->nm.version[1] = modinfo->moduleVersion >> 8;
module->nm.data_size = 0;
+8 -1
View File
@@ -28,8 +28,15 @@
class PointerWrap;
struct SceKernelSMOption;
// Known bits of PspModuleInfo::moduleAttrs.
enum {
PSP_MODULE_USER_MODE = 0x0000,
PSP_MODULE_VSH_MODE = 0x0800,
PSP_MODULE_KERNEL_MODE = 0x1000,
};
struct PspModuleInfo {
u16_le moduleAttrs; //0x0000 User Mode, 0x1000 Kernel Mode
u16_le moduleAttrs; //0x0000 User Mode, 0x0800 VSH Mode, 0x1000 Kernel Mode
u16_le moduleVersion;
// 28 bytes of module name, packed with 0's.
char name[28];