aboutsummaryrefslogtreecommitdiffstats
path: root/os/common
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2016-02-16 13:01:03 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2016-02-16 13:01:03 +0000
commita739e4e7abaf487e57647788fc93ca5e11727bbb (patch)
treec00427124b68e2a431e6b4a729d6e80bb55c0e3d /os/common
parent50f9e505e509956d401341762da15c1d8267522e (diff)
downloadChibiOS-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')
-rw-r--r--os/common/ports/ARMCMx/compilers/GCC/chcoreasm_v6m.s6
-rw-r--r--os/common/ports/ARMCMx/compilers/IAR/chcoreasm_v6m.s19
-rw-r--r--os/common/ports/ARMCMx/compilers/IAR/chcoreasm_v7m.s19
-rw-r--r--os/common/ports/ARMCMx/compilers/RVCT/chcoreasm_v6m.s19
-rw-r--r--os/common/ports/ARMCMx/compilers/RVCT/chcoreasm_v7m.s19
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
/*