0

在带有 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,那么为什么我需要屏蔽它?

4

1 回答 1

1

请参阅NIOS II 处理器参考手册编程模型中的表 3-8 - 那里有很多可以设置的位。例如,NMI 位、影子寄存器位等……

您发布的代码只对位 0(PIE 位)的状态感兴趣,因此它屏蔽了其他位。

于 2013-07-24T08:34:54.713 回答