summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/i386/shared/irq/irq_init.c
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2016-05-06 17:55:29 +1000
committerChris Johns <chrisj@rtems.org>2016-05-11 11:45:01 +1000
commit93fb8797961f602ea70ac5b846a066b05db44b18 (patch)
tree5f0fa3a6427b178a0763ec8c6255895133e75214 /c/src/lib/libbsp/i386/shared/irq/irq_init.c
parenti386/pc386: Fix printk with the console changes. (diff)
downloadrtems-93fb8797961f602ea70ac5b846a066b05db44b18.tar.bz2
i386/pc386: Fix interrupt support.
Fix the interrupt and stop the spurious interrupt from happening. The fix moves the EOI to C code and cleans that functionality out of the asm part of the ISR handler. The code checks the ISR and IRR registers on the enable. Only ack the master for a slave IRQ if the slave has no other pending requests.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/i386/shared/irq/irq_init.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/i386/shared/irq/irq_init.c b/c/src/lib/libbsp/i386/shared/irq/irq_init.c
index fe8d7e7f9f..c401f29b71 100644
--- a/c/src/lib/libbsp/i386/shared/irq/irq_init.c
+++ b/c/src/lib/libbsp/i386/shared/irq/irq_init.c
@@ -66,7 +66,7 @@ static int raw_not_connected(
static rtems_raw_irq_connect_data idtHdl[IDT_SIZE];
-static rtems_raw_irq_hdl rtemsIrq[BSP_IRQ_LINES_NUMBER] = {
+static rtems_raw_irq_hdl rtemsIrq[BSP_IRQ_VECTOR_NUMBER] = {
rtems_irq_prologue_0,
rtems_irq_prologue_1,
rtems_irq_prologue_2,
@@ -149,7 +149,7 @@ void rtems_irq_mngt_init(void)
* Patch the entry that will be used by RTEMS for interrupt management
* with RTEMS prologue.
*/
- for (i = 0; i < BSP_IRQ_LINES_NUMBER; i++) {
+ for (i = 0; i < BSP_IRQ_VECTOR_NUMBER; i++) {
create_interrupt_gate_descriptor(&idtEntry, rtemsIrq[i]);
idt_entry_tbl[i + BSP_ASM_IRQ_VECTOR_BASE] = idtEntry;
}