cpu/k60: optimization of startup code
parent
983e8abd74
commit
8db0a57a81
@ -1,490 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2015 Eistec AB
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser General
|
||||
* Public License v2.1. See the file LICENSE in the top level directory for more
|
||||
* details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup cpu_k60
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
*
|
||||
* @brief Interrupt vector for K60 MCU.
|
||||
*
|
||||
* @author Joakim Gebart <joakim.gebart@eistec.se>
|
||||
*
|
||||
* @note It is not necessary to modify this file to define custom interrupt
|
||||
* service routines. All symbols are defined weak, it is only necessary to
|
||||
* define a function with the same name in another file to override the default
|
||||
* interrupt handlers.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @name Interrupt vector definition
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "fault_handlers.h"
|
||||
#include "wdog.h"
|
||||
|
||||
extern void *_estack[];
|
||||
extern void *_sstack[];
|
||||
|
||||
typedef void (*ISR_func)(void);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Unconditional jump to isr_unhandled()
|
||||
*
|
||||
* This function is only necessary since we can not declare weak aliases to
|
||||
* functions outside the translation unit (.c-file). The default isr_unhandled()
|
||||
* is defined in kinetis_common/fault_handlers.c.
|
||||
*/
|
||||
void isr_default_handler(void) __attribute__((naked));
|
||||
|
||||
void isr_default_handler(void)
|
||||
{
|
||||
__ASM volatile ("b isr_unhandled\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Early reset handler used to instrument the stack before it becomes in use.
|
||||
*
|
||||
* This function will fill the interrupt context-stack with canary values so
|
||||
* that it can be checked to measure stack usage, similar to CREATE_STACKTEST in
|
||||
* @ref thread_create
|
||||
*/
|
||||
void pre_reset_handler(void);
|
||||
|
||||
/** @brief Interrupt stack canary value
|
||||
*
|
||||
* @note 0xe7fe is the ARM Thumb machine code equivalent of asm("bl #-2\n") or
|
||||
* 'while (1);', i.e. an infinite loop.
|
||||
*/
|
||||
#define STACK_CANARY_WORD 0xE7FEE7FEu
|
||||
|
||||
void pre_reset_handler(void)
|
||||
{
|
||||
/*
|
||||
* Important: Keep this function as simple as possible, we must not use any
|
||||
* stack space or we will crash, since we will overwrite all of the stack.
|
||||
*/
|
||||
/* Disable watchdog first, it is necessary to do within 256 cycles.
|
||||
* After this we will completely overwrite the stack so all necessary
|
||||
* variables must be stored in registers or as immediate values in the
|
||||
* machine code. */
|
||||
wdog_disable();
|
||||
/*
|
||||
* The register keyword suggests to the compiler to place the variable in a
|
||||
* register instead of on the stack. Using the register keyword is not a
|
||||
* guarantee that the variable will be placed in a register. However, this
|
||||
* function has been verified manually by disassembling the GCC output to
|
||||
* ensure no stack is being used until after the write loop is finished.
|
||||
*/
|
||||
register uint32_t *p;
|
||||
|
||||
/* Fill stack space with canary values */
|
||||
for (p = (uint32_t *)_sstack; p < (uint32_t *)_estack; ++p) {
|
||||
*p = STACK_CANARY_WORD;
|
||||
}
|
||||
|
||||
/* Now launch the real reset handler. */
|
||||
__ASM volatile("b reset_handler\n");
|
||||
|
||||
/* reset_handler should never return */
|
||||
while (1);
|
||||
}
|
||||
|
||||
#define ISR_VECTOR_SECTION __attribute__ ((used,section(".vector_table")))
|
||||
|
||||
#define UNHANDLED_ALIAS __attribute__((weak, alias("isr_default_handler")));
|
||||
|
||||
/* ARM Cortex defined interrupt vectors */
|
||||
/**
|
||||
* @brief Default reset handler.
|
||||
*/
|
||||
void reset_handler(void) __attribute__((naked));
|
||||
void isr_nmi(void) UNHANDLED_ALIAS;
|
||||
void isr_hard_fault(void) UNHANDLED_ALIAS;
|
||||
void isr_mem_manage(void) UNHANDLED_ALIAS;
|
||||
void isr_bus_fault(void) UNHANDLED_ALIAS;
|
||||
void isr_usage_fault(void) UNHANDLED_ALIAS;
|
||||
void isr_reserved(void) UNHANDLED_ALIAS;
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
void isr_svc(void) UNHANDLED_ALIAS;
|
||||
void isr_debug_mon(void) UNHANDLED_ALIAS;
|
||||
/* void _isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
void isr_pendsv(void) UNHANDLED_ALIAS;
|
||||
void isr_systick(void) UNHANDLED_ALIAS;
|
||||
|
||||
/* device-specific (freescale) defined interrupt vectors */
|
||||
void isr_dma0_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma1_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma2_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma3_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma4_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma5_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma6_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma7_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma8_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma9_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma10_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma11_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma12_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma13_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma14_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma15_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_dma_error(void) UNHANDLED_ALIAS;
|
||||
void isr_mcm(void) UNHANDLED_ALIAS;
|
||||
void isr_flash_command_complete(void) UNHANDLED_ALIAS;
|
||||
void isr_flash_read_collision(void) UNHANDLED_ALIAS;
|
||||
void isr_low_voltage(void) UNHANDLED_ALIAS;
|
||||
void isr_llwu(void) UNHANDLED_ALIAS;
|
||||
void isr_watchdog(void) UNHANDLED_ALIAS;
|
||||
void isr_random_number_generator(void) UNHANDLED_ALIAS;
|
||||
void isr_i2c0(void) UNHANDLED_ALIAS;
|
||||
void isr_i2c1(void) UNHANDLED_ALIAS;
|
||||
void isr_spi0(void) UNHANDLED_ALIAS;
|
||||
void isr_spi1(void) UNHANDLED_ALIAS;
|
||||
void isr_spi2(void) UNHANDLED_ALIAS;
|
||||
void isr_can0_ored_msg_buffer(void) UNHANDLED_ALIAS;
|
||||
void isr_can0_bus_off(void) UNHANDLED_ALIAS;
|
||||
void isr_can0_error(void) UNHANDLED_ALIAS;
|
||||
void isr_can0_tx_warn(void) UNHANDLED_ALIAS;
|
||||
void isr_can0_rx_warn(void) UNHANDLED_ALIAS;
|
||||
void isr_can0_wake_up(void) UNHANDLED_ALIAS;
|
||||
void isr_i2s0_tx(void) UNHANDLED_ALIAS;
|
||||
void isr_i2s0_rx(void) UNHANDLED_ALIAS;
|
||||
void isr_can1_ored_msg_buffer(void) UNHANDLED_ALIAS;
|
||||
void isr_can1_bus_off(void) UNHANDLED_ALIAS;
|
||||
void isr_can1_error(void) UNHANDLED_ALIAS;
|
||||
void isr_can1_tx_warn(void) UNHANDLED_ALIAS;
|
||||
void isr_can1_rx_warn(void) UNHANDLED_ALIAS;
|
||||
void isr_can1_wake_up(void) UNHANDLED_ALIAS;
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
void isr_uart0_lon(void) UNHANDLED_ALIAS;
|
||||
void isr_uart0_status(void) UNHANDLED_ALIAS;
|
||||
void isr_uart0_error(void) UNHANDLED_ALIAS;
|
||||
void isr_uart1_status(void) UNHANDLED_ALIAS;
|
||||
void isr_uart1_error(void) UNHANDLED_ALIAS;
|
||||
void isr_uart2_status(void) UNHANDLED_ALIAS;
|
||||
void isr_uart2_error(void) UNHANDLED_ALIAS;
|
||||
void isr_uart3_status(void) UNHANDLED_ALIAS;
|
||||
void isr_uart3_error(void) UNHANDLED_ALIAS;
|
||||
void isr_uart4_status(void) UNHANDLED_ALIAS;
|
||||
void isr_uart4_error(void) UNHANDLED_ALIAS;
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
void isr_adc0(void) UNHANDLED_ALIAS;
|
||||
void isr_adc1(void) UNHANDLED_ALIAS;
|
||||
void isr_cmp0(void) UNHANDLED_ALIAS;
|
||||
void isr_cmp1(void) UNHANDLED_ALIAS;
|
||||
void isr_cmp2(void) UNHANDLED_ALIAS;
|
||||
void isr_ftm0(void) UNHANDLED_ALIAS;
|
||||
void isr_ftm1(void) UNHANDLED_ALIAS;
|
||||
void isr_ftm2(void) UNHANDLED_ALIAS;
|
||||
void isr_cmt(void) UNHANDLED_ALIAS;
|
||||
void isr_rtc_alarm(void) UNHANDLED_ALIAS;
|
||||
void isr_rtc_seconds(void) UNHANDLED_ALIAS;
|
||||
void isr_pit0(void) UNHANDLED_ALIAS;
|
||||
void isr_pit1(void) UNHANDLED_ALIAS;
|
||||
void isr_pit2(void) UNHANDLED_ALIAS;
|
||||
void isr_pit3(void) UNHANDLED_ALIAS;
|
||||
void isr_pdb(void) UNHANDLED_ALIAS;
|
||||
void isr_usb_otg(void) UNHANDLED_ALIAS;
|
||||
void isr_usb_charger_detect(void) UNHANDLED_ALIAS;
|
||||
void isr_enet_1588_timer(void) UNHANDLED_ALIAS;
|
||||
void isr_enet_tx(void) UNHANDLED_ALIAS;
|
||||
void isr_enet_rx(void) UNHANDLED_ALIAS;
|
||||
void isr_enet_error_misc(void) UNHANDLED_ALIAS;
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
void isr_sdhc(void) UNHANDLED_ALIAS;
|
||||
void isr_dac0(void) UNHANDLED_ALIAS;
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
void isr_tsi(void) UNHANDLED_ALIAS;
|
||||
void isr_mcg(void) UNHANDLED_ALIAS;
|
||||
void isr_lptmr0(void) UNHANDLED_ALIAS;
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
void isr_porta_pin_detect(void) UNHANDLED_ALIAS;
|
||||
void isr_portb_pin_detect(void) UNHANDLED_ALIAS;
|
||||
void isr_portc_pin_detect(void) UNHANDLED_ALIAS;
|
||||
void isr_portd_pin_detect(void) UNHANDLED_ALIAS;
|
||||
void isr_porte_pin_detect(void) UNHANDLED_ALIAS;
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
/* void isr_reserved(void) UNHANDLED_ALIAS; */
|
||||
void isr_software(void) UNHANDLED_ALIAS;
|
||||
|
||||
/**
|
||||
* @brief Interrupt vector definition
|
||||
*/
|
||||
const ISR_func isr_vector[256] ISR_VECTOR_SECTION = {
|
||||
/* ARM Cortex defined interrupt vectors */
|
||||
(ISR_func)_estack,
|
||||
pre_reset_handler,
|
||||
isr_nmi,
|
||||
isr_hard_fault,
|
||||
isr_mem_manage,
|
||||
isr_bus_fault,
|
||||
isr_usage_fault,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_svc,
|
||||
isr_debug_mon,
|
||||
isr_reserved,
|
||||
isr_pendsv,
|
||||
isr_systick,
|
||||
|
||||
/* Device-specific (Freescale defined) interrupt vectors */
|
||||
isr_dma0_complete,
|
||||
isr_dma1_complete,
|
||||
isr_dma2_complete,
|
||||
isr_dma3_complete,
|
||||
isr_dma4_complete,
|
||||
isr_dma5_complete,
|
||||
isr_dma6_complete,
|
||||
isr_dma7_complete,
|
||||
isr_dma8_complete,
|
||||
isr_dma9_complete,
|
||||
isr_dma10_complete,
|
||||
isr_dma11_complete,
|
||||
isr_dma12_complete,
|
||||
isr_dma13_complete,
|
||||
isr_dma14_complete,
|
||||
isr_dma15_complete,
|
||||
isr_dma_error,
|
||||
isr_mcm,
|
||||
isr_flash_command_complete,
|
||||
isr_flash_read_collision,
|
||||
isr_low_voltage,
|
||||
isr_llwu,
|
||||
isr_watchdog,
|
||||
isr_random_number_generator,
|
||||
isr_i2c0,
|
||||
isr_i2c1,
|
||||
isr_spi0,
|
||||
isr_spi1,
|
||||
isr_spi2,
|
||||
isr_can0_ored_msg_buffer,
|
||||
isr_can0_bus_off,
|
||||
isr_can0_error,
|
||||
isr_can0_tx_warn,
|
||||
isr_can0_rx_warn,
|
||||
isr_can0_wake_up,
|
||||
isr_i2s0_tx,
|
||||
isr_i2s0_rx,
|
||||
isr_can1_ored_msg_buffer,
|
||||
isr_can1_bus_off,
|
||||
isr_can1_error,
|
||||
isr_can1_tx_warn,
|
||||
isr_can1_rx_warn,
|
||||
isr_can1_wake_up,
|
||||
isr_reserved,
|
||||
isr_uart0_lon,
|
||||
isr_uart0_status,
|
||||
isr_uart0_error,
|
||||
isr_uart1_status,
|
||||
isr_uart1_error,
|
||||
isr_uart2_status,
|
||||
isr_uart2_error,
|
||||
isr_uart3_status,
|
||||
isr_uart3_error,
|
||||
isr_uart4_status,
|
||||
isr_uart4_error,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_adc0,
|
||||
isr_adc1,
|
||||
isr_cmp0,
|
||||
isr_cmp1,
|
||||
isr_cmp2,
|
||||
isr_ftm0,
|
||||
isr_ftm1,
|
||||
isr_ftm2,
|
||||
isr_cmt,
|
||||
isr_rtc_alarm,
|
||||
isr_rtc_seconds,
|
||||
isr_pit0,
|
||||
isr_pit1,
|
||||
isr_pit2,
|
||||
isr_pit3,
|
||||
isr_pdb,
|
||||
isr_usb_otg,
|
||||
isr_usb_charger_detect,
|
||||
isr_enet_1588_timer,
|
||||
isr_enet_tx,
|
||||
isr_enet_rx,
|
||||
isr_enet_error_misc,
|
||||
isr_reserved,
|
||||
isr_sdhc,
|
||||
isr_dac0,
|
||||
isr_reserved,
|
||||
isr_tsi,
|
||||
isr_mcg,
|
||||
isr_lptmr0,
|
||||
isr_reserved,
|
||||
isr_porta_pin_detect,
|
||||
isr_portb_pin_detect,
|
||||
isr_portc_pin_detect,
|
||||
isr_portd_pin_detect,
|
||||
isr_porte_pin_detect,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_software, /* Vector 110 */
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved,
|
||||
isr_reserved /* vector 255 */
|
||||
};
|
||||
|
||||
/** @} */
|
||||
|
||||
/** @} */
|
@ -0,0 +1,419 @@
|
||||
/*
|
||||
* Copyright (C) 2015 Eistec AB
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser General
|
||||
* Public License v2.1. See the file LICENSE in the top level directory for more
|
||||
* details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup cpu_k60
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
*
|
||||
* @brief Interrupt vector for K60 MCU.
|
||||
*
|
||||
* @author Joakim Gebart <joakim.gebart@eistec.se>
|
||||
*
|
||||
* @note It is not necessary to modify this file to define custom interrupt
|
||||
* service routines. All symbols are defined weak, it is only necessary to
|
||||
* define a function with the same name in another file to override the default
|
||||
* interrupt handlers.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @name Interrupt vector definition
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "vectors_cortexm.h"
|
||||
#include "wdog.h"
|
||||
|
||||
/**
|
||||
* memory markers as defined in the linker script
|
||||
*/
|
||||
extern uint32_t _estack;
|
||||
|
||||
void pre_startup (void)
|
||||
{
|
||||
/* disable the WDOG */
|
||||
wdog_disable();
|
||||
}
|
||||
|
||||
void dummy_handler(void)
|
||||
{
|
||||
dummy_handler_default();
|
||||
}
|
||||
|
||||
/* Cortex-M specific interrupt vectors */
|
||||
WEAK_DEFAULT void isr_svc(void);
|
||||
WEAK_DEFAULT void isr_pendsv(void);
|
||||
WEAK_DEFAULT void isr_systick(void);
|
||||
/* K60 specific interrupt vector */
|
||||
WEAK_DEFAULT void isr_dma0_complete(void);
|
||||
WEAK_DEFAULT void isr_dma1_complete(void);
|
||||
WEAK_DEFAULT void isr_dma2_complete(void);
|
||||
WEAK_DEFAULT void isr_dma3_complete(void);
|
||||
WEAK_DEFAULT void isr_dma4_complete(void);
|
||||
WEAK_DEFAULT void isr_dma5_complete(void);
|
||||
WEAK_DEFAULT void isr_dma6_complete(void);
|
||||
WEAK_DEFAULT void isr_dma7_complete(void);
|
||||
WEAK_DEFAULT void isr_dma8_complete(void);
|
||||
WEAK_DEFAULT void isr_dma9_complete(void);
|
||||
WEAK_DEFAULT void isr_dma10_complete(void);
|
||||
WEAK_DEFAULT void isr_dma11_complete(void);
|
||||
WEAK_DEFAULT void isr_dma12_complete(void);
|
||||
WEAK_DEFAULT void isr_dma13_complete(void);
|
||||
WEAK_DEFAULT void isr_dma14_complete(void);
|
||||
WEAK_DEFAULT void isr_dma15_complete(void);
|
||||
WEAK_DEFAULT void isr_dma_error(void);
|
||||
WEAK_DEFAULT void isr_mcm(void);
|
||||
WEAK_DEFAULT void isr_flash_command_complete(void);
|
||||
WEAK_DEFAULT void isr_flash_read_collision(void);
|
||||
WEAK_DEFAULT void isr_low_voltage(void);
|
||||
WEAK_DEFAULT void isr_llwu(void);
|
||||
WEAK_DEFAULT void isr_watchdog(void);
|
||||
WEAK_DEFAULT void isr_random_number_generator(void);
|
||||
WEAK_DEFAULT void isr_i2c0(void);
|
||||
WEAK_DEFAULT void isr_i2c1(void);
|
||||
WEAK_DEFAULT void isr_spi0(void);
|
||||
WEAK_DEFAULT void isr_spi1(void);
|
||||
WEAK_DEFAULT void isr_spi2(void);
|
||||
WEAK_DEFAULT void isr_can0_ored_msg_buffer(void);
|
||||
WEAK_DEFAULT void isr_can0_bus_off(void);
|
||||
WEAK_DEFAULT void isr_can0_error(void);
|
||||
WEAK_DEFAULT void isr_can0_tx_warn(void);
|
||||
WEAK_DEFAULT void isr_can0_rx_warn(void);
|
||||
WEAK_DEFAULT void isr_can0_wake_up(void);
|
||||
WEAK_DEFAULT void isr_i2s0_tx(void);
|
||||
WEAK_DEFAULT void isr_i2s0_rx(void);
|
||||
WEAK_DEFAULT void isr_can1_ored_msg_buffer(void);
|
||||
WEAK_DEFAULT void isr_can1_bus_off(void);
|
||||
WEAK_DEFAULT void isr_can1_error(void);
|
||||
WEAK_DEFAULT void isr_can1_tx_warn(void);
|
||||
WEAK_DEFAULT void isr_can1_rx_warn(void);
|
||||
WEAK_DEFAULT void isr_can1_wake_up(void);
|
||||
/* void dummy_handler(void); */
|
||||
WEAK_DEFAULT void isr_uart0_lon(void);
|
||||
WEAK_DEFAULT void isr_uart0_status(void);
|
||||
WEAK_DEFAULT void isr_uart0_error(void);
|
||||
WEAK_DEFAULT void isr_uart1_status(void);
|
||||
WEAK_DEFAULT void isr_uart1_error(void);
|
||||
WEAK_DEFAULT void isr_uart2_status(void);
|
||||
WEAK_DEFAULT void isr_uart2_error(void);
|
||||
WEAK_DEFAULT void isr_uart3_status(void);
|
||||
WEAK_DEFAULT void isr_uart3_error(void);
|
||||
WEAK_DEFAULT void isr_uart4_status(void);
|
||||
WEAK_DEFAULT void isr_uart4_error(void);
|
||||
/* void dummy_handler(void); */
|
||||
/* void dummy_handler(void); */
|
||||
WEAK_DEFAULT void isr_adc0(void);
|
||||
WEAK_DEFAULT void isr_adc1(void);
|
||||
WEAK_DEFAULT void isr_cmp0(void);
|
||||
WEAK_DEFAULT void isr_cmp1(void);
|
||||
WEAK_DEFAULT void isr_cmp2(void);
|
||||
WEAK_DEFAULT void isr_ftm0(void);
|
||||
WEAK_DEFAULT void isr_ftm1(void);
|
||||
WEAK_DEFAULT void isr_ftm2(void);
|
||||
WEAK_DEFAULT void isr_cmt(void);
|
||||
WEAK_DEFAULT void isr_rtc_alarm(void);
|
||||
WEAK_DEFAULT void isr_rtc_seconds(void);
|
||||
WEAK_DEFAULT void isr_pit0(void);
|
||||
WEAK_DEFAULT void isr_pit1(void);
|
||||
WEAK_DEFAULT void isr_pit2(void);
|
||||
WEAK_DEFAULT void isr_pit3(void);
|
||||
WEAK_DEFAULT void isr_pdb(void);
|
||||
WEAK_DEFAULT void isr_usb_otg(void);
|
||||
WEAK_DEFAULT void isr_usb_charger_detect(void);
|
||||
WEAK_DEFAULT void isr_enet_1588_timer(void);
|
||||
WEAK_DEFAULT void isr_enet_tx(void);
|
||||
WEAK_DEFAULT void isr_enet_rx(void);
|
||||
WEAK_DEFAULT void isr_enet_error_misc(void);
|
||||
/* void dummy_handler(void); */
|
||||
WEAK_DEFAULT void isr_sdhc(void);
|
||||
WEAK_DEFAULT void isr_dac0(void);
|
||||
/* void dummy_handler(void); */
|
||||
WEAK_DEFAULT void isr_tsi(void);
|
||||
WEAK_DEFAULT void isr_mcg(void);
|
||||
WEAK_DEFAULT void isr_lptmr0(void);
|
||||
/* void dummy_handler(void); */
|
||||
WEAK_DEFAULT void isr_porta_pin_detect(void);
|
||||
WEAK_DEFAULT void isr_portb_pin_detect(void);
|
||||
WEAK_DEFAULT void isr_portc_pin_detect(void);
|
||||
WEAK_DEFAULT void isr_portd_pin_detect(void);
|
||||
WEAK_DEFAULT void isr_porte_pin_detect(void);
|
||||
/* void dummy_handler(void); */
|
||||
/* void dummy_handler(void); */
|
||||
WEAK_DEFAULT void isr_software(void);
|
||||
|
||||
/**
|
||||
* @brief Interrupt vector definition
|
||||
*/
|
||||
__attribute__((section(".vector_table")))
|
||||
const void *interrupt_vector[] = {
|
||||
/* Stack pointer */
|
||||
(void *)(&_estack), /* pointer to the top of the empty stack */
|
||||
/* Cortex-M4 handlers */
|
||||
(void*) reset_handler_default, /* entry point of the program */
|
||||
(void*) nmi_default, /* non maskable interrupt handler */
|
||||
(void*) hard_fault_default, /* hard fault exception */
|
||||
(void*) mem_manage_default, /* memory manage exception */
|
||||
(void*) bus_fault_default, /* bus fault exception */
|
||||
(void*) usage_fault_default, /* usage fault exception */
|
||||
(void*) (0UL), /* Reserved */
|
||||
(void*) (0UL), /* Reserved */
|
||||
(void*) (0UL), /* Reserved */
|
||||
(void*) (0UL), /* Reserved */
|
||||
(void*) isr_svc, /* system call interrupt, in RIOT used for
|
||||
* switching into thread context on boot */
|
||||
(void*) debug_mon_default, /* debug monitor exception */
|
||||
(void*) (0UL), /* Reserved */
|
||||
(void*) isr_pendsv, /* pendSV interrupt, in RIOT the actual
|
||||
* context switching is happening here */
|
||||
(void*) isr_systick, /* SysTick interrupt, not used in RIOT */
|
||||
/* K60 specific peripheral handlers */
|
||||
(void*) isr_dma0_complete,
|
||||
(void*) isr_dma1_complete,
|
||||
(void*) isr_dma2_complete,
|
||||
(void*) isr_dma3_complete,
|
||||
(void*) isr_dma4_complete,
|
||||
(void*) isr_dma5_complete,
|
||||
(void*) isr_dma6_complete,
|
||||
(void*) isr_dma7_complete,
|
||||
(void*) isr_dma8_complete,
|
||||
(void*) isr_dma9_complete,
|
||||
(void*) isr_dma10_complete,
|
||||
(void*) isr_dma11_complete,
|
||||
(void*) isr_dma12_complete,
|
||||
(void*) isr_dma13_complete,
|
||||
(void*) isr_dma14_complete,
|
||||
(void*) isr_dma15_complete,
|
||||
(void*) isr_dma_error,
|
||||
(void*) isr_mcm,
|
||||
(void*) isr_flash_command_complete,
|
||||
(void*) isr_flash_read_collision,
|
||||
(void*) isr_low_voltage,
|
||||
(void*) isr_llwu,
|
||||
(void*) isr_watchdog,
|
||||
(void*) isr_random_number_generator,
|
||||
(void*) isr_i2c0,
|
||||
(void*) isr_i2c1,
|
||||
(void*) isr_spi0,
|
||||
(void*) isr_spi1,
|
||||
(void*) isr_spi2,
|
||||
(void*) isr_can0_ored_msg_buffer,
|
||||
(void*) isr_can0_bus_off,
|
||||
(void*) isr_can0_error,
|
||||
(void*) isr_can0_tx_warn,
|
||||
(void*) isr_can0_rx_warn,
|
||||
(void*) isr_can0_wake_up,
|
||||
(void*) isr_i2s0_tx,
|
||||
(void*) isr_i2s0_rx,
|
||||
(void*) isr_can1_ored_msg_buffer,
|
||||
(void*) isr_can1_bus_off,
|
||||
(void*) isr_can1_error,
|
||||
(void*) isr_can1_tx_warn,
|
||||
(void*) isr_can1_rx_warn,
|
||||
(void*) isr_can1_wake_up,
|
||||
(void*) dummy_handler,
|
||||
(void*) isr_uart0_lon,
|
||||
(void*) isr_uart0_status,
|
||||
(void*) isr_uart0_error,
|
||||
(void*) isr_uart1_status,
|
||||
(void*) isr_uart1_error,
|
||||
(void*) isr_uart2_status,
|
||||
(void*) isr_uart2_error,
|
||||
(void*) isr_uart3_status,
|
||||
(void*) isr_uart3_error,
|
||||
(void*) isr_uart4_status,
|
||||
(void*) isr_uart4_error,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) isr_adc0,
|
||||
(void*) isr_adc1,
|
||||
(void*) isr_cmp0,
|
||||
(void*) isr_cmp1,
|
||||
(void*) isr_cmp2,
|
||||
(void*) isr_ftm0,
|
||||
(void*) isr_ftm1,
|
||||
(void*) isr_ftm2,
|
||||
(void*) isr_cmt,
|
||||
(void*) isr_rtc_alarm,
|
||||
(void*) isr_rtc_seconds,
|
||||
(void*) isr_pit0,
|
||||
(void*) isr_pit1,
|
||||
(void*) isr_pit2,
|
||||
(void*) isr_pit3,
|
||||
(void*) isr_pdb,
|
||||
(void*) isr_usb_otg,
|
||||
(void*) isr_usb_charger_detect,
|
||||
(void*) isr_enet_1588_timer,
|
||||
(void*) isr_enet_tx,
|
||||
(void*) isr_enet_rx,
|
||||
(void*) isr_enet_error_misc,
|
||||
(void*) dummy_handler,
|
||||
(void*) isr_sdhc,
|
||||
(void*) isr_dac0,
|
||||
(void*) dummy_handler,
|
||||
(void*) isr_tsi,
|
||||
(void*) isr_mcg,
|
||||
(void*) isr_lptmr0,
|
||||
(void*) dummy_handler,
|
||||
(void*) isr_porta_pin_detect,
|
||||
(void*) isr_portb_pin_detect,
|
||||
(void*) isr_portc_pin_detect,
|
||||
(void*) isr_portd_pin_detect,
|
||||
(void*) isr_porte_pin_detect,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) isr_software, /* Vector 110 */
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler,
|
||||
(void*) dummy_handler /* vector 255 */
|
||||
};
|
||||
|
||||
/** @} */
|
Loading…
Reference in New Issue