The unofficial Official FirmWare, a complete latest PSP firmware reverse engineering project
Go to file
Felix-Dev b0146f24a2
Add Module Manager (#69)
* src/modulemgr: sceKernelQueryModuleInfo(): Improved documentation

* src/modulemgr: Fixed various incorrect SDK versions

* src/modulemgr.c: sceKernelQueryModuleInfo(): Fixed two syntax errors.

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleWithBlockOffset().

* src/modulemgr/modulemgr.c: Fixed wrong handling of various sceIoIoctl() status values.

* src/modulemgr/modulemgr.c: Added missing sysmem_kernel.h include.

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleByIDWithBlockOffset().

* src/modulemgr/modulemgr.c: Fixed register K1 permission checks in various user-exported loadModule() functions.

* src/modulemgr/modulemgr.c: sceKernelLoadModuleForUser(): Fixed handling of parameter "opt" when being NULL.

* src/modulemgr/modulemgr.c: Fixed sdkVersion return codes in various LoadModule() functions.

* include/iofilemgr_kernel.h: Added back SCE_O_UNKNOWN0.

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleDNAS().

* src/modulemgr: Updated and added documentation

- Added documentation for sceKernelLoadModuleById(),
sceKernelLoadModuleWithBlockOffset(), and sceKernelLoadModuleDNAS
- Updated documentation of ModuleMgrForKernel_2B7FC10D(),
sceKernelLoadModule(), sceKernelGetModuleIdList(),
sceKernelQueryModuleInfo(), sceKernelGetModuleId(),
sceKernelGetModuleIdByAddress(), and sceKernelGetModuleGPByAddress()

* src/modulemgr: Updated documentation: case when SCE_ERROR_KERNEL_ILLEGAL_ADDRESS is returned

Affects sceKernelLoadModuleWithBlockOffset() and
sceKernelLoadModuleByIDWithBlockOffset().

* src/modulemgr: sceKernelLoadModuleDNAS(): Forgot a word in documentation

* src/modulemgr: sceKernelLoadModuleDNAS(): Forgot quotation marks in documentation

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleNpDrm().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleMs().

* src/modulemgr/modulemgr.c: Added sceKernelSelfStopUnloadModule().

* src/modulemgr/modulemgr.c: Added sceKernelStopModule().

* src/modulemgr: sceKernelLoadModuleNpDrm(): Fixed a pointer issue

* include/common/memory.h: Added pspClearMemory*() functions. These functions should be used as an alternative to corresponding memset calls.

* src/modulemgr/modulemgr.c: Replaced the variable <modParams> clearing-for-loops with the pspClearMemory32() function.

* src/modulemgr: sceKernelLoadModuleNpDrm(): Added documentation

* src/modulemgr: Added sceKernelLoadModuleBufferUsbWlan()

* src/modulemgr: sceKernelLoadModuleBufferUsbWlan(): Fixed return type

* src/modulemgr: Added _LoadModuleByBufferID()

* src/modulemgr: Added _start_exe_thread()

* src/modulemgr: Added sub_00007620()

* src/modulemgr: Added sub_00007698()

* src/modulemgr: Rename sub_00007620() to _CheckOption()

* src/modulemgr: _CheckOption(): Fix return type

* src/modulemgr: Added _SelfStopUnloadModule()

* src/modulemgr/: Added loadModuleChecks_inline.h containing commonly used checks in loadModule() functions. The check functions introduced there should be used in loadModule() functions.

* src/modulemgr/modulemgr.c: Preparations for the use of _check functions().

* src/modulemgr/modulemgr.c: Removed _CheckOptions(). Its equivalent function is _checkLMOptionConditions() defined in loadModuleChecks_inline.h.

* src/modulemgr/modulemgr.c: loadModule _check() functions are now being used.

* src/modulemgr/loadModuleChecks_inline.h: Removed _setupChecks() and _terminateChecks().

* src/modulemgr/modulemgr.c: Fixed _SelfStopUnloadModule().

* src/modulemgr/modulemgr.c: Forgot to fix pointer errors in _SelfStopUnloadModule() in previous commit.

* src/modulemgr/modulemgr.c: Added _EpilogueModule().

* src/modulemgr: Added sub_000077F0()

* src/modulemgr: _EpilogueModule(): Replaced hardcoded size by sizeof()

* modulemgr: renamed sub_000077F0 to _StopUnloadSelfModuleWithStatus()

* src/modulemgr/modulemgr.c: Added _ModuleReleaseLibraries().

* src/modulemgr: Added _checkSMOptionConditions() and fixed small issues in _StopUnloadSelfModuleWithStatus().

* src/modulemgr/modulemgr.c: Added sceKernelStartModule().

* include/threadman_kernel: Added more thread attribute values.

* src/modulemgr/modulemgr.c: Added sceKernelRebootBeforeForUser().

* src/modulemgr/modulemgr.c: Added sceKernelRebootPhaseForKernel().

* src/modulemgr/modulemgr.c: Added sceKernelRebootBeforeForKernel().

* include/modulemgr_user.h: Added documentation for sceKernelLoadModuleMs().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHDisc().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHDiscUpdater().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHDiscDebug().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHDiscEmu().

* src/modulemgr/modulemgr.c: Added ModuleMgrForKernel_C2A5E6CA().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHMs1().

* added current work from months ago

* src/modulemgr: Cleaned modulemgr directory and added first code.

* src/modulemgr: Finished ModuleMgrInit().

* src/modulemgr: ModuleMgrInit(): Added ChunkInit() call.

* src/modulemgr: Added _ModuleMgrRebootBefore().

* include/threadman_kernel.h: Added sceKernelSuspendThread().

* src\modulemgr\modulemgr.c: Added functions to reverse

* src/modulemgr: Fixed ModuleMgrRebootBefore prefix

ModuleMgrRebootBefore was prefixed with _ although it's not an internal
function

* src/modulmgr: Added ModuleMgrRebootPhase().

* src/modulemgr: Added exe_thread().

* src/modulemgr: Added_UnloadModule().

* src/modulemgr: Fixed a mistake in_UnloadModule().

* src/modulemgr: Added sceKernelGetModuleId().

* src/modulemgr: sceKernelGetModuleId(): Clarified variable name and type.

* src/modulemgr: sceKernelGetModuleId(): Changed return type (forgot it in last commit) for clarification reasons.

* src/modulemgr: sceKernelGetModuleId(): Fixed K1 register handling.

* include/iofilemgr_kernel.h: Added more sceIoOpen() flags.

* src/modulemgr: Added sceKernelGetModuleIdByAddress()

* src/modulemgr: Documentation for sceKernelGetModuleId()

* src/modulemgr: sceKernelGetModuleIdByAddress():  Fixed pspK1PtrOk() argument

* src/modulemgr: Added sceKernelGetModuleGPByAddress()

* src/modulemgr: Fixed missing const statement in arguments

* include/iofilemgr_kernel.h: Added sceKernelLoadModuleForLoadExecForUser().

* src/modulemgr.c: sceKernelGetModuleGPByAddress(): Added retVal declaration.

* src/modulemgr.c: sceKernelLoadModuleForLoadExecForUser(): Added back SCeUID fd declaration (it was eaten by some ghosts I guess).

* src/modulemgr: Added sceKernelGetModuleIdList()

* src/modulemgr: Added sceKernelLoadModule()

* src/modulemgr: sceKernelLoadModuleForLoadExecForUser(): Fixed pointer issues, added some comments

* src/modulemgr: sceKernelLoadModule(): Fixed missing structure field set

* src/modulemgr: sceKernelLoadModuleForLoadExecForUser() and sceKernelLoadModule(): Added documentation

* src/modulemgr: struct SceKernelLMOption: Added documentation

* src/modulemgr: sceKernelLoadModule(): Fixed return value

* src/modulemgr.c: Removed SceKernelLMOption declaration (it is already declared in include/modulemgr_options.h).

* include/modulemgr_options.h: Added back the doxygen documentation for SceKernelLMOption.

* src/modulemgr.c: Added sceKernelLoadModuleByID().

* src/modulemgr.c: sceKernelLoadModule(): Fixed ioctl command.

* src/modulemgr.c: Renamed sceKernelLoadModule() -> sceKernelLoadModuleForUser().

* src/modulemgr.c: sceKernelLoadModuleForUser(): Fixed ioctl command (another one).

* src/modulemgr: Added sceKernelQueryModuleInfo()

* src/modulemgr: sceKernelQueryModuleInfo(): Improved documentation

* src/modulemgr: Fixed various incorrect SDK versions

* src/modulemgr.c: sceKernelQueryModuleInfo(): Fixed two syntax errors.

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleWithBlockOffset().

* src/modulemgr/modulemgr.c: Fixed wrong handling of various sceIoIoctl() status values.

* src/modulemgr/modulemgr.c: Added missing sysmem_kernel.h include.

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleByIDWithBlockOffset().

* src/modulemgr/modulemgr.c: Fixed register K1 permission checks in various user-exported loadModule() functions.

* src/modulemgr/modulemgr.c: sceKernelLoadModuleForUser(): Fixed handling of parameter "opt" when being NULL.

* src/modulemgr/modulemgr.c: Fixed sdkVersion return codes in various LoadModule() functions.

* include/iofilemgr_kernel.h: Added back SCE_O_UNKNOWN0.

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleDNAS().

* src/modulemgr: Updated and added documentation

- Added documentation for sceKernelLoadModuleById(),
sceKernelLoadModuleWithBlockOffset(), and sceKernelLoadModuleDNAS
- Updated documentation of ModuleMgrForKernel_2B7FC10D(),
sceKernelLoadModule(), sceKernelGetModuleIdList(),
sceKernelQueryModuleInfo(), sceKernelGetModuleId(),
sceKernelGetModuleIdByAddress(), and sceKernelGetModuleGPByAddress()

* src/modulemgr: Updated documentation: case when SCE_ERROR_KERNEL_ILLEGAL_ADDRESS is returned

Affects sceKernelLoadModuleWithBlockOffset() and
sceKernelLoadModuleByIDWithBlockOffset().

* src/modulemgr: sceKernelLoadModuleDNAS(): Forgot a word in documentation

* src/modulemgr: sceKernelLoadModuleDNAS(): Forgot quotation marks in documentation

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleNpDrm().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleMs().

* src/modulemgr/modulemgr.c: Added sceKernelSelfStopUnloadModule().

* src/modulemgr/modulemgr.c: Added sceKernelStopModule().

* src/modulemgr: sceKernelLoadModuleNpDrm(): Fixed a pointer issue

* include/common/memory.h: Added pspClearMemory*() functions. These functions should be used as an alternative to corresponding memset calls.

* src/modulemgr/modulemgr.c: Replaced the variable <modParams> clearing-for-loops with the pspClearMemory32() function.

* src/modulemgr: sceKernelLoadModuleNpDrm(): Added documentation

* src/modulemgr: Added sceKernelLoadModuleBufferUsbWlan()

* src/modulemgr: sceKernelLoadModuleBufferUsbWlan(): Fixed return type

* src/modulemgr: Added _LoadModuleByBufferID()

* src/modulemgr: Added _start_exe_thread()

* src/modulemgr: Added sub_00007620()

* src/modulemgr: Added sub_00007698()

* src/modulemgr: Rename sub_00007620() to _CheckOption()

* src/modulemgr: _CheckOption(): Fix return type

* src/modulemgr: Added _SelfStopUnloadModule()

* src/modulemgr/: Added loadModuleChecks_inline.h containing commonly used checks in loadModule() functions. The check functions introduced there should be used in loadModule() functions.

* src/modulemgr/modulemgr.c: Preparations for the use of _check functions().

* src/modulemgr/modulemgr.c: Removed _CheckOptions(). Its equivalent function is _checkLMOptionConditions() defined in loadModuleChecks_inline.h.

* src/modulemgr/modulemgr.c: loadModule _check() functions are now being used.

* src/modulemgr/loadModuleChecks_inline.h: Removed _setupChecks() and _terminateChecks().

* src/modulemgr/modulemgr.c: Fixed _SelfStopUnloadModule().

* src/modulemgr/modulemgr.c: Forgot to fix pointer errors in _SelfStopUnloadModule() in previous commit.

* src/modulemgr/modulemgr.c: Added _EpilogueModule().

* src/modulemgr: Added sub_000077F0()

* src/modulemgr: _EpilogueModule(): Replaced hardcoded size by sizeof()

* modulemgr: renamed sub_000077F0 to _StopUnloadSelfModuleWithStatus()

* src/modulemgr/modulemgr.c: Added _ModuleReleaseLibraries().

* src/modulemgr: Added _checkSMOptionConditions() and fixed small issues in _StopUnloadSelfModuleWithStatus().

* src/modulemgr/modulemgr.c: Added sceKernelStartModule().

* include/threadman_kernel: Added more thread attribute values.

* src/modulemgr/modulemgr.c: Added sceKernelRebootBeforeForUser().

* src/modulemgr/modulemgr.c: Added sceKernelRebootPhaseForKernel().

* src/modulemgr/modulemgr.c: Added sceKernelRebootBeforeForKernel().

* include/modulemgr_user.h: Added documentation for sceKernelLoadModuleMs().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHDisc().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHDiscUpdater().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHDiscDebug().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHDiscEmu().

* src/modulemgr/modulemgr.c: Added ModuleMgrForKernel_C2A5E6CA().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHMs1().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHMs2().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHMs3().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHMs4().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHMs5().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecVSHMs6().

* src/modulemgr/modulemgr.c: Added ModuleMgrForKernel_8DD336D4().

* src/modulemgr: Simplified ModuleMgrRebootBefore(()

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForLoadExecNpDrm().

* src/modulemgr/modulemgr.c: Minor line indentation corrections.

* src/modulemgr/modulemgr.c: option-> pOpt name change in several functions.

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleVSH().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleVSHByID().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleForKernel().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleByIDForKernel().

* src/modulemgr/modulemgr.c: Added more functions.

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleBufferForExitGame() and sceKernelLoadModuleBufferMs().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleBufferApp().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleBufferForLoadExecBufferVSHUsbWlan().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleBufferForLoadExecBufferVSHUsbWlanDebug().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleBufferVSH().

* src/modulemgr/modulemgr.c: Added sceKernelLoadModuleBufferForExitVSHVSH().

* src/modulemgr/modulemgr.c: Added more functions.

* src/modulemgr/modulemgr.c: Added sceKernelUnloadModule().

* src/modulemgr/modulemgr.c: Added sceKernelSearchModuleByName().

* src/modulemgr/modulemgr.c: Added sceKernelSearchModuleByAddress().

* src/modulemgr/modulemgr.c: Added sceKernelSetNpDrmGetModuleKeyFunction().

* src/modulemgr/modulemgr.c: Added sceKernelNpDrmGetModuleKey().

* src/modulemgr/modulemgr.c: Added sceKernelModuleMgrMode().

* src/modulemgr/modulemgr.c: Added _StartModule().

* src/modulemgr/modulemgr.c: Added __StopModule().

* src/modulemgr/modulemgr.c: Added _PrologueModule().

* src/modulemgr/modulemgr.c: Added _ModuleRegisterLibraries().

* src/modulemgr/modulemgr.c: Fixed error in _ModuleReleaseLibraries().

* Moved NID_MODULE_* NIDs from src/loadcore/nid.h -> include/modulemgr_nids.h.

* src/modulemgr/modulemgr.c: Added _ProcessModuleExportEnt().

* include/loadcore.h: Renamed SceLoadCoreExecFileInfo.unk104 -> SceLoadCoreExecFileInfo.secureInstallId.

* include/sysmem_user.h: SceSysMemBlockType: Added more members.

* src/modulemgr/modulemgr.c: Added _LoadModule().

* src/modulemgr/modulemgr.c: Added _PartitionCheck().

* src/modulemgr/modulemgr.c: Added _CheckSkipPbpHeader().

* src/modulemgr/modulemgr.c: Fixes and reduced use of magic numbers

* src/modulemgr/modulemgr.c: Fixes and reduced use of magic numbers (2)

* src/modulemgr/modulemgr.c: Fixed mistake in sceKernelQueryModuleInfo().

* src/modulemgr/modulemgr.c: More small fixes and code cleanup.

* Modulemgr: Remove already reverse-engineered function

* src/modulemgr/modulemgr.c: Fixed a few compilation issues.

* src/modulemgr: Broke up modulemgr.c into several .c files.

* modulemgr: Reverse _CheckOverride()

- Move _CheckOverride() into a separate file

- Reverse _CheckOverride()

- Add the rules for overriding modules' file descriptors

* src/modulemgr/modulemgr.c: Fixed _CheckSkipPbpHeader.

* src/modulemgr/override.c: Fixed syntax errors.

* modulemgr: Fix more mistakes in override

* src/modulemgr: Added pbp.h ( .PBP header description).

* src/modulemgr/modulemgr.c: Added _RelocateModule().

* src/modulemgr/modulemgr.c: Fixed mistake in ModuleRegisterLibraries().

* include/sysmem_kernel.h: Updated prototype of sceKernelGetId().

* src/modulemgr/modulemgr.c: Added ModuleMgrForUser_CDE1C1FE().

* src/modulemgr/modulemgr.c: Added allocate_module_block().

* src/modulemgr/override.c: Fixed mistakes in _CheckOverride() and added more documentation about its purpose.

* modulemgr/rebootModule: Replace hexa with constant

* modulemgr/modulemgr: ModuleMgrForUser_CDE1C1FE(): s32 -> SceBool

* modulemgr: Fixes, re-writes, improved naming, added some documentation. It does not compile yet!

* modulemgr: Make it compilable.

* Removed include/modulemgr.h.

* src/modulemgr: Added missing Makefile.

* modulemgr: Updated its static libraries to reflect name changes of its exported functions.

* modulemgr: Made Loadcore and Loadexec compilable again. They were broken after changes have been made for modulemgr.

* modulemgr: Fixed a few mistakes.

* modulemgr: More fixes and updated some documentation.

* modulemgr: Added .PBP file layout and PARAM.SFO information.

* include/modulemgr_init.h: Added more SCE_EXEC_FILE_* members.

* include/common/errors.h: Added error-value format description.

* modulemgr: More fixes. Also added debug code for modulemgr (dbg.c). It will be removed before merging into 'master'.

* modulemgr: Added missing debug code.

* src/modulemgr: Fixed more errors.

* update .gitignore with version on master

* update .gitignore

* update .gitignore

* Module manager: Remove debug code

* Revert changes made to debug header.

* Add modulemgr to global makefile.

Co-authored-by: devnoname120 <devnoname120@gmail.com>
Co-authored-by: Felix-Dev <FelixDev91.gmail.com>
Co-authored-by: Kern Walster <wals0323@umn.edu>
Co-authored-by: Martin Charles <martincharles07@gmail.com>
Co-authored-by: devnoname120 <devnoname120+gh@gmail.com>
2021-01-02 16:30:44 +01:00
.github Replace Travis-CI with GitHub actions (#68) 2021-01-02 14:31:54 +01:00
docs Replace Travis-CI with GitHub actions (#68) 2021-01-02 14:31:54 +01:00
include Add Module Manager (#69) 2021-01-02 16:30:44 +01:00
lib Add Module Manager (#69) 2021-01-02 16:30:44 +01:00
src Add Module Manager (#69) 2021-01-02 16:30:44 +01:00
utils utils/kprxgen/psp-kprxgen.c: Fixed #include statements. 2015-08-04 19:14:24 +02:00
.gitignore Add Module Manager (#69) 2021-01-02 16:30:44 +01:00
CONTRIBUTING.md Add variable declaration rules to CONTRIBUTING.md 2014-05-23 19:14:59 +02:00
COPYING Finished the build system, with the import side: now our modules will be easily able to import functions and variables. Modified pspimport.s and added a modified version of psp-fixup-imports to support variables. 2012-01-01 23:19:42 +00:00
Makefile Add Module Manager (#69) 2021-01-02 16:30:44 +01:00
README.md README — Replace Travis-CI badge with GH Actions 2021-01-02 15:56:26 +01:00

uOFW CI status

This project aims to reverse engineer the basic PSP kernel to provide a free and open source vanilla firmware. You can see the current progress at the Current Modules Status wiki page.

Documentation

Installation

You can run components of uOFW by following the directions at uofw/uofwinst.

Contributing

This project is far from complete. We welcome everyone to help us.

To get started, please read the wiki. It contains the necessary information to contribute to uOFW.

License

This project is licensed under the MIT license. It includes code from the PSPSDK which is licensed under the BSD license. For more copyright and license information, see COPYING.

Questions or need help?

You can chat with us the following ways: