Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/src/interrupt.c

    rda1bafb rd99c1d2  
    5757#include <putchar.h>
    5858
    59 #define VECTORS_64_BUNDLE        20
    60 #define VECTORS_16_BUNDLE        48
    61 #define VECTORS_16_BUNDLE_START  0x5000
    62 
    63 #define VECTOR_MAX  0x7f00
    64 
    65 #define BUNDLE_SIZE  16
     59#define VECTORS_64_BUNDLE       20
     60#define VECTORS_16_BUNDLE       48
     61#define VECTORS_16_BUNDLE_START 0x5000
     62#define VECTOR_MAX              0x7f00
     63
     64#define BUNDLE_SIZE             16
    6665
    6766static const char *vector_names_64_bundle[VECTORS_64_BUNDLE] = {
     
    135134static void dump_interrupted_context(istate_t *istate)
    136135{
     136        const char *ifa = symtab_fmt_name_lookup(istate->cr_ifa);
     137        const char *iipa = symtab_fmt_name_lookup(istate->cr_iipa);
     138        const char *iip = symtab_fmt_name_lookup(istate->cr_iip);
     139       
    137140        putchar('\n');
    138141        printf("Interrupted context dump:\n");
     
    146149            istate->cr_ipsr);
    147150       
    148         printf("cr.iip=%#018llx, #%d\t(%s)\n", istate->cr_iip, istate->cr_isr.ei,
    149             symtab_fmt_name_lookup(istate->cr_iip));
    150         printf("cr.iipa=%#018llx\t(%s)\n", istate->cr_iipa,
    151             symtab_fmt_name_lookup(istate->cr_iipa));
    152         printf("cr.ifa=%#018llx\t(%s)\n", istate->cr_ifa,
    153             symtab_fmt_name_lookup(istate->cr_ifa));
     151        printf("cr.iip=%#018llx, #%d\t(%s)\n", istate->cr_iip,
     152            istate->cr_isr.ei, iip);
     153        printf("cr.iipa=%#018llx\t(%s)\n", istate->cr_iipa, iipa);
     154        printf("cr.ifa=%#018llx\t(%s)\n", istate->cr_ifa, ifa);
    154155}
    155156
     
    217218                istate->cr_ipsr.ri++;
    218219        }
    219        
     220
    220221        return syscall_handler(istate->in0, istate->in1, istate->in2,
    221222            istate->in3, istate->in4, istate->in5, istate->in6);
     
    233234static void end_of_local_irq(void)
    234235{
    235         asm volatile (
    236                 "mov cr.eoi=r0;;"
    237         );
    238 }
     236        asm volatile ("mov cr.eoi=r0;;");
     237}
     238
    239239
    240240void external_interrupt(uint64_t vector, istate_t *istate)
    241241{
    242242        cr_ivr_t ivr;
     243        irq_t *irq;
    243244       
    244245        ivr.value = ivr_read();
    245246        srlz_d();
    246        
    247         irq_t *irq;
    248        
     247
    249248        switch (ivr.vector) {
    250249        case INTERRUPT_SPURIOUS:
     
    253252#endif
    254253                break;
    255        
     254
    256255#ifdef CONFIG_SMP
    257256        case VECTOR_TLB_SHOOTDOWN_IPI:
     
    260259                break;
    261260#endif
    262        
     261
    263262        case INTERRUPT_TIMER:
    264263                irq = irq_dispatch_and_lock(ivr.vector);
    265264                if (irq) {
    266265                        irq->handler(irq);
    267                         irq_spinlock_unlock(&irq->lock, false);
     266                        spinlock_unlock(&irq->lock);
    268267                } else {
    269268                        panic("Unhandled Internal Timer Interrupt (%d).",
     
    284283                        if (!irq->preack)
    285284                                end_of_local_irq();
    286                         irq_spinlock_unlock(&irq->lock, false);
     285                        spinlock_unlock(&irq->lock);
    287286                } else {
    288287                        /*
Note: See TracChangeset for help on using the changeset viewer.