aboutsummaryrefslogtreecommitdiff
path: root/src/rtos/rtos_chibios_stackings.c
diff options
context:
space:
mode:
authorMatthias Blaicher <matthias@blaicher.com>2012-10-05 18:56:04 +0200
committerPeter Stuge <peter@stuge.se>2012-10-16 06:32:03 +0000
commit14e12c3969fef1a4649de1db0b0fac47e5295708 (patch)
treeea5e0712be1f54ac54824d9f865af6171776772c /src/rtos/rtos_chibios_stackings.c
parentd8e4a7370f439a5feb3948d5ed33f0884b8109f3 (diff)
rtos: Add ChibiOS/RT support
This patch adds ChibiOS/RT support. This patch requires at least ChibiOS/RT development version starting from SVN revision 4734. Note, that the Thread structures depend not only on the target but also on the ChibiOS configuration at build time. To correct this ChibiOS includes a new "memory signature" which specifies the offsets. Special thanks go to Peter Stuge and Spencer Oliver for their continous input and feedback to this patch. Change-Id: I842bf7ba6c2309a4efe93d29ea6cd0784a8b22a3 Signed-off-by: Matthias Blaicher <matthias@blaicher.com> Reviewed-on: http://openocd.zylin.com/901 Tested-by: jenkins Reviewed-by: Peter Stuge <peter@stuge.se>
Diffstat (limited to 'src/rtos/rtos_chibios_stackings.c')
-rw-r--r--src/rtos/rtos_chibios_stackings.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/rtos/rtos_chibios_stackings.c b/src/rtos/rtos_chibios_stackings.c
new file mode 100644
index 00000000..2163f060
--- /dev/null
+++ b/src/rtos/rtos_chibios_stackings.c
@@ -0,0 +1,65 @@
+/***************************************************************************
+ * Copyright (C) 2012 by Matthias Blaicher *
+ * Matthias Blaicher - matthias@blaicher.com *
+ * *
+ * Copyright (C) 2011 by Broadcom Corporation *
+ * Evan Hunter - ehunter@broadcom.com *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "rtos.h"
+
+static const struct stack_register_offset rtos_chibios_arm_v7m_stack_offsets[] = {
+ { -1, 32 }, /* r0 */
+ { -1, 32 }, /* r1 */
+ { -1, 32 }, /* r2 */
+ { -1, 32 }, /* r3 */
+ { 0x00, 32 }, /* r4 */
+ { 0x04, 32 }, /* r5 */
+ { 0x08, 32 }, /* r6 */
+ { 0x0c, 32 }, /* r7 */
+ { 0x10, 32 }, /* r8 */
+ { 0x14, 32 }, /* r9 */
+ { 0x18, 32 }, /* r10 */
+ { 0x1c, 32 }, /* r11 */
+ { -1, 32 }, /* r12 */
+ { -2, 32 }, /* sp */
+ { -1, 32 }, /* lr */
+ { 0x20, 32 }, /* pc */
+ { -1, 96 }, /* FPA1 */
+ { -1, 96 }, /* FPA2 */
+ { -1, 96 }, /* FPA3 */
+ { -1, 96 }, /* FPA4 */
+ { -1, 96 }, /* FPA5 */
+ { -1, 96 }, /* FPA6 */
+ { -1, 96 }, /* FPA7 */
+ { -1, 96 }, /* FPA8 */
+ { -1, 32 }, /* FPS */
+ { -1, 32 }, /* xPSR */
+};
+
+const struct rtos_register_stacking rtos_chibios_arm_v7m_stacking = {
+ 0x24, /* stack_registers_size */
+ -1, /* stack_growth_direction */
+ 26, /* num_output_registers */
+ 0, /* stack_alignment */
+ rtos_chibios_arm_v7m_stack_offsets /* register_offsets */
+};