SceCompatMailbox: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
No edit summary
Line 26: Line 26:
| Enable raising MIPS Compat interrupt <code>ID</code>. Write all ones
| Enable raising MIPS Compat interrupt <code>ID</code>. Write all ones
|}
|}
== Interrupt raising sequence ==
When one wants to raise "Compat" interrupt <code>ID</code> to the MIPS processor, the following sequence is used:
<source lang="c">
// Write data to shared address
shared->foo = bar;
// Trigger interrupt
dsb(0xf);
*(u32 *)(0xE5070000 + ID * 4 + 0x80) = 0xffffffff;
dsb(0xf);
*(u32 *)(0xE5070000 + ID * 4) = 0xffffffff;
dsb(0xf);
</source>

Revision as of 09:06, 14 April 2020

SceCompatMailbox

Address Size
0xE5070000 0x1000

Registers

Offset Size Comments
0x00 + 4 * ID 4 Raise MIPS Compat interrupt ID. Write all ones. Visible at 0xBC300030 on MIPS side
0x80 + 4 * ID 4 Enable raising MIPS Compat interrupt ID. Write all ones

Interrupt raising sequence

When one wants to raise "Compat" interrupt ID to the MIPS processor, the following sequence is used:

// Write data to shared address
shared->foo = bar;
// Trigger interrupt
dsb(0xf);
*(u32 *)(0xE5070000 + ID * 4 + 0x80) = 0xffffffff;
dsb(0xf);
*(u32 *)(0xE5070000 + ID * 4) = 0xffffffff;
dsb(0xf);