summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2014-05-17 18:04:34 -0500
committerRyan Houdek <Sonicadvance1@gmail.com>2014-05-17 18:04:34 -0500
commitdb96f862d2d7b0520b1cbae3b72ea6af1af5383e (patch)
tree3721d201d881bb2a002e7a4c665664a68283a412 /Source/Core
parenta2d73ed525c66aaeac83294ccf3f946c0c13390f (diff)
parent0f1b1dd3cfef992814cabbf573b01e5096dbc8e1 (diff)
Merge pull request #378 from delroth/interrupts-comments
CheckExceptions: add TODO and remove a wrong comment
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/PowerPC.cpp7
1 files changed, 6 insertions, 1 deletions
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)
{