diff options
| author | Ryan Houdek <Sonicadvance1@gmail.com> | 2014-05-17 18:04:34 -0500 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@gmail.com> | 2014-05-17 18:04:34 -0500 |
| commit | db96f862d2d7b0520b1cbae3b72ea6af1af5383e (patch) | |
| tree | 3721d201d881bb2a002e7a4c665664a68283a412 /Source/Core | |
| parent | a2d73ed525c66aaeac83294ccf3f946c0c13390f (diff) | |
| parent | 0f1b1dd3cfef992814cabbf573b01e5096dbc8e1 (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.cpp | 7 |
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) { |
