diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-09-23 13:20:34 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-09-23 13:20:34 +0000 |
commit | 8a496e462e37f78fbbd20009f036623f062ccea1 (patch) | |
tree | 439d94e57e7aac3fc654885307c5c80c7fb564a9 /c/src/lib/libbsp/i386/shared/irq/irq_init.c | |
parent | Switched "NEW_GAS" flag. (diff) | |
download | rtems-8a496e462e37f78fbbd20009f036623f062ccea1.tar.bz2 |
Patch from Aleksey (Quality Quorum <qqi@world.std.com>):
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.
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/i386/shared/irq/irq_init.c | 18 |
1 files changed, 13 insertions, 5 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 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; |