Changeset 124bc22 in mainline for kernel/arch/mips32/src/mach
- Timestamp:
- 2019-04-04T18:08:51Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5d97627
- Parents:
- e064102
- Location:
- kernel/arch/mips32/src/mach
- Files:
-
- 2 edited
-
malta/malta.c (modified) (4 diffs)
-
msim/msim.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/mips32/src/mach/malta/malta.c
re064102 r124bc22 42 42 #include <genarch/srln/srln.h> 43 43 #include <arch/interrupt.h> 44 #include <stdbool.h> 45 #include <byteorder.h> 46 #include <log.h> 44 47 45 48 static void malta_init(void); … … 68 71 #endif 69 72 70 #ifdef CONFIG_NS16550 71 static void tty_clear_interrupt(void *arg, inr_t inr) 73 static void malta_isa_irq_handler(unsigned int i) 72 74 { 73 (void) pio_read_8((ioport8_t *) GT64120_PCI0_INTACK); 75 uint8_t isa_irq = host2uint32_t_le(pio_read_32(GT64120_PCI0_INTACK)); 76 irq_t *irq = irq_dispatch_and_lock(isa_irq); 77 if (irq) { 78 irq->handler(irq); 79 irq_spinlock_unlock(&irq->lock, false); 80 } else { 81 #ifdef CONFIG_DEBUG 82 log(LF_ARCH, LVL_DEBUG, "cpu%u: spurious IRQ (irq=%u)", 83 CPU->id, isa_irq); 84 #endif 85 } 74 86 pic_eoi(); 75 87 } 76 #endif77 88 78 89 void malta_init(void) 79 90 { 91 irq_init(16, 16); 92 80 93 i8259_init((i8259_t *) PIC0_BASE, (i8259_t *) PIC1_BASE, 2, 0, 8); 94 95 int_handler[INT_HW0] = malta_isa_irq_handler; 96 cp0_unmask_int(INT_HW0); 81 97 82 98 #if (defined(CONFIG_NS16550) || defined(CONFIG_NS16550_OUT)) … … 86 102 outdev_t **tty_out_ptr = NULL; 87 103 #endif 88 tty_instance = ns16550_init((ioport8_t *) TTY_BASE, 0, TTY_ CPU_INT,89 tty_clear_interrupt, NULL, tty_out_ptr);104 tty_instance = ns16550_init((ioport8_t *) TTY_BASE, 0, TTY_ISA_IRQ, 105 NULL, NULL, tty_out_ptr); 90 106 #endif 91 107 } … … 121 137 ns16550_wire(tty_instance, srln); 122 138 pic_enable_irqs(1 << TTY_ISA_IRQ); 123 cp0_unmask_int(TTY_CPU_INT);124 139 } 125 140 } -
kernel/arch/mips32/src/mach/msim/msim.c
re064102 r124bc22 41 41 #include <genarch/drivers/dsrln/dsrlnout.h> 42 42 #include <genarch/srln/srln.h> 43 #include <stdbool.h> 43 44 44 45 static void msim_init(void); … … 60 61 }; 61 62 63 static void msim_irq_handler(unsigned int i) 64 { 65 irq_t *irq = irq_dispatch_and_lock(i); 66 if (irq) { 67 irq->handler(irq); 68 irq_spinlock_unlock(&irq->lock, false); 69 } else { 70 #ifdef CONFIG_DEBUG 71 log(LF_ARCH, LVL_DEBUG, "cpu%u: spurious IRQ (irq=%u)", 72 CPU->id, i); 73 #endif 74 } 75 } 76 62 77 void msim_init(void) 63 78 { 79 irq_init(HW_INTERRUPTS, HW_INTERRUPTS); 80 81 int_handler[INT_HW0] = msim_irq_handler; 82 int_handler[INT_HW1] = msim_irq_handler; 83 int_handler[INT_HW2] = msim_irq_handler; 84 int_handler[INT_HW3] = msim_irq_handler; 85 int_handler[INT_HW4] = msim_irq_handler; 86 64 87 dorder_init(); 65 88 cp0_unmask_int(MSIM_DDISK_IRQ);
Note:
See TracChangeset
for help on using the changeset viewer.
