Implemented syscall _sys_spu_image_get_segments

This commit is contained in:
Nekotekina 2017-08-31 21:39:12 +03:00
parent 167d6a08f8
commit 90b8346312
4 changed files with 8 additions and 6 deletions

View file

@ -133,7 +133,7 @@ extern std::string ppu_get_syscall_name(u64 code)
case 156: return "sys_spu_image_open";
case 157: return "_sys_spu_image_import";
case 158: return "_sys_spu_image_close";
case 159: return "_sys_raw_spu_image_load";
case 159: return "_sys_spu_image_get_segments";
case 160: return "sys_raw_spu_create";
case 161: return "sys_raw_spu_destroy";
case 163: return "sys_raw_spu_read_puint_mb";

View file

@ -206,7 +206,7 @@ const std::array<ppu_function_t, 1024> s_ppu_syscall_table
BIND_FUNC(sys_spu_image_open), //156 (0x09C)
BIND_FUNC(_sys_spu_image_import), //157 (0x09D)
BIND_FUNC(_sys_spu_image_close), //158 (0x09E)
BIND_FUNC(_sys_raw_spu_image_load), //159 (0x09F)
BIND_FUNC(_sys_spu_image_get_segments), //159 (0x09F)
BIND_FUNC(sys_raw_spu_create), //160 (0x0A0)
BIND_FUNC(sys_raw_spu_destroy), //161 (0x0A1)
null_func, //162 (0x0A2) UNS

View file

@ -188,11 +188,13 @@ error_code _sys_spu_image_close(vm::ptr<sys_spu_image> img)
return CELL_OK;
}
error_code _sys_raw_spu_image_load(vm::ptr<sys_spu_image> img, u32 ptr, u32 arg3)
error_code _sys_spu_image_get_segments(vm::ptr<sys_spu_image> img, vm::ptr<sys_spu_segment> segments, s32 nseg)
{
sys_spu.todo("_sys_raw_spu_image_load(img=*0x%x, ptr=*0x%x, arg3=0x%x)", img, ptr, arg3);
sys_spu.error("_sys_spu_image_get_segments(img=*0x%x, segments=*0x%x, nseg=%d)", img, segments, nseg);
fmt::throw_exception("Unimlemented syscall: _sys_raw_spu_image_load");
// TODO: apply SPU patches
std::memcpy(segments.get_ptr(), img->segs.get_ptr(), sizeof(sys_spu_segment) * nseg);
return CELL_OK;
}
error_code sys_spu_thread_initialize(vm::ptr<u32> thread, u32 group_id, u32 spu_num, vm::ptr<sys_spu_image> img, vm::ptr<sys_spu_thread_attribute> attr, vm::ptr<sys_spu_thread_argument> arg)

View file

@ -290,7 +290,7 @@ error_code _sys_spu_image_get_information(vm::ps3::ptr<sys_spu_image> img, vm::p
error_code sys_spu_image_open(vm::ps3::ptr<sys_spu_image> img, vm::ps3::cptr<char> path);
error_code _sys_spu_image_import(vm::ps3::ptr<sys_spu_image> img, u32 src, u32 size, u32 arg4);
error_code _sys_spu_image_close(vm::ps3::ptr<sys_spu_image> img);
error_code _sys_raw_spu_image_load(vm::ps3::ptr<sys_spu_image> img, u32 ptr, u32 arg3);
error_code _sys_spu_image_get_segments(vm::ps3::ptr<sys_spu_image> img, vm::ps3::ptr<sys_spu_segment> segments, s32 nseg);
error_code sys_spu_thread_initialize(vm::ps3::ptr<u32> thread, u32 group, u32 spu_num, vm::ps3::ptr<sys_spu_image>, vm::ps3::ptr<sys_spu_thread_attribute>, vm::ps3::ptr<sys_spu_thread_argument>);
error_code sys_spu_thread_set_argument(u32 id, vm::ps3::ptr<sys_spu_thread_argument> arg);
error_code sys_spu_thread_group_create(vm::ps3::ptr<u32> id, u32 num, s32 prio, vm::ps3::ptr<sys_spu_thread_group_attribute> attr);