- 论坛徽章:
- 0
|
我在代码里查过了,是在系统相关的部分里,在arch目录下的,这个出错信息是在一个判断语句里的。 我看到的意思是判断两个寄存器的值都为零的时候,就发生这个错误。
457 static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
458 {
459 u32 imr_val;
460 u32 int_valid;
461 u32 expio_irq;
462
463 desc->chip->mask(irq); /* irq = gpio irq number */
464
465 imr_val = __raw_readw(PBC_INTMASK_SET_REG);
466 int_valid = __raw_readw(PBC_INTSTATUS_REG) & imr_val;
467
468 if (unlikely(!int_valid)) {
469 printk(KERN_ERR "\nEXPIO: Spurious interrupt:0x%0x\n\n",
470 int_valid);
471 goto out;
472 }
473
474 expio_irq = MXC_EXP_IO_BASE;
475 for (; int_valid != 0; int_valid >>= 1, expio_irq++) {
476 struct irq_desc *d;
477 if ((int_valid & 1) == 0)
478 continue;
479 d = irq_desc + expio_irq;
480 if (unlikely(!(d->handle_irq))) {
481 printk(KERN_ERR "\nEXPIO irq: %d unhandeled\n",
482 expio_irq);
483 BUG(); /* oops */
484 }
485 d->handle_irq(expio_irq, d);
486 }
487
488 out:
489 desc->chip->ack(irq);
490 desc->chip->unmask(irq);
491 } |
|