From 40a9f29c441cbae2d574c075579c811d07e892e7 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Thu, 27 Jul 2017 21:41:59 +0200 Subject: work on rtl8139 driver, can trigger interrupts now --- src/hardware/interrupts.asm | 2 ++ src/hardware/interrupts.c | 10 +++++++++- src/hardware/interrupts.h | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src/hardware') diff --git a/src/hardware/interrupts.asm b/src/hardware/interrupts.asm index 95d33f9..a734898 100644 --- a/src/hardware/interrupts.asm +++ b/src/hardware/interrupts.asm @@ -60,6 +60,8 @@ interrupts_handle_irq_%1: irq_stub 0x00 irq_stub 0x01 +irq_stub 0x09 +irq_stub 0x0A irq_stub 0x0B irq_stub 0x0C diff --git a/src/hardware/interrupts.c b/src/hardware/interrupts.c index 41433a5..faca1fd 100644 --- a/src/hardware/interrupts.c +++ b/src/hardware/interrupts.c @@ -109,7 +109,15 @@ void interrupts_init( interrupt_t *interrupt, uint16_t gdt_code_segment_selector interrupts_register_interrupt_gate( interrupt, IRQ_BASE + 0x01, gdt_code_segment_selector, &interrupts_handle_irq_0x01, KERNEL_RING, IDT_TYPE_INTERRUPT_GATE ); - // IRQ 11 - PCI, at the moment the RTL8139 + // IRQ 9 - PCI peripheral + interrupts_register_interrupt_gate( interrupt, IRQ_BASE + 0x09, gdt_code_segment_selector, + &interrupts_handle_irq_0x09, KERNEL_RING, IDT_TYPE_INTERRUPT_GATE ); + + // IRQ 10 - PCI peripheral + interrupts_register_interrupt_gate( interrupt, IRQ_BASE + 0x0A, gdt_code_segment_selector, + &interrupts_handle_irq_0x0A, KERNEL_RING, IDT_TYPE_INTERRUPT_GATE ); + + // IRQ 11 - PCI peripheral interrupts_register_interrupt_gate( interrupt, IRQ_BASE + 0x0B, gdt_code_segment_selector, &interrupts_handle_irq_0x0B, KERNEL_RING, IDT_TYPE_INTERRUPT_GATE ); diff --git a/src/hardware/interrupts.h b/src/hardware/interrupts.h index f93fa44..66f5d8e 100644 --- a/src/hardware/interrupts.h +++ b/src/hardware/interrupts.h @@ -103,6 +103,8 @@ void interrupts_ignore_request( ); void interrupts_handle_exception_0x00( ); void interrupts_handle_irq_0x00( ); void interrupts_handle_irq_0x01( ); +void interrupts_handle_irq_0x09( ); +void interrupts_handle_irq_0x0A( ); void interrupts_handle_irq_0x0B( ); void interrupts_handle_irq_0x0C( ); -- cgit v1.2.3-54-g00ecf