Changeset acc7ce4 in mainline for kernel


Ignore:
Timestamp:
2011-01-07T14:57:40Z (15 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7c34b28f
Parents:
b404a98
Message:

uspace interrupt controller drivers for i8259 and APIC (non-functional yet)
convert NE2000 driver to use these drivers (not enabling the IRQ in kernel), this solves the "spurious interrupt" issue
(however, on SMP machines this renders the driver unusable for now since the APIC driver does not do anything yet)

Location:
kernel/arch
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/include/interrupt.h

    rb404a98 racc7ce4  
    7474extern void (* enable_irqs_function)(uint16_t);
    7575extern void (* eoi_function)(void);
     76extern const char *irqs_info;
    7677
    7778extern void interrupt_init(void);
  • kernel/arch/amd64/src/amd64.c

    rb404a98 racc7ce4  
    235235#endif
    236236       
    237         /*
    238          * This nasty hack should also go away ASAP.
    239          */
    240         trap_virtual_enable_irqs(1 << IRQ_DP8390);
     237        if (irqs_info != NULL)
     238                sysinfo_set_item_val(irqs_info, NULL, true);
     239       
    241240        sysinfo_set_item_val("netif.dp8390.inr", NULL, IRQ_DP8390);
    242241}
  • kernel/arch/amd64/src/interrupt.c

    rb404a98 racc7ce4  
    6262void (* enable_irqs_function)(uint16_t irqmask) = NULL;
    6363void (* eoi_function)(void) = NULL;
     64const char *irqs_info = NULL;
    6465
    6566void istate_decode(istate_t *istate)
  • kernel/arch/ia32/include/interrupt.h

    rb404a98 racc7ce4  
    7474extern void (* enable_irqs_function)(uint16_t);
    7575extern void (* eoi_function)(void);
     76extern const char *irqs_info;
    7677
    7778extern void interrupt_init(void);
  • kernel/arch/ia32/src/drivers/i8259.c

    rb404a98 racc7ce4  
    8686        disable_irqs_function = pic_disable_irqs;
    8787        eoi_function = pic_eoi;
     88        irqs_info = "i8259";
    8889
    8990        pic_disable_irqs(0xffff);               /* disable all irq's */
  • kernel/arch/ia32/src/ia32.c

    rb404a98 racc7ce4  
    193193#endif
    194194       
    195         /*
    196          * This nasty hack should also go away ASAP.
    197          */
    198         trap_virtual_enable_irqs(1 << IRQ_DP8390);
     195        if (irqs_info != NULL)
     196                sysinfo_set_item_val(irqs_info, NULL, true);
     197       
    199198        sysinfo_set_item_val("netif.dp8390.inr", NULL, IRQ_DP8390);
    200199}
  • kernel/arch/ia32/src/interrupt.c

    rb404a98 racc7ce4  
    6262void (* enable_irqs_function)(uint16_t irqmask) = NULL;
    6363void (* eoi_function)(void) = NULL;
     64const char *irqs_info = NULL;
    6465
    6566void istate_decode(istate_t *istate)
  • kernel/arch/ia32/src/smp/apic.c

    rb404a98 racc7ce4  
    178178        disable_irqs_function = io_apic_disable_irqs;
    179179        eoi_function = l_apic_eoi;
     180        irqs_info = "apic";
    180181       
    181182        /*
Note: See TracChangeset for help on using the changeset viewer.