void* libsFindExportAddrByName(SceUID uid, const char *library, const char *name) { unsigned int nid; nid = libsNameToNid(name); return libsFindExportAddrByNid(uid, library, nid); }
unsigned int libsFindExportByNid(SceUID uid, const char *library, unsigned int nid) { unsigned int *addr; addr = libsFindExportAddrByNid(uid, library, nid); if(!addr) { return 0; } return *addr; }
/* Patch out the exception handler setup call for apps which come after us ;P */ int psplinkPatchException(void) { unsigned int *addr; int intc; intc = pspSdkDisableInterrupts(); addr = libsFindExportAddrByNid(refer_module_by_name("sceExceptionManager", NULL), "ExceptionManagerForKernel", 0x565C0B0E); if(addr) { *addr = (unsigned int) RegisterExceptionDummy; sceKernelDcacheWritebackInvalidateRange(addr, 4); sceKernelIcacheInvalidateRange(addr, 4); } pspSdkEnableInterrupts(intc); return 0; }