diff --git a/rpcs3/Emu/Cell/lv2/lv2.cpp b/rpcs3/Emu/Cell/lv2/lv2.cpp index 1ec2d43520..bc075957be 100644 --- a/rpcs3/Emu/Cell/lv2/lv2.cpp +++ b/rpcs3/Emu/Cell/lv2/lv2.cpp @@ -109,7 +109,7 @@ const std::array, 1024> g_ppu_sysc null_func, BIND_SYSC(sys_process_getpid), //1 (0x001) 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_detach_child), //5 (0x005) DBG diff --git a/rpcs3/Emu/Cell/lv2/sys_process.cpp b/rpcs3/Emu/Cell/lv2/sys_process.cpp index 7c041e7693..4742634bd7 100644 --- a/rpcs3/Emu/Cell/lv2/sys_process.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_process.cpp @@ -477,6 +477,15 @@ void _sys_process_exit2(ppu_thread& ppu, s32 status, vm::ptr 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 pid, u32 primary_prio, u64 flags, vm::ptr stack, u32 stack_size, u32 mem_id, vm::ptr param_sfo, vm::ptr 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" diff --git a/rpcs3/Emu/Cell/lv2/sys_process.h b/rpcs3/Emu/Cell/lv2/sys_process.h index 9624c57510..906c82af71 100644 --- a/rpcs3/Emu/Cell/lv2/sys_process.h +++ b/rpcs3/Emu/Cell/lv2/sys_process.h @@ -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); void _sys_process_exit(ppu_thread& ppu, s32 status, u32 arg2, u32 arg3); void _sys_process_exit2(ppu_thread& ppu, s32 status, vm::ptr arg, u32 arg_size, u32 arg4); +void sys_process_exit3(ppu_thread& ppu, s32 status); error_code sys_process_spawns_a_self2(vm::ptr pid, u32 primary_prio, u64 flags, vm::ptr stack, u32 stack_size, u32 mem_id, vm::ptr param_sfo, vm::ptr dbg_data);