在带有altera DE2 FPGA的Nios 2中,我研究了以下中断代码
异常:检查陷阱或中断
exc_hand:
rdctl et,estatus # read estatus
andi et,et,1 # mask EPIE, bit 0
beq et,r0,noint # om EPIE == 0: no interrupt
rdctl et,ipending # read ipending
beq et,r0,noint # if ipending == 0: no interrupt
int_check: # if we reach this then there aws an interrupt
subi ea,ea,4 # adjust exception return address
我可以理解第一个指令和面具的作用,但我不明白为什么面具是必要的。是因为在比特0的其他位中可能存在垃圾?仅使用AFAIK位0,为什么我需要屏蔽它?
答案 0 :(得分:1)
请参阅NIOS II Processor Reference Handbook Programming Model中的表3-8 - 其中有一大堆位可以设置。例如,NMI位,影子寄存器位等......
您发布的代码仅对位0(PIE位)的状态感兴趣,因此它会屏蔽其他位。