summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/i386/i386ex
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1998-08-05 15:15:46 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1998-08-05 15:15:46 +0000
commitab0df696d09f6b53b33345d207f8aead63a6fcab (patch)
treee446f792382e49b1169482837cd842a82fb2350b /c/src/lib/libbsp/i386/i386ex
parentFixed name of Buffer so this would compile. (diff)
downloadrtems-ab0df696d09f6b53b33345d207f8aead63a6fcab.tar.bz2
Automatic CPU type detection code from Eric Valette <valette@crf.canon.fr>.
Enabled on the pc386.
Diffstat (limited to 'c/src/lib/libbsp/i386/i386ex')
-rw-r--r--c/src/lib/libbsp/i386/i386ex/include/bsp.h7
-rw-r--r--c/src/lib/libbsp/i386/i386ex/startup/setvec.c8
2 files changed, 7 insertions, 8 deletions
diff --git a/c/src/lib/libbsp/i386/i386ex/include/bsp.h b/c/src/lib/libbsp/i386/i386ex/include/bsp.h
index 896f4e5cc3..9c37d8248e 100644
--- a/c/src/lib/libbsp/i386/i386ex/include/bsp.h
+++ b/c/src/lib/libbsp/i386/i386ex/include/bsp.h
@@ -116,8 +116,11 @@ extern "C" {
extern rtems_configuration_table BSP_Configuration;
-extern i386_IDT_slot Interrupt_descriptor_table[ 256 ];
-extern i386_GDT_slot Global_descriptor_table[ 8192 ];
+#define IDT_SIZE 256
+#define GDT_SIZE 8192
+
+extern interrupt_gate_descriptor Interrupt_descriptor_table[IDT_SIZE];
+extern segment_descriptors Global_descriptor_table [GDT_SIZE];
BSP_EXTERN unsigned short Idt[3]; /* Interrupt Descriptor Table Address */
BSP_EXTERN unsigned short Gdt[3]; /* Global Descriptor Table Address */
diff --git a/c/src/lib/libbsp/i386/i386ex/startup/setvec.c b/c/src/lib/libbsp/i386/i386ex/startup/setvec.c
index 62b9494ab8..9e7a0e758d 100644
--- a/c/src/lib/libbsp/i386/i386ex/startup/setvec.c
+++ b/c/src/lib/libbsp/i386/i386ex/startup/setvec.c
@@ -32,7 +32,7 @@ i386_isr_entry set_vector( /* returns old vector */
)
{
i386_isr_entry previous_isr;
- i386_IDT_slot idt;
+ interrupt_gate_descriptor idt;
if ( type )
rtems_interrupt_catch( handler, vector, (rtems_isr_entry *) &previous_isr );
@@ -45,11 +45,7 @@ i386_isr_entry set_vector( /* returns old vector */
((idt.offset_16_31 << 16) | idt.offset_0_15);
/* build the IDT entry */
- idt.offset_0_15 = ((rtems_unsigned32) handler) & 0xffff;
- idt.segment_selector = get_cs();
- idt.reserved = 0x00;
- idt.p_dpl = 0x8e; /* present, ISR */
- idt.offset_16_31 = ((rtems_unsigned32) handler) >> 16;
+ create_interrupt_gate_descriptor( &idt, handler );
/* install the IDT entry */
Interrupt_descriptor_table[ vector ] = idt;