赞题库-背景图
单项选择题

The following program is the interrupt driven mode porgram. Which of the following procedures will be called first, when receiving the interrupt?
以下中断方式程序中,当接收到中断请求时,哪个函数首先被调用?
int interrupt=0;
void interrupt_hub(void) __attribute__ ((interrupt_handler));//Total interrupt service routine
int main(void)
{
Xil_Out32(XPAR_INTC_0_BASEADDR+XIN_IAR_OFFSET,
XPAR_SYSTEM_IN2_0_MASK|XPAR_SYSTEM_IN3_0_MASK);
Xil_Out32(XPAR_INTC_0_BASEADDR+XIN_IER_OFFSET,
XPAR_SYSTEM_IN2_0_MASK|XPAR_SYSTEM_IN3_0_MASK);
Xil_Out32(XPAR_INTC_0_BASEADDR+XIN_MER_OFFSET,
XIN_INT_MASTER_ENABLE_MASK|XIN_INT_HARDWARE_ENABLE_MASK);
microblaze_enable_interrupts();
while(1)
{
xil_printf("waiting for interrupt");
while(!interrupt);
interrupt=0;
xil_printf("returned from interrupt");
}
return 0;
}
void interrupt_hub(void)
{
int status;
status=Xil_In32(XPAR_INTC_0_BASEADDR+XIN_ISR_OFFSET);
if((status&XPAR_SYSTEM_IN2_0_MASK)==XPAR_SYSTEM_IN2_0_MASK)
interrupt_intr2();
if((status&XPAR_SYSTEM_IN3_0_MASK)==XPAR_SYSTEM_IN3_0_MASK)
interrupt_intr3();
Xil_Out32(XPAR_INTC_0_BASEADDR+XIN_IAR_OFFSET,status);
interrupt=1;//End of interrupt processing flag
}
void interrupt_intr2(void)//intr2 handler
{
xil_printf("interrupt 2 is processing");
}
void interrupt_intr3(void)//intr3 handler
{
xil_printf("interrupt 3 is processing");
}
A、interrupt_hub
B、main
C、interrupt_intr2
D、interrupt_intr3