diff -uNr a/m/MANIFEST.TXT b/m/MANIFEST.TXT --- a/m/MANIFEST.TXT 27a062d2599973684b8fd9888be347d9b492fc94b9b29ad776dd672b11fb49606d226ceabbe5295f72a56fec277aeb465a9072961134be60e8054fbd8a705b6d +++ b/m/MANIFEST.TXT 0f03021ae4e766b63be5efe5cf5e672fc90202022ca05772621f5299c9b808d2c8c2439b7fa555716cb33a6adb8351e582275ffbafdf6cc633e528522343720e @@ -1,2 +1,2 @@ -586606 m_genesis "Genesis." - +586606 m_genesis "Genesis." +586747 errata_slaveirq "Fix of slave IRQ clearing." diff -uNr a/m/mipsinst/m_instrs.asm b/m/mipsinst/m_instrs.asm --- a/m/mipsinst/m_instrs.asm c5afa1184e847ba45411669a68d1cc0f62a2bacb17155541f525a70d4edefd9a62789675f30c1eb79621d8737674fe39ba7a5d913d30fe18e8b785f3cf48276d +++ b/m/mipsinst/m_instrs.asm 0b4157a311317d55241b7a9700e16b0952cc540285d4922ec2d6626c29c3a9c83de29d18068d9be2a721b801cded2d930a4cdecf4991c5c2eab707e5e987bde6 @@ -470,7 +470,7 @@ _mtc0_r13: ; 0x0d test ecx, ecx ; Sel != 0 ? jnz _mtc0_unknown ; ... then unknown; else: -%define CAUSEMASK ((1 << 23) | (1 << 22) | (3 << 8)) +%define CAUSEMASK ((1 << 23) | (1 << 22) | (255 << 8)) mov eax, CP0_Cause ; eax := CP0_Cause and ebx, CAUSEMASK ; T := T & CAUSEMASK and eax, ~CAUSEMASK ; eax := eax & ~CAUSEMASK