aboutsummaryrefslogtreecommitdiffstats
path: root/os/common/ports/ARM/compilers/GCC/vectors.s
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2014-05-26 14:43:02 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2014-05-26 14:43:02 +0000
commitffdbef26d6bc06b135c43d683403c9d56e53da07 (patch)
tree93efb1164766c640386ae57e88736cac3ba39d21 /os/common/ports/ARM/compilers/GCC/vectors.s
parente1fe47b7f9200eb2d1796fb8348d014f826aca4b (diff)
downloadChibiOS-ffdbef26d6bc06b135c43d683403c9d56e53da07.tar.gz
ChibiOS-ffdbef26d6bc06b135c43d683403c9d56e53da07.tar.bz2
ChibiOS-ffdbef26d6bc06b135c43d683403c9d56e53da07.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@6964 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/common/ports/ARM/compilers/GCC/vectors.s')
-rw-r--r--os/common/ports/ARM/compilers/GCC/vectors.s101
1 files changed, 101 insertions, 0 deletions
diff --git a/os/common/ports/ARM/compilers/GCC/vectors.s b/os/common/ports/ARM/compilers/GCC/vectors.s
new file mode 100644
index 000000000..4ed076eb6
--- /dev/null
+++ b/os/common/ports/ARM/compilers/GCC/vectors.s
@@ -0,0 +1,101 @@
+/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
+ 2011,2012,2013 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT 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 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT 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, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file ARM/compilers/GCC/vectors.s
+ * @brief Interrupt vectors for ARM devices.
+ *
+ * @defgroup ARM_VECTORS ARM Exception Vectors
+ * @{
+ */
+
+#if defined(__DOXYGEN__)
+/**
+ * @brief Unhandled exceptions handler.
+ * @details Any undefined exception vector points to this function by default.
+ * This function simply stops the system into an infinite loop.
+ * @note The default implementation is a weak symbol, the application
+ * can override the default implementation.
+ *
+ * @notapi
+ */
+void _unhandled_exception(void) {}
+#endif
+
+#if !defined(__DOXYGEN__)
+
+ .section vectors
+ .code 32
+ .balign 4
+
+/*
+ * System entry points.
+ */
+_start:
+ ldr pc, _reset
+ ldr pc, _undefined
+ ldr pc, _swi
+ ldr pc, _prefetch
+ ldr pc, _abort
+ nop
+ ldr pc, _irq
+ ldr pc, _fiq
+
+_reset:
+ .word ResetHandler
+_undefined:
+ .word UndHandler
+_swi:
+ .word SwiHandler
+_prefetch:
+ .word PrefetchHandler
+_abort:
+ .word AbortHandler
+_fiq:
+ .word FiqHandler
+_irq:
+ .word IrqHandler
+
+/*
+ * Default exceptions handlers. The handlers are declared weak in order to be
+ * replaced by the real handling code. Everything is defaulted to an infinite
+ * loop.
+ */
+ .weak ResetHandler
+ResetHandler:
+ .weak UndHandler
+UndHandler:
+ .weak SwiHandler
+SwiHandler:
+ .weak PrefetchHandler
+PrefetchHandler:
+ .weak AbortHandler
+AbortHandler:
+ .weak FiqHandler
+FiqHandler:
+ .weak IrqHandler
+IrqHandler:
+ .weak _unhandled_exception
+_unhandled_exception:
+ b _unhandled_exception
+
+#endif
+
+/** @} */