Код
MODULE ?cstartup
;; Forward declaration of sections.
SECTION IRQ_STACK:DATA:NOROOT(3)
SECTION ABT_STACK:DATA:NOROOT(3)
SECTION SVC_STACK:DATA:NOROOT(3)
SECTION UND_STACK:DATA:NOROOT(3)
SECTION FIQ_STACK:DATA:NOROOT(3)
SECTION CSTACK:DATA:NOROOT(3)
SECTION .intvec:CODE:NOROOT(2)
PUBLIC __vector
PUBLIC __vector_0x14
PUBLIC __iar_program_start
EXTERN vPortYieldProcessor
ARM
__vector:
ldr pc,[pc,#+24] ;; Reset
ldr pc,[pc,#+24] ;; Undefined instructions
ldr pc,[pc,#+24] ;; Software interrupt (SWI/SVC)
ldr pc,[pc,#+24] ;; Prefetch abort
ldr pc,[pc,#+24] ;; Data abort
__vector_0x14
DC32 0 ;; RESERVED
ldr pc,[pc,#+24] ;; IRQ
ldr pc,[pc,#+24] ;; FIQ
DC32 __iar_program_start ;; Reset
DC32 undef_handler ;; Undefined instructions
DC32 swi_handler ;; Software interrupt (SWI/SVC)
DC32 prefetch_handler ;; Prefetch abort
DC32 data_handler ;; Data abort
DC32 0 ;; RESERVED
DC32 irq_handler ;; IRQ
DC32 fiq_handler ;; FIQ
undef_handler
b undef_handler
swi_handler
b vPortYieldProcessor
prefetch_handler
b prefetch_handler
data_handler
b data_handler
irq_handler
b irq_handler
fiq_handler
b fiq_handler
Пробовал менять так, по логике должно произойти зацикливание на irq_handler, однако в PC каким-то образом все равно оказывается 0x58. Отсюда я и сделал вывод, что обработчик не при чем, и в 0x18 не попадает вообще.