diff --git a/cpu/cortexm_common/include/cpu.h b/cpu/cortexm_common/include/cpu.h
index 04218a76ec8838c66b802785338838715944f32e..ef34370cfad877132958d9248b86170e9313e1ad 100644
--- a/cpu/cortexm_common/include/cpu.h
+++ b/cpu/cortexm_common/include/cpu.h
@@ -32,8 +32,10 @@
 
 #include <stdio.h>
 
-#include "cpu_conf.h"
 #include "irq.h"
+#include "sched.h"
+#include "thread.h"
+#include "cpu_conf.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -88,6 +90,18 @@ static inline void cpu_sleep_until_event(void)
     __WFE();
 }
 
+/**
+ * @brief   Trigger a conditional context scheduler run / context switch
+ *
+ * This function is supposed to be called in the end of each ISR.
+ */
+static inline void cortexm_isr_end(void)
+{
+    if (sched_context_switch_request) {
+        thread_yield();
+    }
+}
+
 #ifdef __cplusplus
 }
 #endif