Files
lk/platform/stellaris/vectab.c
Travis Geiselbrecht cba9e47987 [license] replace the longer full MIT license with a shorter one
Used scripts/replacelic. Everything seems to build fine.
2019-07-05 17:22:23 -07:00

284 lines
12 KiB
C

/*
* Copyright (c) 2013 Travis Geiselbrecht
*
* Use of this source code is governed by a MIT-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT
*/
#include <lk/debug.h>
#include <lk/compiler.h>
#include <arch/arm/cm.h>
/* un-overridden irq handler */
void stellaris_dummy_irq(void) {
arm_cm_irq_entry();
panic("unhandled irq\n");
}
extern void stellaris_uart_irq(void);
/* a list of default handlers that are simply aliases to the dummy handler */
#define DEFAULT_HANDLER(x) \
void stellaris_##x##_irq(void) __WEAK_ALIAS("stellaris_dummy_irq")
DEFAULT_HANDLER(gpio_porta);
DEFAULT_HANDLER(gpio_portb);
DEFAULT_HANDLER(gpio_portc);
DEFAULT_HANDLER(gpio_portd);
DEFAULT_HANDLER(gpio_porte);
DEFAULT_HANDLER(uart0);
DEFAULT_HANDLER(uart1);
DEFAULT_HANDLER(ssi0);
DEFAULT_HANDLER(i2c0);
DEFAULT_HANDLER(pwm_fault);
DEFAULT_HANDLER(pwm_gen0);
DEFAULT_HANDLER(pwm_gen1);
DEFAULT_HANDLER(pwm_gen2);
DEFAULT_HANDLER(quad_encoder0);
DEFAULT_HANDLER(adc_seq0);
DEFAULT_HANDLER(adc_seq1);
DEFAULT_HANDLER(adc_seq2);
DEFAULT_HANDLER(adc_seq3);
DEFAULT_HANDLER(watchdog_timer);
DEFAULT_HANDLER(timer0_subtimerA);
DEFAULT_HANDLER(timer0_subtimerB);
DEFAULT_HANDLER(timer1_subtimerA);
DEFAULT_HANDLER(timer1_subtimerB);
DEFAULT_HANDLER(timer2_subtimerA);
DEFAULT_HANDLER(timer2_subtimerB);
DEFAULT_HANDLER(analog_comp0);
DEFAULT_HANDLER(analog_comp1);
DEFAULT_HANDLER(analog_comp2);
DEFAULT_HANDLER(sys_control);
DEFAULT_HANDLER(flash_control);
DEFAULT_HANDLER(gpio_portf);
DEFAULT_HANDLER(gpio_portg);
DEFAULT_HANDLER(gpio_porth);
DEFAULT_HANDLER(uart2);
DEFAULT_HANDLER(ssi1);
DEFAULT_HANDLER(timer3_subtimerA);
DEFAULT_HANDLER(timer3_subtimerB);
DEFAULT_HANDLER(i2c1);
DEFAULT_HANDLER(quad_encoder1);
DEFAULT_HANDLER(can0);
DEFAULT_HANDLER(can1);
DEFAULT_HANDLER(can2);
DEFAULT_HANDLER(ethernet);
DEFAULT_HANDLER(hibernate);
DEFAULT_HANDLER(usb0);
DEFAULT_HANDLER(pwm_gen3);
DEFAULT_HANDLER(udma_software);
DEFAULT_HANDLER(udma_error);
DEFAULT_HANDLER(ad1_seq0);
DEFAULT_HANDLER(ad1_seq1);
DEFAULT_HANDLER(ad1_seq2);
DEFAULT_HANDLER(ad1_seq3);
DEFAULT_HANDLER(i2s0);
DEFAULT_HANDLER(ext_bus0);
DEFAULT_HANDLER(gpio_portj);
DEFAULT_HANDLER(gpio_portk);
DEFAULT_HANDLER(gpio_portl);
DEFAULT_HANDLER(ssi2);
DEFAULT_HANDLER(ssi3);
DEFAULT_HANDLER(uart3);
DEFAULT_HANDLER(uart4);
DEFAULT_HANDLER(uart5);
DEFAULT_HANDLER(uart6);
DEFAULT_HANDLER(uart7);
DEFAULT_HANDLER(i2c2);
DEFAULT_HANDLER(i2c3);
DEFAULT_HANDLER(timer4_subtimerA);
DEFAULT_HANDLER(timer4_subtimerB);
DEFAULT_HANDLER(timer5_subtimerA);
DEFAULT_HANDLER(timer5_subtimerB);
DEFAULT_HANDLER(wide_timer0_subtimerA);
DEFAULT_HANDLER(wide_timer0_subtimerB);
DEFAULT_HANDLER(wide_timer1_subtimerA);
DEFAULT_HANDLER(wide_timer1_subtimerB);
DEFAULT_HANDLER(wide_timer2_subtimerA);
DEFAULT_HANDLER(wide_timer2_subtimerB);
DEFAULT_HANDLER(wide_timer3_subtimerA);
DEFAULT_HANDLER(wide_timer3_subtimerB);
DEFAULT_HANDLER(wide_timer4_subtimerA);
DEFAULT_HANDLER(wide_timer4_subtimerB);
DEFAULT_HANDLER(wide_timer5_subtimerA);
DEFAULT_HANDLER(wide_timer6_subtimerB);
DEFAULT_HANDLER(fpu);
DEFAULT_HANDLER(peci0);
DEFAULT_HANDLER(lpc0);
DEFAULT_HANDLER(i2c4);
DEFAULT_HANDLER(i2c5);
DEFAULT_HANDLER(gpio_portm);
DEFAULT_HANDLER(gpio_portn);
DEFAULT_HANDLER(quad_encoder2);
DEFAULT_HANDLER(fan0);
DEFAULT_HANDLER(gpio_portp0);
DEFAULT_HANDLER(gpio_portp1);
DEFAULT_HANDLER(gpio_portp2);
DEFAULT_HANDLER(gpio_portp3);
DEFAULT_HANDLER(gpio_portp4);
DEFAULT_HANDLER(gpio_portp5);
DEFAULT_HANDLER(gpio_portp6);
DEFAULT_HANDLER(gpio_portp7);
DEFAULT_HANDLER(gpio_portq0);
DEFAULT_HANDLER(gpio_portq1);
DEFAULT_HANDLER(gpio_portq2);
DEFAULT_HANDLER(gpio_portq3);
DEFAULT_HANDLER(gpio_portq4);
DEFAULT_HANDLER(gpio_portq5);
DEFAULT_HANDLER(gpio_portq6);
DEFAULT_HANDLER(gpio_portq7);
DEFAULT_HANDLER(gpio_portr);
DEFAULT_HANDLER(gpio_ports);
DEFAULT_HANDLER(pwm1_gen0);
DEFAULT_HANDLER(pwm1_gen1);
DEFAULT_HANDLER(pwm1_gen2);
DEFAULT_HANDLER(pwm1_gen3);
DEFAULT_HANDLER(pwm1_fault);
#define VECTAB_ENTRY(x) stellaris_##x##_irq
const void *const __SECTION(".text.boot.vectab2") vectab2[] = {
VECTAB_ENTRY(gpio_porta), // GPIO Port A
VECTAB_ENTRY(gpio_portb), // GPIO Port B
VECTAB_ENTRY(gpio_portc), // GPIO Port C
VECTAB_ENTRY(gpio_portd), // GPIO Port D
VECTAB_ENTRY(gpio_porte), // GPIO Port E
VECTAB_ENTRY(uart0), // UART0 Rx and Tx
VECTAB_ENTRY(uart1), // UART1 Rx and Tx
VECTAB_ENTRY(ssi0), // SSI0 Rx and Tx
VECTAB_ENTRY(i2c0), // I2C0 Master and Slave
VECTAB_ENTRY(pwm_fault), // PWM Fault
VECTAB_ENTRY(pwm_gen0), // PWM Generator 0
VECTAB_ENTRY(pwm_gen1), // PWM Generator 1
VECTAB_ENTRY(pwm_gen2), // PWM Generator 2
VECTAB_ENTRY(quad_encoder0), // Quadrature Encoder 0
VECTAB_ENTRY(adc_seq0), // ADC Sequence 0
VECTAB_ENTRY(adc_seq1), // ADC Sequence 1
VECTAB_ENTRY(adc_seq2), // ADC Sequence 2
VECTAB_ENTRY(adc_seq3), // ADC Sequence 3
VECTAB_ENTRY(watchdog_timer), // Watchdog timer
VECTAB_ENTRY(timer0_subtimerA), // Timer 0 subtimer A
VECTAB_ENTRY(timer0_subtimerB), // Timer 0 subtimer B
VECTAB_ENTRY(timer1_subtimerA), // Timer 1 subtimer A
VECTAB_ENTRY(timer1_subtimerB), // Timer 1 subtimer B
VECTAB_ENTRY(timer2_subtimerA), // Timer 2 subtimer A
VECTAB_ENTRY(timer2_subtimerB), // Timer 2 subtimer B
VECTAB_ENTRY(analog_comp0), // Analog Comparator 0
VECTAB_ENTRY(analog_comp1), // Analog Comparator 1
VECTAB_ENTRY(analog_comp2), // Analog Comparator 2
VECTAB_ENTRY(sys_control), // System Control (PLL, OSC, BO)
VECTAB_ENTRY(flash_control), // FLASH Control
VECTAB_ENTRY(gpio_portf), // GPIO Port F
VECTAB_ENTRY(gpio_portg), // GPIO Port G
VECTAB_ENTRY(gpio_porth), // GPIO Port H
VECTAB_ENTRY(uart2), // UART2 Rx and Tx
VECTAB_ENTRY(ssi1), // SSI1 Rx and Tx
VECTAB_ENTRY(timer3_subtimerA), // Timer 3 subtimer A
VECTAB_ENTRY(timer3_subtimerB), // Timer 3 subtimer B
VECTAB_ENTRY(i2c1), // I2C1 Master and Slave
VECTAB_ENTRY(quad_encoder1), // Quadrature Encoder 1
VECTAB_ENTRY(can0), // CAN0
VECTAB_ENTRY(can1), // CAN1
VECTAB_ENTRY(can2), // CAN2
VECTAB_ENTRY(ethernet), // Ethernet
VECTAB_ENTRY(hibernate), // Hibernate
VECTAB_ENTRY(usb0), // USB0
VECTAB_ENTRY(pwm_gen3), // PWM Generator 3
VECTAB_ENTRY(udma_software), // uDMA Software Transfer
VECTAB_ENTRY(udma_error), // uDMA Error
VECTAB_ENTRY(ad1_seq0), // ADC1 Sequence 0
VECTAB_ENTRY(ad1_seq1), // ADC1 Sequence 1
VECTAB_ENTRY(ad1_seq2), // ADC1 Sequence 2
VECTAB_ENTRY(ad1_seq3), // ADC1 Sequence 3
VECTAB_ENTRY(i2s0), // I2S0
VECTAB_ENTRY(ext_bus0), // External Bus Interface 0
VECTAB_ENTRY(gpio_portj), // GPIO Port J
VECTAB_ENTRY(gpio_portk), // GPIO Port K
VECTAB_ENTRY(gpio_portl), // GPIO Port L
VECTAB_ENTRY(ssi2), // SSI2 Rx and Tx
VECTAB_ENTRY(ssi3), // SSI3 Rx and Tx
VECTAB_ENTRY(uart3), // UART3 Rx and Tx
VECTAB_ENTRY(uart4), // UART4 Rx and Tx
VECTAB_ENTRY(uart5), // UART5 Rx and Tx
VECTAB_ENTRY(uart6), // UART6 Rx and Tx
VECTAB_ENTRY(uart7), // UART7 Rx and Tx
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(i2c2), // I2C2 Master and Slave
VECTAB_ENTRY(i2c3), // I2C3 Master and Slave
VECTAB_ENTRY(timer4_subtimerA), // Timer 4 subtimer A
VECTAB_ENTRY(timer4_subtimerB), // Timer 4 subtimer B
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(timer5_subtimerA), // Timer 5 subtimer A
VECTAB_ENTRY(timer5_subtimerB), // Timer 5 subtimer B
VECTAB_ENTRY(wide_timer0_subtimerA), // Wide Timer 0 subtimer A
VECTAB_ENTRY(wide_timer0_subtimerB), // Wide Timer 0 subtimer B
VECTAB_ENTRY(wide_timer1_subtimerA), // Wide Timer 1 subtimer A
VECTAB_ENTRY(wide_timer1_subtimerB), // Wide Timer 1 subtimer B
VECTAB_ENTRY(wide_timer2_subtimerA), // Wide Timer 2 subtimer A
VECTAB_ENTRY(wide_timer2_subtimerB), // Wide Timer 2 subtimer B
VECTAB_ENTRY(wide_timer3_subtimerA), // Wide Timer 3 subtimer A
VECTAB_ENTRY(wide_timer3_subtimerB), // Wide Timer 3 subtimer B
VECTAB_ENTRY(wide_timer4_subtimerA), // Wide Timer 4 subtimer A
VECTAB_ENTRY(wide_timer4_subtimerB), // Wide Timer 4 subtimer B
VECTAB_ENTRY(wide_timer5_subtimerA), // Wide Timer 5 subtimer A
VECTAB_ENTRY(wide_timer6_subtimerB), // Wide Timer 5 subtimer B
VECTAB_ENTRY(fpu), // FPU
VECTAB_ENTRY(peci0), // PECI 0
VECTAB_ENTRY(lpc0), // LPC 0
VECTAB_ENTRY(i2c4), // I2C4 Master and Slave
VECTAB_ENTRY(i2c5), // I2C5 Master and Slave
VECTAB_ENTRY(gpio_portm), // GPIO Port M
VECTAB_ENTRY(gpio_portn), // GPIO Port N
VECTAB_ENTRY(quad_encoder2), // Quadrature Encoder 2
VECTAB_ENTRY(fan0), // Fan 0
VECTAB_ENTRY(dummy), // Reserved
VECTAB_ENTRY(gpio_portp0), // GPIO Port P (Summary or P0)
VECTAB_ENTRY(gpio_portp1), // GPIO Port P1
VECTAB_ENTRY(gpio_portp2), // GPIO Port P2
VECTAB_ENTRY(gpio_portp3), // GPIO Port P3
VECTAB_ENTRY(gpio_portp4), // GPIO Port P4
VECTAB_ENTRY(gpio_portp5), // GPIO Port P5
VECTAB_ENTRY(gpio_portp6), // GPIO Port P6
VECTAB_ENTRY(gpio_portp7), // GPIO Port P7
VECTAB_ENTRY(gpio_portq0), // GPIO Port Q (Summary or Q0)
VECTAB_ENTRY(gpio_portq1), // GPIO Port Q1
VECTAB_ENTRY(gpio_portq2), // GPIO Port Q2
VECTAB_ENTRY(gpio_portq3), // GPIO Port Q3
VECTAB_ENTRY(gpio_portq4), // GPIO Port Q4
VECTAB_ENTRY(gpio_portq5), // GPIO Port Q5
VECTAB_ENTRY(gpio_portq6), // GPIO Port Q6
VECTAB_ENTRY(gpio_portq7), // GPIO Port Q7
VECTAB_ENTRY(gpio_portr), // GPIO Port R
VECTAB_ENTRY(gpio_ports), // GPIO Port S
VECTAB_ENTRY(pwm1_gen0), // PWM 1 Generator 0
VECTAB_ENTRY(pwm1_gen1), // PWM 1 Generator 1
VECTAB_ENTRY(pwm1_gen2), // PWM 1 Generator 2
VECTAB_ENTRY(pwm1_gen3), // PWM 1 Generator 3
VECTAB_ENTRY(pwm1_fault) // PWM 1 Fault
};