From 8a496e462e37f78fbbd20009f036623f062ccea1 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 23 Sep 1998 13:20:34 +0000 Subject: Patch from Aleksey (Quality Quorum ): 1. Finally fixes raw interrupts for pc386 2. Makes some minor cleanup in console and startup 3. Makes rtems_termios_dequeue_characters() to return count of outstanding chars - it allows to simplify console isrs a little bit. 4. pc386 uart modified to be friendlier to termios parameter changes, to have minor performance improvement and to take advantage of of above termios modification. --- c/src/lib/libbsp/i386/shared/irq/irq_init.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'c/src/lib/libbsp/i386/shared/irq/irq_init.c') 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 4199d30488..ee6967d8d9 100644 --- a/c/src/lib/libbsp/i386/shared/irq/irq_init.c +++ b/c/src/lib/libbsp/i386/shared/irq/irq_init.c @@ -116,22 +116,30 @@ void rtems_irq_mngt_init() { int i; interrupt_gate_descriptor* idt_entry_tbl; - unsigned limit; + unsigned int limit; unsigned int level; - i386_get_info_from_IDTR (&idt_entry_tbl, &limit); - /* Convert limit into number of entries */ - limit = (limit + 1) / sizeof(interrupt_gate_descriptor); + i386_get_info_from_IDTR(&idt_entry_tbl, &limit); + + /* Convert into number of entries */ + limit = (limit + 1)/sizeof(interrupt_gate_descriptor); + + if(limit != IDT_SIZE) { + printk("IDT table size mismatch !!! System locked\n"); + while(1); + } + _CPU_ISR_Disable(level); /* * Init the complete IDT vector table with defaultRawIrq value */ - for (i = 0; i < limit; i++) { + for (i = 0; i < IDT_SIZE ; i++) { idtHdl[i] = defaultRawIrq; idtHdl[i].idtIndex = i; } + raw_initial_config.idtSize = IDT_SIZE; raw_initial_config.defaultRawEntry = defaultRawIrq; raw_initial_config.rawIrqHdlTbl = idtHdl; -- cgit v1.2.3