Implement sys_process_exit3

This commit is contained in:
Eladash 2022-05-19 10:59:30 +03:00 committed by Ivan
parent 2ba437b6dc
commit 7ddeb0d00f
3 changed files with 11 additions and 1 deletions

View File

@ -109,7 +109,7 @@ const std::array<std::pair<ppu_intrp_func_t, std::string_view>, 1024> g_ppu_sysc
null_func, null_func,
BIND_SYSC(sys_process_getpid), //1 (0x001) BIND_SYSC(sys_process_getpid), //1 (0x001)
BIND_SYSC(sys_process_wait_for_child), //2 (0x002) ROOT BIND_SYSC(sys_process_wait_for_child), //2 (0x002) ROOT
null_func, //3 (0x003) BIND_SYSC(sys_process_exit3), //3 (0x003)
BIND_SYSC(sys_process_get_status), //4 (0x004) DBG BIND_SYSC(sys_process_get_status), //4 (0x004) DBG
BIND_SYSC(sys_process_detach_child), //5 (0x005) DBG BIND_SYSC(sys_process_detach_child), //5 (0x005) DBG

View File

@ -477,6 +477,15 @@ void _sys_process_exit2(ppu_thread& ppu, s32 status, vm::ptr<sys_exit2_param> ar
} }
} }
void sys_process_exit3(ppu_thread& ppu, s32 status)
{
ppu.state += cpu_flag::wait;
sys_process.warning("_sys_process_exit3(status=%d)", status);
return _sys_process_exit(ppu, status, 0, 0);
}
error_code sys_process_spawns_a_self2(vm::ptr<u32> pid, u32 primary_prio, u64 flags, vm::ptr<void> stack, u32 stack_size, u32 mem_id, vm::ptr<void> param_sfo, vm::ptr<void> dbg_data) error_code sys_process_spawns_a_self2(vm::ptr<u32> pid, u32 primary_prio, u64 flags, vm::ptr<void> stack, u32 stack_size, u32 mem_id, vm::ptr<void> param_sfo, vm::ptr<void> dbg_data)
{ {
sys_process.todo("sys_process_spawns_a_self2(pid=*0x%x, primary_prio=0x%x, flags=0x%llx, stack=*0x%x, stack_size=0x%x, mem_id=0x%x, param_sfo=*0x%x, dbg_data=*0x%x" sys_process.todo("sys_process_spawns_a_self2(pid=*0x%x, primary_prio=0x%x, flags=0x%llx, stack=*0x%x, stack_size=0x%x, mem_id=0x%x, param_sfo=*0x%x, dbg_data=*0x%x"

View File

@ -120,4 +120,5 @@ error_code sys_process_wait_for_child2(u64 unk1, u64 unk2, u64 unk3, u64 unk4, u
error_code sys_process_detach_child(u64 unk); error_code sys_process_detach_child(u64 unk);
void _sys_process_exit(ppu_thread& ppu, s32 status, u32 arg2, u32 arg3); void _sys_process_exit(ppu_thread& ppu, s32 status, u32 arg2, u32 arg3);
void _sys_process_exit2(ppu_thread& ppu, s32 status, vm::ptr<sys_exit2_param> arg, u32 arg_size, u32 arg4); void _sys_process_exit2(ppu_thread& ppu, s32 status, vm::ptr<sys_exit2_param> arg, u32 arg_size, u32 arg4);
void sys_process_exit3(ppu_thread& ppu, s32 status);
error_code sys_process_spawns_a_self2(vm::ptr<u32> pid, u32 primary_prio, u64 flags, vm::ptr<void> stack, u32 stack_size, u32 mem_id, vm::ptr<void> param_sfo, vm::ptr<void> dbg_data); error_code sys_process_spawns_a_self2(vm::ptr<u32> pid, u32 primary_prio, u64 flags, vm::ptr<void> stack, u32 stack_size, u32 mem_id, vm::ptr<void> param_sfo, vm::ptr<void> dbg_data);