Changeset 7a8c866a in mainline for arch/mips32/src/interrupt.c


Ignore:
Timestamp:
2005-12-10T17:51:36Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2312685
Parents:
e5fcf00
Message:

Move all MIPS exceptions to generic dispatcher.
Align size in malloc() to native size, some architectures
don't like it unaligned.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/mips32/src/interrupt.c

    re5fcf00 r7a8c866a  
    3333#include <arch/cp0.h>
    3434#include <time/clock.h>
    35 #include <panic.h>
    36 #include <print.h>
    37 #include <symtab.h>
    3835#include <arch/drivers/arc.h>
    39 
    40 static void print_regdump(struct exception_regdump *pstate)
    41 {
    42         char *pcsymbol = "";
    43         char *rasymbol = "";
    44 
    45         char *s = get_symtab_entry(pstate->epc);
    46         if (s)
    47                 pcsymbol = s;
    48         s = get_symtab_entry(pstate->ra);
    49         if (s)
    50                 rasymbol = s;
    51        
    52         printf("PC: %X(%s) RA: %X(%s)\n",pstate->epc,pcsymbol,
    53                pstate->ra,rasymbol);
    54 }
    5536
    5637/** Disable interrupts.
     
    9475}
    9576
    96 static void unhandled_exception(int n, void *stack)
    97 {
    98         struct exception_regdump *pstate = (struct exception_regdump *)stack;
    99 
    100         print_regdump(pstate);
    101         panic("unhandled interrupt %d\n", n);
    102 }
    103 
    10477static void timer_exception(int n, void *stack)
    10578{
     
    11891}
    11992
    120 /** Basic exception handler */
    121 void interrupt(struct exception_regdump *pstate)
    122 {
    123         __u32 cause;
    124         int i;
    125        
    126         /* decode interrupt number and process the interrupt */
    127         cause = (cp0_cause_read() >> 8) &0xff;
    128        
    129         for (i = 0; i < 8; i++)
    130                 if (cause & (1 << i))
    131                         exc_dispatch(i, (void *)pstate);
    132 }
    133 
    13493/* Initialize basic tables for exception dispatching */
    13594void interrupt_init(void)
     
    13796        int i;
    13897
    139         for (i=0;i < IVT_ITEMS; i++)
    140                 exc_register(i, "undef", unhandled_exception);
    141 
    142         exc_register(TIMER_IRQ, "timer", timer_exception);
    143         exc_register(0, "swint0", swint0);
    144         exc_register(1, "swint1", swint1);
     98        int_register(TIMER_IRQ, "timer", timer_exception);
     99        int_register(0, "swint0", swint0);
     100        int_register(1, "swint1", swint1);
    145101}
Note: See TracChangeset for help on using the changeset viewer.