void sys_interrupt_thread_eoi(PPUThread& CPU) { sys_interrupt.Log("sys_interrupt_thread_eoi()"); // TODO: maybe it should actually unwind the stack (ensure that all the automatic objects are finalized)? CPU.GPR[1] = align(CPU.GetStackAddr() + CPU.GetStackSize(), 0x200) - 0x200; // supercrutch (just to hide error messages) CPU.FastStop(); }
s32 sys_ppu_thread_get_stack_information(PPUThread& CPU, u32 info_addr) { sys_ppu_thread.Log("sys_ppu_thread_get_stack_information(info_addr=0x%x)", info_addr); vm::write32(info_addr, (u32)CPU.GetStackAddr()); vm::write32(info_addr + 4, CPU.GetStackSize()); return CELL_OK; }