ARM中的Linux IRQ处理

时间:2014-11-19 23:30:35

标签: assembly arm

我试图理解在ARM平台上如何在Linux中使用IRQ处理,而我无法理解汇编程序宏“handle_irq”(在arch/arm/kernel/entry-asmv.S中)。当定义CONFIG_MULTI_IRQ_HANDLER时,这是宏:

ldr r1, =handle_arch_irq
mov r0, sp
adr lr, BSYM(9997f)
ldr pc, [r1]

我想它是将函数的地址加载到r1中,堆栈指针加载到r0,链接寄存器加到0x9997F,pc加载到函数地址。

但是我不理解=前面的=handle_arch_irq,我不明白为什么返回地址总是固定的(如果在代码中添加了一行,它会改变) ,以及为什么它在电脑上使用ldr,而不是直接移动。

0 个答案:

没有答案