From 0f1b1dd3cfef992814cabbf573b01e5096dbc8e1 Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Sun, 18 May 2014 00:56:18 +0200 Subject: [PATCH] CheckExceptions: add TODO and remove a wrong comment --- Source/Core/Core/PowerPC/PowerPC.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/PowerPC/PowerPC.cpp b/Source/Core/Core/PowerPC/PowerPC.cpp index 62cba9ed3a..2b2e1dda37 100644 --- a/Source/Core/Core/PowerPC/PowerPC.cpp +++ b/Source/Core/Core/PowerPC/PowerPC.cpp @@ -320,6 +320,11 @@ void CheckExceptions() // set to exception type entry point //NPC = 0x00000x00; + // TODO(delroth): Exception priority is completely wrong here: depending on + // the instruction class, exceptions should be executed in a given order, + // which is very different from the one arbitrarily chosen here. See ยง6.1.5 + // in 6xx_pem.pdf. + if (exceptions & EXCEPTION_ISI) { SRR0 = NPC; @@ -396,7 +401,7 @@ void CheckExceptions() } // EXTERNAL INTERRUPT - else if (MSR & 0x0008000) //hacky...the exception shouldn't be generated if EE isn't set... + else if (MSR & 0x0008000) // Handling is delayed until MSR.EE=1. { if (exceptions & EXCEPTION_EXTERNAL_INT) {