diff --git a/arch/arm/core/cortex_m/scb.c b/arch/arm/core/cortex_m/scb.c index 168413b37f6..f5bca9b33e7 100644 --- a/arch/arm/core/cortex_m/scb.c +++ b/arch/arm/core/cortex_m/scb.c @@ -36,7 +36,7 @@ static void software_reboot(void) */ __asm__ volatile("cpsie i" :::); - if (_ScbIsInThreadMode()) { + if ((SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) == 0) { _do_software_reboot(); } else { __asm__ volatile( diff --git a/arch/arm/core/thread_abort.c b/arch/arm/core/thread_abort.c index a24e2bbcf03..166aeef8448 100644 --- a/arch/arm/core/thread_abort.c +++ b/arch/arm/core/thread_abort.c @@ -35,7 +35,7 @@ void k_thread_abort(k_tid_t thread) _thread_monitor_exit(thread); if (_current == thread) { - if (_ScbIsInThreadMode()) { + if ((SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) == 0) { _Swap(key); CODE_UNREACHABLE; } else { diff --git a/include/arch/arm/cortex_m/scb.h b/include/arch/arm/cortex_m/scb.h index df9e3a88d11..d5358aa3c1c 100644 --- a/include/arch/arm/cortex_m/scb.h +++ b/include/arch/arm/cortex_m/scb.h @@ -51,21 +51,6 @@ extern "C" { #include #include -/** - * - * @brief Find out if running in thread mode - * - * This routine determines if the current mode is thread mode. - * - * @return 1 if in thread mode, 0 otherwise - */ - -static inline int _ScbIsInThreadMode(void) -{ - /* 0 == thread mode */ - return !__scs.scb.icsr.bit.vectactive; -} - /** * * @brief Obtain the currently executing vector