mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-21 20:15:27 +00:00
sys_interrupt: add vm::temporary_unlock
This commit is contained in:
parent
0a88a23bf5
commit
f5ee8c1292
2 changed files with 10 additions and 4 deletions
|
@ -37,8 +37,10 @@ void lv2_int_serv::join()
|
|||
(*thread)();
|
||||
}
|
||||
|
||||
error_code sys_interrupt_tag_destroy(u32 intrtag)
|
||||
error_code sys_interrupt_tag_destroy(ppu_thread& ppu, u32 intrtag)
|
||||
{
|
||||
vm::temporary_unlock(ppu);
|
||||
|
||||
sys_interrupt.warning("sys_interrupt_tag_destroy(intrtag=0x%x)", intrtag);
|
||||
|
||||
const auto tag = idm::withdraw<lv2_obj, lv2_int_tag>(intrtag, [](lv2_int_tag& tag) -> CellError
|
||||
|
@ -64,8 +66,10 @@ error_code sys_interrupt_tag_destroy(u32 intrtag)
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code _sys_interrupt_thread_establish(vm::ptr<u32> ih, u32 intrtag, u32 intrthread, u64 arg1, u64 arg2)
|
||||
error_code _sys_interrupt_thread_establish(ppu_thread& ppu, vm::ptr<u32> ih, u32 intrtag, u32 intrthread, u64 arg1, u64 arg2)
|
||||
{
|
||||
vm::temporary_unlock(ppu);
|
||||
|
||||
sys_interrupt.warning("_sys_interrupt_thread_establish(ih=*0x%x, intrtag=0x%x, intrthread=0x%x, arg1=0x%llx, arg2=0x%llx)", ih, intrtag, intrthread, arg1, arg2);
|
||||
|
||||
CellError error = CELL_EAGAIN;
|
||||
|
@ -124,6 +128,8 @@ error_code _sys_interrupt_thread_establish(vm::ptr<u32> ih, u32 intrtag, u32 int
|
|||
|
||||
error_code _sys_interrupt_thread_disestablish(ppu_thread& ppu, u32 ih, vm::ptr<u64> r13)
|
||||
{
|
||||
vm::temporary_unlock(ppu);
|
||||
|
||||
sys_interrupt.warning("_sys_interrupt_thread_disestablish(ih=0x%x, r13=*0x%x)", ih, r13);
|
||||
|
||||
const auto handler = idm::withdraw<lv2_obj, lv2_int_serv>(ih);
|
||||
|
|
|
@ -34,7 +34,7 @@ struct lv2_int_serv final : lv2_obj
|
|||
|
||||
// Syscalls
|
||||
|
||||
error_code sys_interrupt_tag_destroy(u32 intrtag);
|
||||
error_code _sys_interrupt_thread_establish(vm::ptr<u32> ih, u32 intrtag, u32 intrthread, u64 arg1, u64 arg2);
|
||||
error_code sys_interrupt_tag_destroy(ppu_thread& ppu, u32 intrtag);
|
||||
error_code _sys_interrupt_thread_establish(ppu_thread& ppu, vm::ptr<u32> ih, u32 intrtag, u32 intrthread, u64 arg1, u64 arg2);
|
||||
error_code _sys_interrupt_thread_disestablish(ppu_thread& ppu, u32 ih, vm::ptr<u64> r13);
|
||||
void sys_interrupt_thread_eoi(ppu_thread& ppu);
|
||||
|
|
Loading…
Add table
Reference in a new issue