/* SAM3X/A Variables */

#include <sam3xa.h>

/* Initial SP Value */
extern const void _estack;	/* see linker script */

/* Dummy Exception Handler */
void Dummy_Handler(void) {
	while(1);
}

/* Exception Handlers (Cortex-M3) */
void Dummy_Handler(void);
void Reset_Handler      (void) __attribute__ ((weak, alias("Dummy_Handler")));
void NMI_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void HardFault_Handler  (void) __attribute__ ((weak, alias("Dummy_Handler")));
void MemManage_Handler  (void) __attribute__ ((weak, alias("Dummy_Handler")));
void BusFault_Handler   (void) __attribute__ ((weak, alias("Dummy_Handler")));
void UsageFault_Handler (void) __attribute__ ((weak, alias("Dummy_Handler")));
void SVC_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void DebugMon_Handler   (void) __attribute__ ((weak, alias("Dummy_Handler")));
void PendSV_Handler     (void) __attribute__ ((weak, alias("Dummy_Handler")));
void SysTick_Handler    (void) __attribute__ ((weak, alias("Dummy_Handler")));

/* Exception Handlers (SAM3XA) */
void SUPC_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void RSTC_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void RTC_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void RTT_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void WDG_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void PMC_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void EEFC0_Handler      (void) __attribute__ ((weak, alias("Dummy_Handler")));
void EEFC1_Handler      (void) __attribute__ ((weak, alias("Dummy_Handler")));
void UART_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void SMC_SDRAMC_Handler (void) __attribute__ ((weak, alias("Dummy_Handler")));
void SDRAMC_Handler     (void) __attribute__ ((weak, alias("Dummy_Handler")));
void PIOA_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void PIOB_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void PIOC_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void PIOD_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void PIOE_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void PIOF_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void USART0_Handler     (void) __attribute__ ((weak, alias("Dummy_Handler")));
void USART1_Handler     (void) __attribute__ ((weak, alias("Dummy_Handler")));
void USART2_Handler     (void) __attribute__ ((weak, alias("Dummy_Handler")));
void USART3_Handler     (void) __attribute__ ((weak, alias("Dummy_Handler")));
void HSMCI_Handler      (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TWI0_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TWI1_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void SPI0_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void SPI1_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void SSC_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TC0_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TC1_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TC2_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TC3_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TC4_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TC5_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TC6_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TC7_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TC8_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void PWM_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void ADC_Handler        (void) __attribute__ ((weak, alias("Dummy_Handler")));
void DACC_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void DMAC_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void UOTGHS_Handler     (void) __attribute__ ((weak, alias("Dummy_Handler")));
void TRNG_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void EMAC_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void CAN0_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));
void CAN1_Handler       (void) __attribute__ ((weak, alias("Dummy_Handler")));

/* Exception Vector Table (see linker script) */
__attribute__((used, section(".vectors"))) void* vector_table[] = {
	/* Cortex-M3 */
	(void*)(&_estack),		/* initial SP */
	(void*)Reset_Handler,		/* Reset Vector */
	(void*)NMI_Handler,
	(void*)HardFault_Handler,
	(void*)MemManage_Handler,
	(void*)BusFault_Handler,
	(void*)UsageFault_Handler,
	(void*)(0UL),			/* Reserved */
	(void*)(0UL),			/* Reserved */
	(void*)(0UL),			/* Reserved */
	(void*)(0UL),			/* Reserved */
	(void*)SVC_Handler,
	(void*)DebugMon_Handler,
	(void*)(0UL),			/* Reserved */
	(void*)PendSV_Handler,
	(void*)SysTick_Handler,

	/* SAM3X/A */
	(void*)SUPC_Handler,		/* Supply Controller */
	(void*)RSTC_Handler,		/* Reset Controller */
	(void*)RTC_Handler,		/* Real Time Clock */
	(void*)RTT_Handler,		/* Real Time Timer */
	(void*)WDG_Handler,		/* Watchdog Timer */
	(void*)PMC_Handler,		/* Power Management Controller */
	(void*)EEFC0_Handler,		/* Enhanced Flash Controller 0 */
	(void*)EEFC1_Handler,		/* Enhanced Flash Controller 1 */
	(void*)UART_Handler,		/* Universal Asynchronous Receiver Transceiver */
	(void*)SMC_SDRAMC_Handler,	/* Static Memory Controller / Synchronous Dynamic RAM Controller */
	(void*)SDRAMC_Handler,		/* Synchronous Dynamic RAM Controller */
	(void*)PIOA_Handler,		/* Parallel I/O Controller A */
	(void*)PIOB_Handler,		/* Parallel I/O Controller B */
	(void*)PIOC_Handler,		/* Parallel I/O Controller C */
	(void*)PIOD_Handler,		/* Parallel I/O Controller D */
	(void*)PIOE_Handler,		/* Parallel I/O Controller E */
	(void*)PIOF_Handler,		/* Parallel I/O Controller F */
	(void*)USART0_Handler,		/* USART 0 */
	(void*)USART1_Handler,		/* USART 1 */
	(void*)USART2_Handler,		/* USART 2 */
	(void*)USART3_Handler,		/* USART 3 */
	(void*)HSMCI_Handler,		/* High Speed Multimedia Card Interface */
	(void*)TWI0_Handler,		/* Two-Wire Interface 0 */
	(void*)TWI1_Handler,		/* Two-Wire Interface 1 */
	(void*)SPI0_Handler,		/* Serial Peripheral Interface */
	(void*)SPI1_Handler,		/* Serial Peripheral Interface */
	(void*)SSC_Handler,		/* Synchronous Serial Controller */
	(void*)TC0_Handler,		/* Timer Counter 0 */
	(void*)TC1_Handler,		/* Timer Counter 1 */
	(void*)TC2_Handler,		/* Timer Counter 2 */
	(void*)TC3_Handler,		/* Timer Counter 3 */
	(void*)TC4_Handler,		/* Timer Counter 4 */
	(void*)TC5_Handler,		/* Timer Counter 5 */
	(void*)TC6_Handler,		/* Timer Counter 6 */
	(void*)TC7_Handler,		/* Timer Counter 7 */
	(void*)TC8_Handler,		/* Timer Counter 8 */
	(void*)PWM_Handler,		/* Pulse Width Modulation Controller */
	(void*)ADC_Handler,		/* ADC Controller */
	(void*)DACC_Handler,		/* DAC Controller */
	(void*)DMAC_Handler,		/* DMA Controller */
	(void*)UOTGHS_Handler,		/* USB OTG High Speed */
	(void*)TRNG_Handler,		/* True Random Number Generator */
	(void*)EMAC_Handler,		/* Ethernet MAC */
	(void*)CAN0_Handler,		/* CAN Controller 0 */
	(void*)CAN1_Handler,		/* CAN Controller 1 */
};

