step15中的中断向量跳转指令是怎么计算的?
01 static void install_irq_handler( void (*isr)(void) )02 {
/* ARM irq exception vector addr is 0x00000018*/
03unsigned int * irq_vec_addr = ( unsigned int * ) 0x18;
/* this is isr entry address, could be another address like 0x3c, 0x58... */
04unsigned int * isr_entry_addr = ( unsigned int * ) 0x38;
05unsigned int instruction;
/* set the ISR entry at 0x38*/
06*isr_entry_addr = (unsigned int)isr;
/* make an instruction: it is machine-code for "ldrpc, "*/
07instruction = ((unsigned int) isr_entry_addr- (unsigned int)irq_vec_addr - 0x08) | 0xe59ff000;
/* set this instruction at 0x18*/
08*irq_vec_addr = instruction;
09return;
10 }
第7行中的指令是根据什么来构建的?别的资料上的中断向量表的初始化和这种方法有什么区别吗?谢谢指教。
页:
[1]