Files
rust-arduino-blink-led-no-c…/interrupt_vector.S
Jake Goulding 8264cab5ab Use Xargo and a linker script
Xargo ensures we compile libcore correctly, the linker script ensures
the interrupts are located correctly.
2018-11-02 21:35:00 -04:00

69 lines
2.1 KiB
ArmAsm

.section .ivr, "ax", @progbits
.align 1
ivr:
jmp _ivr_reset
jmp _ivr_irq0
jmp _ivr_irq1
jmp _ivr_pin_change_0
jmp _ivr_pin_change_1
jmp _ivr_pin_change_2
jmp _ivr_watchdog_timer
jmp _ivr_timer2_compare_a
jmp _ivr_timer2_compare_b
jmp _ivr_timer2_overflow
jmp _ivr_timer1_capture
jmp _ivr_timer1_compare_a
jmp _ivr_timer1_compare_b
jmp _ivr_timer1_overflow
jmp _ivr_timer0_compare_a
jmp _ivr_timer0_compare_b
jmp _ivr_timer0_overflow
jmp _ivr_spi_transfer_complete
jmp _ivr_usart_rx_complete
jmp _ivr_usart_udr_empty
jmp _ivr_usart_tx_complete
jmp _ivr_adc_conversion_complete
jmp _ivr_eeprom_ready
jmp _ivr_analog_comparator
jmp _ivr_two_wire_serial_interface
jmp _ivr_store_program_memory_ready
_ivr_undefined:
reti
;;; By default, start all interrupt handlers as doing a no-op
;;; return. Since these symbols are weakly linked, user code can
;;; override each one on demand.
.macro _ivr_default name target=_ivr_undefined
.weak \name
.set \name, \target
.endm
_ivr_default _ivr_reset main ; Default to `main` here, no need for indirection
_ivr_default _ivr_irq0
_ivr_default _ivr_irq1
_ivr_default _ivr_pin_change_0
_ivr_default _ivr_pin_change_1
_ivr_default _ivr_pin_change_2
_ivr_default _ivr_watchdog_timer
_ivr_default _ivr_timer2_compare_a
_ivr_default _ivr_timer2_compare_b
_ivr_default _ivr_timer2_overflow
_ivr_default _ivr_timer1_capture
_ivr_default _ivr_timer1_compare_a
_ivr_default _ivr_timer1_compare_b
_ivr_default _ivr_timer1_overflow
_ivr_default _ivr_timer0_compare_a
_ivr_default _ivr_timer0_compare_b
_ivr_default _ivr_timer0_overflow
_ivr_default _ivr_spi_transfer_complete
_ivr_default _ivr_usart_rx_complete
_ivr_default _ivr_usart_udr_empty
_ivr_default _ivr_usart_tx_complete
_ivr_default _ivr_adc_conversion_complete
_ivr_default _ivr_eeprom_ready
_ivr_default _ivr_analog_comparator
_ivr_default _ivr_two_wire_serial_interface
_ivr_default _ivr_store_program_memory_ready