aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/ports/GCC/PPC/ivor.s10
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