X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Farm.git;a=blobdiff_plain;f=betty%2Fstartup.s;h=d393d32a35e0763ebc95a8b32f0401811829fcc7;hp=dc43ab6513ed417f0a404555e24ea50c1031b720;hb=916c8dd1dfa2414ae8b58ab1e3d477b24c553815;hpb=c0321fdefb210dfc4cf43959e76c3c7c49f9e490 diff --git a/betty/startup.s b/betty/startup.s index dc43ab6..d393d32 100644 --- a/betty/startup.s +++ b/betty/startup.s @@ -49,6 +49,13 @@ .arm # exception handling must go to the very beginning + # + # concerning irq: + # - the ldr is at 0x18 + # - pc will be 0x18 + 8 at the moment of ldr (pipeline) + # - substract 0xff0 => 0xfffff030 + # - that's the vectored address register + # - the vic put in there the address of our service routine ldr pc, handler_reset ldr pc, handler_undef_instruction @@ -56,7 +63,7 @@ ldr pc, handler_prefetch_abort ldr pc, handler_data_abort nop - ldr pc, handler_irq + ldr pc, [pc, #-0xff0] ldr pc, handler_fiq handler_reset: .word handle_reset @@ -64,7 +71,6 @@ handler_undef_instruction: .word interrupt_handler_undef_instruction handler_soft_ir: .word interrupt_handler_soft_ir handler_prefetch_abort: .word interrupt_handler_prefetch_abort handler_data_abort: .word interrupt_handler_data_abort -handler_irq: .word interrupt_handler_irq handler_fiq: .word interrupt_handler_fiq # reset handling goes here @@ -102,7 +108,7 @@ handle_reset: ldr r0, =stack_limit mov sl, r0 - # copy data section (only if we are in flash <=> _etext = _data) + # copy data section (only if we are in flash <=> _etext != _data) ldr r1, =_etext ldr r2, =_data