summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJennifer Averett <Jennifer.Averett@OARcorp.com>2011-07-14 17:30:28 +0000
committerJennifer Averett <Jennifer.Averett@OARcorp.com>2011-07-14 17:30:28 +0000
commitad2cefe0c01cac68c40e61733fc0ec82747bd228 (patch)
tree33216daa22aa09f29139e46d1401718221426e43 /c
parent2011-07-14 Jennifer Averett <Jennifer.Averett@OARcorp.com> (diff)
downloadrtems-ad2cefe0c01cac68c40e61733fc0ec82747bd228.tar.bz2
2011-07-14 Jennifer Averett <Jennifer.Averett@OARcorp.com>
* shared/irq/irq.c, shared/irq/irq.h, shared/irq/irq_init.c: Add initial support for APIC.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/i386/ChangeLog5
-rw-r--r--c/src/lib/libbsp/i386/shared/irq/irq.c10
-rw-r--r--c/src/lib/libbsp/i386/shared/irq/irq.h4
-rw-r--r--c/src/lib/libbsp/i386/shared/irq/irq_init.c4
4 files changed, 16 insertions, 7 deletions
diff --git a/c/src/lib/libbsp/i386/ChangeLog b/c/src/lib/libbsp/i386/ChangeLog
index 63aea10156..3bba056a4a 100644
--- a/c/src/lib/libbsp/i386/ChangeLog
+++ b/c/src/lib/libbsp/i386/ChangeLog
@@ -1,5 +1,10 @@
2011-07-14 Jennifer Averett <Jennifer.Averett@OARcorp.com>
+ * shared/irq/irq.c, shared/irq/irq.h, shared/irq/irq_init.c: Add
+ initial support for APIC.
+
+2011-07-14 Jennifer Averett <Jennifer.Averett@OARcorp.com>
+
* shared/irq/apic.h, shared/smp/README, shared/smp/smp-imps.c,
shared/smp/smp-imps.h: New files.
diff --git a/c/src/lib/libbsp/i386/shared/irq/irq.c b/c/src/lib/libbsp/i386/shared/irq/irq.c
index 4e41789791..e04f14f424 100644
--- a/c/src/lib/libbsp/i386/shared/irq/irq.c
+++ b/c/src/lib/libbsp/i386/shared/irq/irq.c
@@ -73,7 +73,7 @@ int BSP_irq_disable_at_i8259s (const rtems_irq_number irqLine)
rtems_interrupt_level level;
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
- ((int)irqLine > BSP_MAX_OFFSET )
+ ((int)irqLine > BSP_MAX_ON_i8259S )
)
return 1;
@@ -108,7 +108,7 @@ int BSP_irq_enable_at_i8259s (const rtems_irq_number irqLine)
rtems_interrupt_level level;
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
- ((int)irqLine > BSP_MAX_OFFSET )
+ ((int)irqLine > BSP_MAX_ON_i8259S )
)
return 1;
@@ -135,7 +135,7 @@ int BSP_irq_enabled_at_i8259s (const rtems_irq_number irqLine)
unsigned short mask;
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
- ((int)irqLine > BSP_MAX_OFFSET )
+ ((int)irqLine > BSP_MAX_ON_i8259S )
)
return 1;
@@ -153,7 +153,7 @@ int BSP_irq_enabled_at_i8259s (const rtems_irq_number irqLine)
int BSP_irq_ack_at_i8259s (const rtems_irq_number irqLine)
{
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
- ((int)irqLine > BSP_MAX_OFFSET )
+ ((int)irqLine > BSP_MAX_ON_i8259S )
)
return 1;
@@ -190,7 +190,7 @@ static void compute_i8259_masks_from_prio (void)
unsigned int i;
unsigned int j;
- rtems_interrupt_disable(level); /* XXX */
+ rtems_interrupt_disable(level);
/*
* Always mask at least current interrupt to prevent re-entrance
diff --git a/c/src/lib/libbsp/i386/shared/irq/irq.h b/c/src/lib/libbsp/i386/shared/irq/irq.h
index ff78ae71ad..a781799f37 100644
--- a/c/src/lib/libbsp/i386/shared/irq/irq.h
+++ b/c/src/lib/libbsp/i386/shared/irq/irq.h
@@ -41,8 +41,9 @@ extern "C" {
/* Base vector for our IRQ handlers. */
#define BSP_IRQ_VECTOR_BASE BSP_ASM_IRQ_VECTOR_BASE
-#define BSP_IRQ_LINES_NUMBER 16
+#define BSP_IRQ_LINES_NUMBER 17
#define BSP_LOWEST_OFFSET 0
+#define BSP_MAX_ON_i8259S (BSP_IRQ_LINES_NUMBER - 2)
#define BSP_MAX_OFFSET (BSP_IRQ_LINES_NUMBER - 1)
/*
* Interrupt offset in comparison to BSP_ASM_IRQ_VECTOR_BASE
@@ -56,6 +57,7 @@ extern "C" {
#define BSP_UART_COM1_IRQ 4
#define BSP_RT_TIMER1 8
#define BSP_RT_TIMER3 10
+#define BSP_SMP_IPI 16
#define BSP_INTERRUPT_VECTOR_MIN BSP_LOWEST_OFFSET
#define BSP_INTERRUPT_VECTOR_MAX BSP_MAX_OFFSET
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 b5057c4453..798d57a35b 100644
--- a/c/src/lib/libbsp/i386/shared/irq/irq_init.c
+++ b/c/src/lib/libbsp/i386/shared/irq/irq_init.c
@@ -40,6 +40,7 @@ extern void rtems_irq_prologue_12(void);
extern void rtems_irq_prologue_13(void);
extern void rtems_irq_prologue_14(void);
extern void rtems_irq_prologue_15(void);
+extern void rtems_irq_prologue_16(void);
/*
* default vectors
*/
@@ -80,7 +81,8 @@ static rtems_raw_irq_hdl rtemsIrq[BSP_IRQ_LINES_NUMBER] = {
rtems_irq_prologue_12,
rtems_irq_prologue_13,
rtems_irq_prologue_14,
- rtems_irq_prologue_15
+ rtems_irq_prologue_15,
+ rtems_irq_prologue_16,
};
static rtems_raw_irq_connect_data defaultRawIrq = {