Changeset 7688b5d in mainline for kernel/arch/mips32/src/exception.c


Ignore:
Timestamp:
2006-10-18T09:54:13Z (18 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
6fb30a1
Parents:
19de05f
Message:

mips32: update for new IRQ subsystem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/mips32/src/exception.c

    r19de05f r7688b5d  
    4646#include <func.h>
    4747#include <console/kconsole.h>
     48#include <ddi/irq.h>
    4849#include <arch/debugger.h>
    4950
     
    146147        cause = (cp0_cause_read() >> 8) &0xff;
    147148       
    148         for (i = 0; i < 8; i++)
    149                 if (cause & (1 << i))
    150                         exc_dispatch(i+INT_OFFSET, istate);
     149        for (i = 0; i < 8; i++) {
     150                if (cause & (1 << i)) {
     151                        irq_t *irq = irq_dispatch_and_lock(i);
     152                        if (irq) {
     153                                /*
     154                                 * The IRQ handler was found.
     155                                 */
     156                                irq->handler(irq, irq->arg);
     157                                spinlock_unlock(&irq->lock);
     158                        } else {
     159                                /*
     160                                 * Spurious interrupt.
     161                                 */
     162#ifdef CONFIG_DEBUG
     163                                printf("cpu%d: spurious interrupt (inum=%d)\n", CPU->id, i);
     164#endif
     165                        }
     166                }
     167        }
    151168}
    152169
     
    162179
    163180        /* Clear exception table */
    164         for (i=0;i < IVT_ITEMS; i++)
     181        for (i = 0; i < IVT_ITEMS; i++)
    165182                exc_register(i, "undef", (iroutine) unhandled_exception);
     183       
    166184        exc_register(EXC_Bp, "bkpoint", (iroutine) breakpoint_exception);
    167185        exc_register(EXC_RI, "resinstr", (iroutine) reserved_instr_exception);
Note: See TracChangeset for help on using the changeset viewer.