From 659396485212461b4be35bdc2c34ae6e430739de Mon Sep 17 00:00:00 2001 From: gdisirio Date: Fri, 30 Nov 2012 11:56:26 +0000 Subject: Fixed bugs 3591317 and 3591321. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4847 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/ports/GCC/ARMCMx/STM32F0xx/vectors.c | 52 ++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 11 deletions(-) (limited to 'os/ports/GCC/ARMCMx/STM32F0xx/vectors.c') 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 + } }; /** -- cgit v1.2.3