Implement sys_dbg_read_process_memory and sys_dbg_write_process_memory

This commit is contained in:
Chris Weermann (TGE) 2018-07-09 22:30:28 +02:00 committed by Ivan
parent d266a25618
commit c5dcef52fa
5 changed files with 132 additions and 8 deletions

View file

@ -7,6 +7,66 @@
logs::channel sys_lv2dbg("sys_lv2dbg");
template <>
void fmt_class_string<CellLv2DbgError>::format(std::string& out, u64 arg)
{
format_enum(out, arg, [](CellLv2DbgError value)
{
switch (value)
{
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDPROCESSID);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDTHREADID);
STR_CASE(CELL_LV2DBG_ERROR_DEILLEGALREGISTERTYPE);
STR_CASE(CELL_LV2DBG_ERROR_DEILLEGALREGISTERNUMBER);
STR_CASE(CELL_LV2DBG_ERROR_DEILLEGALTHREADSTATE);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDEFFECTIVEADDRESS);
STR_CASE(CELL_LV2DBG_ERROR_DENOTFOUNDPROCESSID);
STR_CASE(CELL_LV2DBG_ERROR_DENOMEM);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDARGUMENTS);
STR_CASE(CELL_LV2DBG_ERROR_DENOTFOUNDFILE);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDFILETYPE);
STR_CASE(CELL_LV2DBG_ERROR_DENOTFOUNDTHREADID);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDTHREADSTATUS);
STR_CASE(CELL_LV2DBG_ERROR_DENOAVAILABLEPROCESSID);
STR_CASE(CELL_LV2DBG_ERROR_DENOTFOUNDEVENTHANDLER);
STR_CASE(CELL_LV2DBG_ERROR_DESPNOROOM);
STR_CASE(CELL_LV2DBG_ERROR_DESPNOTFOUND);
STR_CASE(CELL_LV2DBG_ERROR_DESPINPROCESS);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDPRIMARYSPUTHREADID);
STR_CASE(CELL_LV2DBG_ERROR_DETHREADSTATEISNOTSTOPPED);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDTHREADTYPE);
STR_CASE(CELL_LV2DBG_ERROR_DECONTINUEFAILED);
STR_CASE(CELL_LV2DBG_ERROR_DESTOPFAILED);
STR_CASE(CELL_LV2DBG_ERROR_DENOEXCEPTION);
STR_CASE(CELL_LV2DBG_ERROR_DENOMOREEVENTQUE);
STR_CASE(CELL_LV2DBG_ERROR_DEEVENTQUENOTCREATED);
STR_CASE(CELL_LV2DBG_ERROR_DEEVENTQUEOVERFLOWED);
STR_CASE(CELL_LV2DBG_ERROR_DENOTIMPLEMENTED);
STR_CASE(CELL_LV2DBG_ERROR_DEQUENOTREGISTERED);
STR_CASE(CELL_LV2DBG_ERROR_DENOMOREEVENTPROCESS);
STR_CASE(CELL_LV2DBG_ERROR_DEPROCESSNOTREGISTERED);
STR_CASE(CELL_LV2DBG_ERROR_DEEVENTDISCARDED);
STR_CASE(CELL_LV2DBG_ERROR_DENOMORESYNCID);
STR_CASE(CELL_LV2DBG_ERROR_DESYNCIDALREADYADDED);
STR_CASE(CELL_LV2DBG_ERROR_DESYNCIDNOTFOUND);
STR_CASE(CELL_LV2DBG_ERROR_DESYNCIDNOTACQUIRED);
STR_CASE(CELL_LV2DBG_ERROR_DEPROCESSALREADYREGISTERED);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDLSADDRESS);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDOPERATION);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDMODULEID);
STR_CASE(CELL_LV2DBG_ERROR_DEHANDLERALREADYREGISTERED);
STR_CASE(CELL_LV2DBG_ERROR_DEINVALIDHANDLER);
STR_CASE(CELL_LV2DBG_ERROR_DEHANDLENOTREGISTERED);
STR_CASE(CELL_LV2DBG_ERROR_DEOPERATIONDENIED);
STR_CASE(CELL_LV2DBG_ERROR_DEHANDLERNOTINITIALIZED);
STR_CASE(CELL_LV2DBG_ERROR_DEHANDLERALREADYINITIALIZED);
STR_CASE(CELL_LV2DBG_ERROR_DEILLEGALCOREDUMPPARAMETER);
}
return unknown;
});
}
s32 sys_dbg_read_ppu_thread_context(u64 id, vm::ptr<sys_dbg_ppu_thread_context_t> ppu_context)
{
fmt::throw_exception("Unimplemented" HERE);