diff options
author | Giovanni Di Sirio <gdisirio@gmail.com> | 2016-02-16 13:01:03 +0000 |
---|---|---|
committer | Giovanni Di Sirio <gdisirio@gmail.com> | 2016-02-16 13:01:03 +0000 |
commit | a739e4e7abaf487e57647788fc93ca5e11727bbb (patch) | |
tree | c00427124b68e2a431e6b4a729d6e80bb55c0e3d /os/common | |
parent | 50f9e505e509956d401341762da15c1d8267522e (diff) | |
download | ChibiOS-a739e4e7abaf487e57647788fc93ca5e11727bbb.tar.gz ChibiOS-a739e4e7abaf487e57647788fc93ca5e11727bbb.tar.bz2 ChibiOS-a739e4e7abaf487e57647788fc93ca5e11727bbb.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8904 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/common')
5 files changed, 78 insertions, 4 deletions
diff --git a/os/common/ports/ARMCMx/compilers/GCC/chcoreasm_v6m.s b/os/common/ports/ARMCMx/compilers/GCC/chcoreasm_v6m.s index 935c7630f..e5fe3aa0f 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/chcoreasm_v6m.s +++ b/os/common/ports/ARMCMx/compilers/GCC/chcoreasm_v6m.s @@ -105,8 +105,14 @@ _port_thread_start: cpsie i
mov r0, r5
blx r4
+#if defined(_CHIBIOS_RT_CONF_)
movs r0, #0 /* MSG_OK */
bl chThdExit
+#endif
+#if defined(_CHIBIOS_NIL_CONF_)
+ mov r3, #0
+ bl chSysHalt
+#endif
/*--------------------------------------------------------------------------*
* Post-IRQ switch code.
diff --git a/os/common/ports/ARMCMx/compilers/IAR/chcoreasm_v6m.s b/os/common/ports/ARMCMx/compilers/IAR/chcoreasm_v6m.s index ad2820dfa..4726eee74 100644 --- a/os/common/ports/ARMCMx/compilers/IAR/chcoreasm_v6m.s +++ b/os/common/ports/ARMCMx/compilers/IAR/chcoreasm_v6m.s @@ -39,12 +39,22 @@ #if !defined(__DOXYGEN__)
+/*
+ * RTOS-specific context offset.
+ */
+#if defined(_CHIBIOS_RT_CONF_)
+#define CONTEXT_OFFSET 12
+#elif defined(_CHIBIOS_NIL_CONF_)
+#define CONTEXT_OFFSET 0
+#else
+#error "invalid chconf.h"
+#endif
+
MODULE ?chcoreasm_v6m
AAPCS INTERWORK, VFP_COMPATIBLE
PRESERVE8
-CONTEXT_OFFSET SET 12
SCB_ICSR SET 0xE000ED04
SECTION .text:CODE:NOROOT(2)
@@ -99,7 +109,14 @@ _port_thread_start: cpsie i
mov r0, r5
blx r4
+#if defined(_CHIBIOS_RT_CONF_)
+ movs r0, #0 /* MSG_OK */
bl chThdExit
+#endif
+#if defined(_CHIBIOS_NIL_CONF_)
+ mov r3, #0
+ bl chSysHalt
+#endif
/*
* Post-IRQ switch code.
diff --git a/os/common/ports/ARMCMx/compilers/IAR/chcoreasm_v7m.s b/os/common/ports/ARMCMx/compilers/IAR/chcoreasm_v7m.s index 2f58a73aa..598373c43 100644 --- a/os/common/ports/ARMCMx/compilers/IAR/chcoreasm_v7m.s +++ b/os/common/ports/ARMCMx/compilers/IAR/chcoreasm_v7m.s @@ -39,12 +39,22 @@ #if !defined(__DOXYGEN__)
+/*
+ * RTOS-specific context offset.
+ */
+#if defined(_CHIBIOS_RT_CONF_)
+#define CONTEXT_OFFSET 12
+#elif defined(_CHIBIOS_NIL_CONF_)
+#define CONTEXT_OFFSET 0
+#else
+#error "invalid chconf.h"
+#endif
+
MODULE ?chcoreasm_v7m
AAPCS INTERWORK, VFP_COMPATIBLE
PRESERVE8
-CONTEXT_OFFSET SET 12
SCB_ICSR SET 0xE000ED04
ICSR_PENDSVSET SET 0x10000000
@@ -109,7 +119,14 @@ _port_thread_start: #endif
mov r0, r5
blx r4
+#if defined(_CHIBIOS_RT_CONF_)
+ movs r0, #0 /* MSG_OK */
bl chThdExit
+#endif
+#if defined(_CHIBIOS_NIL_CONF_)
+ mov r3, #0
+ bl chSysHalt
+#endif
/*
* Post-IRQ switch code.
diff --git a/os/common/ports/ARMCMx/compilers/RVCT/chcoreasm_v6m.s b/os/common/ports/ARMCMx/compilers/RVCT/chcoreasm_v6m.s index e61662f38..b3ce9f906 100644 --- a/os/common/ports/ARMCMx/compilers/RVCT/chcoreasm_v6m.s +++ b/os/common/ports/ARMCMx/compilers/RVCT/chcoreasm_v6m.s @@ -39,7 +39,17 @@ #if !defined(__DOXYGEN__)
-CONTEXT_OFFSET EQU 12
+/*
+ * RTOS-specific context offset.
+ */
+#if defined(_CHIBIOS_RT_CONF_)
+#define CONTEXT_OFFSET 12
+#elif defined(_CHIBIOS_NIL_CONF_)
+#define CONTEXT_OFFSET 0
+#else
+#error "invalid chconf.h"
+#endif
+
SCB_ICSR EQU 0xE000ED04
PRESERVE8
@@ -95,7 +105,14 @@ _port_thread_start PROC cpsie i
mov r0, r5
blx r4
+#if defined(_CHIBIOS_RT_CONF_)
+ movs r0, #0 /* MSG_OK */
bl chThdExit
+#endif
+#if defined(_CHIBIOS_NIL_CONF_)
+ mov r3, #0
+ bl chSysHalt
+#endif
ENDP
/*
diff --git a/os/common/ports/ARMCMx/compilers/RVCT/chcoreasm_v7m.s b/os/common/ports/ARMCMx/compilers/RVCT/chcoreasm_v7m.s index 69bfaa59c..1cbdc6bca 100644 --- a/os/common/ports/ARMCMx/compilers/RVCT/chcoreasm_v7m.s +++ b/os/common/ports/ARMCMx/compilers/RVCT/chcoreasm_v7m.s @@ -39,7 +39,17 @@ #if !defined(__DOXYGEN__)
-CONTEXT_OFFSET EQU 12
+/*
+ * RTOS-specific context offset.
+ */
+#if defined(_CHIBIOS_RT_CONF_)
+#define CONTEXT_OFFSET 12
+#elif defined(_CHIBIOS_NIL_CONF_)
+#define CONTEXT_OFFSET 0
+#else
+#error "invalid chconf.h"
+#endif
+
SCB_ICSR EQU 0xE000ED04
ICSR_PENDSVSET EQU 0x10000000
@@ -105,7 +115,14 @@ _port_thread_start PROC #endif
mov r0, r5
blx r4
+#if defined(_CHIBIOS_RT_CONF_)
+ movs r0, #0 /* MSG_OK */
bl chThdExit
+#endif
+#if defined(_CHIBIOS_NIL_CONF_)
+ mov r3, #0
+ bl chSysHalt
+#endif
ENDP
/*
|