@ vim:ft=arm
#include <rt/arch/pseudo.S>
#include <vic.S>
.syntax unified
.section .text.vector, "ax", %progbits
.global vector
vector:
/* On reset all exceptions are taken in arm mode, so the reset entry must
* always be arm. */
.arm
.global reset_vector
.type reset_vector, %function
reset_vector:
ldr pc, =start
#ifdef __thumb__
/* If compiling for thumb, we turn on the TE bit, so all exceptions will be
* handled in thumb mode.
* Each vector entry must always be 4 bytes, so explicitly align each entry
* in case only one 16-bit instruction is used in the previous entry. */
.thumb
#endif
.global udf_vector
.type udf_vector, %function
.balign 4
udf_vector:
ldr pc, =udf_handler
.global svc_vector
.type svc_vector, %function
.balign 4
svc_vector:
ldr pc, =rt_svc_handler
.global prefetch_abt_vector
.type prefetch_abt_vector, %function
.balign 4
prefetch_abt_vector:
ldr pc, =prefetch_abt_handler
.global data_abt_vector
.type data_abt_vector, %function
.balign 4
data_abt_vector:
ldr pc, =data_abt_handler
.global reserved_vector
.type reserved_vector, %function
.balign 4
reserved_vector:
bkpt
.global irq_vector
.type irq_vector, %function
.balign 4
irq_vector:
irq_handler
/* NOTE: We don't enable FIQs, so we place the irq_handler sequence
* directly in the vector, overlapping the FIQ entry. */