diff options
author | Kumar Gala <kumar.gala@linaro.org> | 2017-01-25 08:29:03 -0600 |
---|---|---|
committer | Kumar Gala <kumar.gala@linaro.org> | 2017-01-30 11:02:39 -0600 |
commit | 772cbd195590af09659048a3878318e9bbb7d6e3 (patch) | |
tree | e8f317a2f922656ce412a9a20dfeece2b3d9c4db | |
parent | 5068e9657f170340d66abb759907b32f6cad1093 (diff) |
arm: cmsis: Convert _ScbIsInThreadMode to use direct CMSIS register access
Jira: ZEP-1568
Change-Id: Idc14817ce85042ec86bdf67b8939f783224329ff
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
-rw-r--r-- | arch/arm/core/cortex_m/scb.c | 2 | ||||
-rw-r--r-- | arch/arm/core/thread_abort.c | 2 | ||||
-rw-r--r-- | include/arch/arm/cortex_m/scb.h | 15 |
3 files changed, 2 insertions, 17 deletions
diff --git a/arch/arm/core/cortex_m/scb.c b/arch/arm/core/cortex_m/scb.c index 168413b37..f5bca9b33 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 a24e2bbcf..166aeef84 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 df9e3a88d..d5358aa3c 100644 --- a/include/arch/arm/cortex_m/scb.h +++ b/include/arch/arm/cortex_m/scb.h @@ -53,21 +53,6 @@ extern "C" { /** * - * @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 * * If currently handling an exception/interrupt, return the executing vector |