307 lines
15 KiB
C
307 lines
15 KiB
C
/*
|
|
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 GCC/ARMCMx/SAM4L/vectors.c
|
|
* @brief Interrupt vectors for the ATSAM4L family.
|
|
*
|
|
* @defgroup ARMCMx_SAM4L_VECTORS ATSAM4L Interrupt Vectors
|
|
* @ingroup ARMCMx_SPECIFIC
|
|
* @details Interrupt vectors for the ATSAM4L family.
|
|
* @{
|
|
*/
|
|
|
|
#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[80];
|
|
} vectors_t;
|
|
|
|
#if !defined(__DOXYGEN__)
|
|
extern uint32_t __main_stack_end__;
|
|
extern void ResetHandler(void);
|
|
extern void NMIVector(void);
|
|
extern void HardFaultVector(void);
|
|
extern void MemManageVector(void);
|
|
extern void BusFaultVector(void);
|
|
extern void UsageFaultVector(void);
|
|
extern void Vector1C(void);
|
|
extern void Vector20(void);
|
|
extern void Vector24(void);
|
|
extern void Vector28(void);
|
|
extern void SVCallVector(void);
|
|
extern void DebugMonitorVector(void);
|
|
extern void Vector34(void);
|
|
extern void PendSVVector(void);
|
|
extern void SysTickVector(void);
|
|
extern void HFLASHC_Handler(void);
|
|
extern void PDCA_0_Handler(void);
|
|
extern void PDCA_1_Handler(void);
|
|
extern void PDCA_2_Handler(void);
|
|
extern void PDCA_3_Handler(void);
|
|
extern void PDCA_4_Handler(void);
|
|
extern void PDCA_5_Handler(void);
|
|
extern void PDCA_6_Handler(void);
|
|
extern void PDCA_7_Handler(void);
|
|
extern void PDCA_8_Handler(void);
|
|
extern void PDCA_9_Handler(void);
|
|
extern void PDCA_10_Handler(void);
|
|
extern void PDCA_11_Handler(void);
|
|
extern void PDCA_12_Handler(void);
|
|
extern void PDCA_13_Handler(void);
|
|
extern void PDCA_14_Handler(void);
|
|
extern void PDCA_15_Handler(void);
|
|
extern void CRCCU_Handler(void);
|
|
extern void USBC_Handler(void);
|
|
extern void PEVC_TR_Handler(void);
|
|
extern void PEVC_OV_Handler(void);
|
|
extern void AESA_Handler(void);
|
|
extern void PM_Handler(void);
|
|
extern void SCIF_Handler(void);
|
|
extern void FREQM_Handler(void);
|
|
extern void GPIO_0_Handler(void);
|
|
extern void GPIO_1_Handler(void);
|
|
extern void GPIO_2_Handler(void);
|
|
extern void GPIO_3_Handler(void);
|
|
extern void GPIO_4_Handler(void);
|
|
extern void GPIO_5_Handler(void);
|
|
extern void GPIO_6_Handler(void);
|
|
extern void GPIO_7_Handler(void);
|
|
extern void GPIO_8_Handler(void);
|
|
extern void GPIO_9_Handler(void);
|
|
extern void GPIO_10_Handler(void);
|
|
extern void GPIO_11_Handler(void);
|
|
extern void BPM_Handler(void);
|
|
extern void BSCIF_Handler(void);
|
|
extern void AST_ALARM_Handler(void);
|
|
extern void AST_PER_Handler(void);
|
|
extern void AST_OVF_Handler(void);
|
|
extern void AST_READY_Handler(void);
|
|
extern void AST_CLKREADY_Handler(void);
|
|
extern void WDT_Handler(void);
|
|
extern void EIC_1_Handler(void);
|
|
extern void EIC_2_Handler(void);
|
|
extern void EIC_3_Handler(void);
|
|
extern void EIC_4_Handler(void);
|
|
extern void EIC_5_Handler(void);
|
|
extern void EIC_6_Handler(void);
|
|
extern void EIC_7_Handler(void);
|
|
extern void EIC_8_Handler(void);
|
|
extern void IISC_Handler(void);
|
|
extern void SPI_Handler(void);
|
|
extern void TC00_Handler(void);
|
|
extern void TC01_Handler(void);
|
|
extern void TC02_Handler(void);
|
|
extern void TC010_Handler(void);
|
|
extern void TC011_Handler(void);
|
|
extern void TC012_Handler(void);
|
|
extern void TWIM0_Handler(void);
|
|
extern void TWIS0_Handler(void);
|
|
extern void TWIM1_Handler(void);
|
|
extern void TWIS1_Handler(void);
|
|
extern void USART0_Handler(void);
|
|
extern void USART1_Handler(void);
|
|
extern void USART2_Handler(void);
|
|
extern void USART3_Handler(void);
|
|
extern void ADCIFE_Handler(void);
|
|
extern void DACC_Handler(void);
|
|
extern void ACIFC_Handler(void);
|
|
extern void ABDACB_Handler(void);
|
|
extern void TRNG_Handler(void);
|
|
extern void PARC_Handler(void);
|
|
extern void CATB_Handler(void);
|
|
extern void Dummy_Handler(void);
|
|
extern void TWIM2_Handler(void);
|
|
extern void TWIM3_Handler(void);
|
|
extern void LCDCA_Handler(void);
|
|
#endif
|
|
|
|
/**
|
|
* @brief STM32 vectors table.
|
|
*/
|
|
#if !defined(__DOXYGEN__)
|
|
__attribute__ ((section("vectors")))
|
|
#endif
|
|
vectors_t _vectors = {
|
|
&__main_stack_end__,ResetHandler, NMIVector, HardFaultVector,
|
|
MemManageVector, BusFaultVector, UsageFaultVector, Vector1C,
|
|
Vector20, Vector24, Vector28, SVCallVector,
|
|
DebugMonitorVector, Vector34, PendSVVector, SysTickVector,
|
|
{
|
|
HFLASHC_Handler, PDCA_0_Handler, PDCA_1_Handler, PDCA_2_Handler,
|
|
PDCA_3_Handler, PDCA_4_Handler, PDCA_5_Handler, PDCA_6_Handler,
|
|
PDCA_7_Handler, PDCA_8_Handler, PDCA_9_Handler, PDCA_10_Handler,
|
|
PDCA_11_Handler, PDCA_12_Handler, PDCA_13_Handler, PDCA_14_Handler,
|
|
PDCA_15_Handler, CRCCU_Handler, USBC_Handler, PEVC_TR_Handler,
|
|
PEVC_OV_Handler, AESA_Handler, PM_Handler, SCIF_Handler,
|
|
FREQM_Handler, GPIO_0_Handler, GPIO_1_Handler, GPIO_2_Handler,
|
|
GPIO_3_Handler, GPIO_4_Handler, GPIO_5_Handler, GPIO_6_Handler,
|
|
GPIO_7_Handler, GPIO_8_Handler, GPIO_9_Handler, GPIO_10_Handler,
|
|
GPIO_11_Handler, BPM_Handler, BSCIF_Handler, AST_ALARM_Handler,
|
|
AST_PER_Handler, AST_OVF_Handler, AST_READY_Handler, AST_CLKREADY_Handler,
|
|
WDT_Handler, EIC_1_Handler, EIC_2_Handler, EIC_3_Handler,
|
|
EIC_4_Handler, EIC_5_Handler, EIC_6_Handler, EIC_7_Handler,
|
|
EIC_8_Handler, IISC_Handler, SPI_Handler, TC00_Handler,
|
|
TC01_Handler, TC02_Handler, TC010_Handler, TC011_Handler,
|
|
TC012_Handler, TWIM0_Handler, TWIS0_Handler, TWIM1_Handler,
|
|
TWIS1_Handler, USART0_Handler, USART1_Handler, USART2_Handler,
|
|
USART3_Handler, ADCIFE_Handler, DACC_Handler, ACIFC_Handler,
|
|
ABDACB_Handler, TRNG_Handler, PARC_Handler, CATB_Handler,
|
|
Dummy_Handler, TWIM2_Handler, TWIM3_Handler, LCDCA_Handler
|
|
}
|
|
};
|
|
|
|
/**
|
|
* @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.
|
|
*
|
|
* @notapi
|
|
*/
|
|
#if !defined(__DOXYGEN__)
|
|
__attribute__ ((naked))
|
|
#endif
|
|
void _unhandled_exception(void) {
|
|
|
|
while (TRUE)
|
|
;
|
|
}
|
|
|
|
void NMIVector(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void HardFaultVector(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void MemManageVector(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void BusFaultVector(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void UsageFaultVector(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void Vector1C(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void Vector20(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void Vector24(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void Vector28(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void SVCallVector(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void DebugMonitorVector(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void Vector34(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PendSVVector(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void SysTickVector(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void HFLASHC_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_0_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_1_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_2_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_3_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_4_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_5_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_6_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_7_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_8_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_9_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_10_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_11_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_12_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_13_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_14_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PDCA_15_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void CRCCU_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void USBC_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PEVC_TR_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PEVC_OV_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void AESA_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PM_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void SCIF_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void FREQM_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_0_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_1_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_2_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_3_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_4_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_5_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_6_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_7_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_8_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_9_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_10_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void GPIO_11_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void BPM_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void BSCIF_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void AST_ALARM_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void AST_PER_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void AST_OVF_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void AST_READY_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void AST_CLKREADY_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void WDT_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void EIC_1_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void EIC_2_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void EIC_3_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void EIC_4_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void EIC_5_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void EIC_6_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void EIC_7_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void EIC_8_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void IISC_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void SPI_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TC00_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TC01_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TC02_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TC010_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TC011_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TC012_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TWIM0_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TWIS0_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TWIM1_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TWIS1_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void USART0_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void USART1_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void USART2_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void USART3_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void ADCIFE_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void DACC_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void ACIFC_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void ABDACB_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TRNG_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void PARC_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void CATB_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void Dummy_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TWIM2_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void TWIM3_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
void LCDCA_Handler(void) __attribute__((weak, alias("_unhandled_exception")));
|
|
|
|
/** @} */
|