summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKumar Gala <kumar.gala@linaro.org>2017-01-25 08:29:03 -0600
committerKumar Gala <kumar.gala@linaro.org>2017-01-30 11:02:39 -0600
commit772cbd195590af09659048a3878318e9bbb7d6e3 (patch)
treee8f317a2f922656ce412a9a20dfeece2b3d9c4db
parent5068e9657f170340d66abb759907b32f6cad1093 (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.c2
-rw-r--r--arch/arm/core/thread_abort.c2
-rw-r--r--include/arch/arm/cortex_m/scb.h15
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