forked from Imagelibrary/rtems
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.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
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>
|
2011-07-14 Jennifer Averett <Jennifer.Averett@OARcorp.com>
|
||||||
|
|
||||||
* shared/irq/apic.h, shared/smp/README, shared/smp/smp-imps.c,
|
* shared/irq/apic.h, shared/smp/README, shared/smp/smp-imps.c,
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ int BSP_irq_disable_at_i8259s (const rtems_irq_number irqLine)
|
|||||||
rtems_interrupt_level level;
|
rtems_interrupt_level level;
|
||||||
|
|
||||||
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
|
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
|
||||||
((int)irqLine > BSP_MAX_OFFSET )
|
((int)irqLine > BSP_MAX_ON_i8259S )
|
||||||
)
|
)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ int BSP_irq_enable_at_i8259s (const rtems_irq_number irqLine)
|
|||||||
rtems_interrupt_level level;
|
rtems_interrupt_level level;
|
||||||
|
|
||||||
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
|
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
|
||||||
((int)irqLine > BSP_MAX_OFFSET )
|
((int)irqLine > BSP_MAX_ON_i8259S )
|
||||||
)
|
)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ int BSP_irq_enabled_at_i8259s (const rtems_irq_number irqLine)
|
|||||||
unsigned short mask;
|
unsigned short mask;
|
||||||
|
|
||||||
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
|
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
|
||||||
((int)irqLine > BSP_MAX_OFFSET )
|
((int)irqLine > BSP_MAX_ON_i8259S )
|
||||||
)
|
)
|
||||||
return 1;
|
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)
|
int BSP_irq_ack_at_i8259s (const rtems_irq_number irqLine)
|
||||||
{
|
{
|
||||||
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
|
if ( ((int)irqLine < BSP_LOWEST_OFFSET) ||
|
||||||
((int)irqLine > BSP_MAX_OFFSET )
|
((int)irqLine > BSP_MAX_ON_i8259S )
|
||||||
)
|
)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@ static void compute_i8259_masks_from_prio (void)
|
|||||||
unsigned int i;
|
unsigned int i;
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
|
|
||||||
rtems_interrupt_disable(level); /* XXX */
|
rtems_interrupt_disable(level);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Always mask at least current interrupt to prevent re-entrance
|
* Always mask at least current interrupt to prevent re-entrance
|
||||||
|
|||||||
@@ -41,8 +41,9 @@ extern "C" {
|
|||||||
|
|
||||||
/* Base vector for our IRQ handlers. */
|
/* Base vector for our IRQ handlers. */
|
||||||
#define BSP_IRQ_VECTOR_BASE BSP_ASM_IRQ_VECTOR_BASE
|
#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_LOWEST_OFFSET 0
|
||||||
|
#define BSP_MAX_ON_i8259S (BSP_IRQ_LINES_NUMBER - 2)
|
||||||
#define BSP_MAX_OFFSET (BSP_IRQ_LINES_NUMBER - 1)
|
#define BSP_MAX_OFFSET (BSP_IRQ_LINES_NUMBER - 1)
|
||||||
/*
|
/*
|
||||||
* Interrupt offset in comparison to BSP_ASM_IRQ_VECTOR_BASE
|
* Interrupt offset in comparison to BSP_ASM_IRQ_VECTOR_BASE
|
||||||
@@ -56,6 +57,7 @@ extern "C" {
|
|||||||
#define BSP_UART_COM1_IRQ 4
|
#define BSP_UART_COM1_IRQ 4
|
||||||
#define BSP_RT_TIMER1 8
|
#define BSP_RT_TIMER1 8
|
||||||
#define BSP_RT_TIMER3 10
|
#define BSP_RT_TIMER3 10
|
||||||
|
#define BSP_SMP_IPI 16
|
||||||
|
|
||||||
#define BSP_INTERRUPT_VECTOR_MIN BSP_LOWEST_OFFSET
|
#define BSP_INTERRUPT_VECTOR_MIN BSP_LOWEST_OFFSET
|
||||||
#define BSP_INTERRUPT_VECTOR_MAX BSP_MAX_OFFSET
|
#define BSP_INTERRUPT_VECTOR_MAX BSP_MAX_OFFSET
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ extern void rtems_irq_prologue_12(void);
|
|||||||
extern void rtems_irq_prologue_13(void);
|
extern void rtems_irq_prologue_13(void);
|
||||||
extern void rtems_irq_prologue_14(void);
|
extern void rtems_irq_prologue_14(void);
|
||||||
extern void rtems_irq_prologue_15(void);
|
extern void rtems_irq_prologue_15(void);
|
||||||
|
extern void rtems_irq_prologue_16(void);
|
||||||
/*
|
/*
|
||||||
* default vectors
|
* default vectors
|
||||||
*/
|
*/
|
||||||
@@ -80,7 +81,8 @@ static rtems_raw_irq_hdl rtemsIrq[BSP_IRQ_LINES_NUMBER] = {
|
|||||||
rtems_irq_prologue_12,
|
rtems_irq_prologue_12,
|
||||||
rtems_irq_prologue_13,
|
rtems_irq_prologue_13,
|
||||||
rtems_irq_prologue_14,
|
rtems_irq_prologue_14,
|
||||||
rtems_irq_prologue_15
|
rtems_irq_prologue_15,
|
||||||
|
rtems_irq_prologue_16,
|
||||||
};
|
};
|
||||||
|
|
||||||
static rtems_raw_irq_connect_data defaultRawIrq = {
|
static rtems_raw_irq_connect_data defaultRawIrq = {
|
||||||
|
|||||||
Reference in New Issue
Block a user