diff options
-rw-r--r-- | os/ports/GCC/PPC/ivor.s | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/os/ports/GCC/PPC/ivor.s b/os/ports/GCC/PPC/ivor.s index 46dc66bf5..8235af0e5 100644 --- a/os/ports/GCC/PPC/ivor.s +++ b/os/ports/GCC/PPC/ivor.s @@ -86,6 +86,11 @@ _IVOR10: lis %r3, 0x0800 /* DIS bit mask. */
mtspr 336, %r3 /* TSR register. */
+#if PPC_USE_IRQ_PREEMPTION
+ /* Allows preemption while executing the software handler.*/
+ wrteei 1
+#endif
+
#if CH_DBG_SYSTEM_STATE_CHECK
bl dbg_check_enter_isr
bl dbg_check_lock_from_isr
@@ -96,6 +101,11 @@ _IVOR10: bl dbg_check_leave_isr
#endif
+#if PPC_USE_IRQ_PREEMPTION
+ /* Prevents preemption again.*/
+ wrteei 0
+#endif
+
/* System tick handler invocation.*/
#if CH_DBG_SYSTEM_STATE_CHECK
bl dbg_check_lock
|