aboutsummaryrefslogtreecommitdiffstats
path: root/os/ports/GCC/ARMCMx/STM32F0xx/vectors.c
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2012-11-30 11:56:26 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2012-11-30 11:56:26 +0000
commit659396485212461b4be35bdc2c34ae6e430739de (patch)
tree4e0ef15b5d776afd9fd9e37e917f3df2b62691df /os/ports/GCC/ARMCMx/STM32F0xx/vectors.c
parent202daf2a58a953344c5002629705ad28130056e5 (diff)
downloadChibiOS-659396485212461b4be35bdc2c34ae6e430739de.tar.gz
ChibiOS-659396485212461b4be35bdc2c34ae6e430739de.tar.bz2
ChibiOS-659396485212461b4be35bdc2c34ae6e430739de.zip
Fixed bugs 3591317 and 3591321.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4847 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/ports/GCC/ARMCMx/STM32F0xx/vectors.c')
-rw-r--r--os/ports/GCC/ARMCMx/STM32F0xx/vectors.c52
1 files changed, 41 insertions, 11 deletions
diff --git a/os/ports/GCC/ARMCMx/STM32F0xx/vectors.c b/os/ports/GCC/ARMCMx/STM32F0xx/vectors.c
index 48f7ceee4..172eca6bd 100644
--- a/os/ports/GCC/ARMCMx/STM32F0xx/vectors.c
+++ b/os/ports/GCC/ARMCMx/STM32F0xx/vectors.c
@@ -30,8 +30,36 @@
#include "ch.h"
+/**
+ * @brief Type of an IRQ vector.
+ */
+typedef void (*irq_vector_t)(void);
+
+/**
+ * @brief Type of a structure representing the whole vectors table.
+ */
+typedef struct {
+ uint32_t *init_stack;
+ irq_vector_t reset_vector;
+ irq_vector_t nmi_vector;
+ irq_vector_t hardfault_vector;
+ irq_vector_t memmanage_vector;
+ irq_vector_t busfault_vector;
+ irq_vector_t usagefault_vector;
+ irq_vector_t vector1c;
+ irq_vector_t vector20;
+ irq_vector_t vector24;
+ irq_vector_t vector28;
+ irq_vector_t svcall_vector;
+ irq_vector_t debugmonitor_vector;
+ irq_vector_t vector34;
+ irq_vector_t pendsv_vector;
+ irq_vector_t systick_vector;
+ irq_vector_t vectors[32];
+} vectors_t;
+
#if !defined(__DOXYGEN__)
-extern void __main_stack_end__(void);
+extern uint32_t __main_stack_end__;
extern void ResetHandler(void);
extern void NMIVector(void);
extern void HardFaultVector(void);
@@ -87,19 +115,21 @@ extern void VectorBC(void);
#if !defined(__DOXYGEN__)
__attribute__ ((section("vectors")))
#endif
-void (*_vectors[])(void) = {
- __main_stack_end__, ResetHandler, NMIVector, HardFaultVector,
+vectors_t _vectors = {
+ &__main_stack_end__,ResetHandler, NMIVector, HardFaultVector,
MemManageVector, BusFaultVector, UsageFaultVector, Vector1C,
Vector20, Vector24, Vector28, SVCallVector,
DebugMonitorVector, Vector34, PendSVVector, SysTickVector,
- Vector40, Vector44, Vector48, Vector4C,
- Vector50, Vector54, Vector58, Vector5C,
- Vector60, Vector64, Vector68, Vector6C,
- Vector70, Vector74, Vector78, Vector7C,
- Vector80, Vector84, Vector88, Vector8C,
- Vector90, Vector94, Vector98, Vector9C,
- VectorA0, VectorA4, VectorA8, VectorAC,
- VectorB0, VectorB4, VectorB8, VectorBC
+ {
+ Vector40, Vector44, Vector48, Vector4C,
+ Vector50, Vector54, Vector58, Vector5C,
+ Vector60, Vector64, Vector68, Vector6C,
+ Vector70, Vector74, Vector78, Vector7C,
+ Vector80, Vector84, Vector88, Vector8C,
+ Vector90, Vector94, Vector98, Vector9C,
+ VectorA0, VectorA4, VectorA8, VectorAC,
+ VectorB0, VectorB4, VectorB8, VectorBC
+ }
};
/**