You can use the relative addressing if all of your interrupt handlers fit
> in
> the first 32K of code (14 bit address range). Some folks have a first
> level
> handler in that space that dispatches to other relocatable code outside of
> that range.
I see, it's a bit clearer now. And what about this snippet from the Atmel's appnote "Getting started with at91sam7 controllers": .... reset_vector: ldr pc, =reset_handler undef_vector: b undef_vector /* Undefined Instruction */ swi_vector: b swi_vector /* Software Interrupt */ ....
They put the vectors table and IRQ handler in the seperate section named .vectors, while "reset_handler" in .text. Is that why they load absolute address of 'reset_handler' in to PC ? By the way, I checked it disassembles in to "ldr pc, [pc, #NUM]", so it would be equivalently to write "ldr pc, [pc, #reset_handler]", is that right ?
The second method allows you to put full 32 bit addresses in the table
> (which usually immediately follows the vectors). Normally you boot from
> flash and then set up RAM and do a remap to put the RAM version of the
> vector table at 0. Once that is done you can modify the jump table to
> install handlers.
Best regards, Roman Mashak