bsps/irq: bsp_interrupt_vector_disable()

Return a status code for bsp_interrupt_vector_disable().

Update #3269.
This commit is contained in:
Sebastian Huber
2021-06-29 14:06:03 +02:00
parent bc86a5fa84
commit 32f5a195d7
37 changed files with 94 additions and 45 deletions

View File

@@ -150,7 +150,7 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
uint32_t mask, cur; uint32_t mask, cur;
uint32_t mir_reg = omap_get_mir_reg(vector, &mask); uint32_t mir_reg = omap_get_mir_reg(vector, &mask);
@@ -160,6 +160,7 @@ void bsp_interrupt_vector_disable(rtems_vector_number vector)
cur = mmio_read(omap_intr.base + mir_reg); cur = mmio_read(omap_intr.base + mir_reg);
mmio_write(omap_intr.base + mir_reg, cur | mask); mmio_write(omap_intr.base + mir_reg, cur | mask);
flush_data_cache(); flush_data_cache();
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -78,12 +78,14 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
if (vector < MC9328MXL_NUM_INTS) if (vector < MC9328MXL_NUM_INTS)
MC9328MXL_AITC_INTDISNUM = vector; MC9328MXL_AITC_INTDISNUM = vector;
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -76,10 +76,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
AIC_CTL_REG(AIC_IDCR) = 1 << vector; AIC_CTL_REG(AIC_IDCR) = 1 << vector;
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -97,7 +97,7 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
@@ -121,6 +121,8 @@ void bsp_interrupt_vector_disable(rtems_vector_number vector)
/* interrupt managed by INTMR3 and INTSR3 */ /* interrupt managed by INTMR3 and INTSR3 */
*EP7312_INTMR3 &= ~(1 << (vector - 21)); *EP7312_INTMR3 &= ~(1 << (vector - 21));
} }
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -73,10 +73,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
XSCALE_INT_ICMR &= ~(1 << vector); XSCALE_INT_ICMR &= ~(1 << vector);
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -113,10 +113,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
VICIntEnClear = 1U << vector; VICIntEnClear = 1U << vector;
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -316,7 +316,7 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
rtems_interrupt_level level; rtems_interrupt_level level;
@@ -326,6 +326,8 @@ void bsp_interrupt_vector_disable(rtems_vector_number vector)
lpc32xx_irq_clear_bit_in_field(vector, &lpc32xx_irq_enable); lpc32xx_irq_clear_bit_in_field(vector, &lpc32xx_irq_enable);
lpc32xx_irq_clear_bit_in_register(vector, LPC32XX_IRQ_OFFSET_ER); lpc32xx_irq_clear_bit_in_register(vector, LPC32XX_IRQ_OFFSET_ER);
rtems_interrupt_enable(level); rtems_interrupt_enable(level);
return RTEMS_SUCCESSFUL;
} }
void lpc32xx_set_exception_handler( void lpc32xx_set_exception_handler(

View File

@@ -204,11 +204,12 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
BCM2835_REG(bsp_vector_to_reg(vector)->disable_reg_addr) = BCM2835_REG(bsp_vector_to_reg(vector)->disable_reg_addr) =
bsp_vector_to_mask(vector); bsp_vector_to_mask(vector);
return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_handler_default(rtems_vector_number vector) void bsp_interrupt_handler_default(rtems_vector_number vector)

View File

@@ -75,10 +75,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
VICIntEnClr = 1 << vector; VICIntEnClr = 1 << vector;
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -87,10 +87,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
_ARMV7M_NVIC_Clear_enable((int) vector); _ARMV7M_NVIC_Clear_enable((int) vector);
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -75,9 +75,10 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -156,12 +156,13 @@ rtems_status_code bsp_interrupt_vector_enable(
* @retval RTEMS_INVALID_ID vector is invalid. * @retval RTEMS_INVALID_ID vector is invalid.
* @retval RTEMS_SUCCESSFUL interrupt source disabled. * @retval RTEMS_SUCCESSFUL interrupt source disabled.
*/ */
void bsp_interrupt_vector_disable( rtems_status_code bsp_interrupt_vector_disable(
rtems_vector_number vector rtems_vector_number vector
) )
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
TMS570_VIM.REQENACLR[vector >> 5] = 1 << (vector & 0x1f); TMS570_VIM.REQENACLR[vector >> 5] = 1 << (vector & 0x1f);
return RTEMS_SUCCESSFUL;
} }
/** /**

View File

@@ -319,10 +319,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
BSP_irq_disable_at_i8259a(vector); BSP_irq_disable_at_i8259a(vector);
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -278,7 +278,7 @@ rtems_status_code bsp_interrupt_vector_is_enabled(
rtems_status_code bsp_interrupt_vector_enable( rtems_vector_number vector ); rtems_status_code bsp_interrupt_vector_enable( rtems_vector_number vector );
/** /**
* @brief Disables the interrupt vector with number @a vector. * @brief Disables the interrupt vector.
* *
* This function shall disable the vector at the corresponding facility (in * This function shall disable the vector at the corresponding facility (in
* most cases the interrupt controller). It will be called then the last * most cases the interrupt controller). It will be called then the last
@@ -286,13 +286,17 @@ rtems_status_code bsp_interrupt_vector_enable( rtems_vector_number vector );
* example. * example.
* *
* @note The implementation should use * @note The implementation should use
* bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)) to valdiate the * bsp_interrupt_assert( bsp_interrupt_is_valid_vector( vector ) ) to validate
* vector number. * the vector number in ::RTEMS_DEBUG configurations.
* *
* @note You must not install or remove an interrupt handler in this function. * @param vector is the interrupt vector number.
* This may result in a deadlock. *
* @retval ::RTEMS_SUCCESSFUL The requested operation was successful.
*
* @retval ::RTEMS_UNSATISFIED The request to disable the interrupt vector has
* not been satisfied.
*/ */
void bsp_interrupt_vector_disable(rtems_vector_number vector); rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number vector );
/** /**
* @brief Checks if the interrupt is pending. * @brief Checks if the interrupt is pending.

View File

@@ -66,8 +66,9 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
lm32_interrupt_mask(1 << vector); lm32_interrupt_mask(1 << vector);
return RTEMS_SUCCESSFUL;
} }

View File

@@ -116,7 +116,7 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
volatile uint32_t *imr = vector_to_imr(vector); volatile uint32_t *imr = vector_to_imr(vector);
uint32_t bit = vector_to_bit(vector); uint32_t bit = vector_to_bit(vector);
@@ -127,6 +127,8 @@ void bsp_interrupt_vector_disable(rtems_vector_number vector)
rtems_interrupt_disable(level); rtems_interrupt_disable(level);
*imr |= bit; *imr |= bit;
rtems_interrupt_enable(level); rtems_interrupt_enable(level);
return RTEMS_SUCCESSFUL;
} }
static void_func get_exception_handler(rtems_vector_number vector) static void_func get_exception_handler(rtems_vector_number vector)

View File

@@ -115,9 +115,10 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -436,7 +436,7 @@ rtems_status_code bsp_interrupt_vector_enable( rtems_vector_number vector)
/* /*
* This function disables a given siu interrupt * This function disables a given siu interrupt
*/ */
void bsp_interrupt_vector_disable( rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number vector)
{ {
int base_index = get_siu_irq_base_index( vector); int base_index = get_siu_irq_base_index( vector);
@@ -464,6 +464,8 @@ void bsp_interrupt_vector_disable( rtems_vector_number vector)
rtems_interrupt_enable( level); rtems_interrupt_enable( level);
} }
return RTEMS_SUCCESSFUL;
} }
#if (BENCHMARK_IRQ_PROCESSING == 0) #if (BENCHMARK_IRQ_PROCESSING == 0)

View File

@@ -440,7 +440,7 @@ rtems_status_code bsp_interrupt_vector_enable( rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable( rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number vector)
{ {
rtems_vector_number vecnum = vector - BSP_IPIC_IRQ_LOWEST_OFFSET; rtems_vector_number vecnum = vector - BSP_IPIC_IRQ_LOWEST_OFFSET;
const BSP_isrc_rsc_t *rsc_ptr; const BSP_isrc_rsc_t *rsc_ptr;
@@ -458,6 +458,8 @@ void bsp_interrupt_vector_disable( rtems_vector_number vector)
rtems_interrupt_enable(level); rtems_interrupt_enable(level);
} }
} }
return RTEMS_SUCCESSFUL;
} }
/* /*

View File

@@ -201,8 +201,9 @@ rtems_status_code bsp_interrupt_vector_enable( rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable( rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
mpc55xx_intc_set_priority( vector, MPC55XX_INTC_DISABLED_PRIORITY); mpc55xx_intc_set_priority( vector, MPC55XX_INTC_DISABLED_PRIORITY);
return RTEMS_SUCCESSFUL;
} }

View File

@@ -384,7 +384,7 @@ rtems_status_code bsp_interrupt_vector_enable( rtems_vector_number irqnum)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable( rtems_vector_number irqnum) rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number irqnum)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(irqnum)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(irqnum));
@@ -394,6 +394,8 @@ void bsp_interrupt_vector_disable( rtems_vector_number irqnum)
*/ */
BSP_irq_disable_at_cpm (irqnum); BSP_irq_disable_at_cpm (irqnum);
} }
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize() rtems_status_code bsp_interrupt_facility_initialize()

View File

@@ -151,10 +151,11 @@ rtems_status_code bsp_interrupt_vector_enable( rtems_vector_number irqnum)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable( rtems_vector_number irqnum) rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number irqnum)
{ {
/* FIXME: do something */ /* FIXME: do something */
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(irqnum)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(irqnum));
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -87,10 +87,11 @@ rtems_status_code bsp_interrupt_vector_enable( rtems_vector_number irqnum)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable( rtems_vector_number irqnum) rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number irqnum)
{ {
/* FIXME: do something */ /* FIXME: do something */
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(irqnum)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(irqnum));
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -137,10 +137,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
ev_int_set_mask(vector, 1); ev_int_set_mask(vector, 1);
return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_dispatch(uintptr_t exception_number) void bsp_interrupt_dispatch(uintptr_t exception_number)
@@ -403,9 +404,10 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
pic_vector_enable(vector, VPR_MSK); pic_vector_enable(vector, VPR_MSK);
return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_dispatch(uintptr_t exception_number) void bsp_interrupt_dispatch(uintptr_t exception_number)

View File

@@ -144,10 +144,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
BSP_disable_irq_at_pic(vector); BSP_disable_irq_at_pic(vector);
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -73,9 +73,10 @@ void bsp_interrupt_dispatch(uintptr_t exception_number)
} }
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -118,7 +118,7 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
@@ -127,6 +127,8 @@ void bsp_interrupt_vector_disable(rtems_vector_number vector)
} else if (BSP_IS_SIU_IRQ(vector)) { } else if (BSP_IS_SIU_IRQ(vector)) {
bsp_irq_disable_at_SIU(vector); bsp_irq_disable_at_SIU(vector);
} }
return RTEMS_SUCCESSFUL;
} }
/* /*

View File

@@ -185,13 +185,15 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
if (BSP_IS_OPBINTC_IRQ(vector)) { if (BSP_IS_OPBINTC_IRQ(vector)) {
BSP_irq_disable_at_opbintc(vector); BSP_irq_disable_at_opbintc(vector);
} }
return RTEMS_SUCCESSFUL;
} }
static int C_dispatch_irq_handler(BSP_Exception_frame *frame, unsigned int excNum) static int C_dispatch_irq_handler(BSP_Exception_frame *frame, unsigned int excNum)

View File

@@ -148,11 +148,12 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
int irq = (int)vector; int irq = (int)vector;
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
GRLIB_Cpu_Mask_interrupt(irq, bsp_irq_cpu(irq)); GRLIB_Cpu_Mask_interrupt(irq, bsp_irq_cpu(irq));
return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_get_affinity( void bsp_interrupt_get_affinity(

View File

@@ -323,7 +323,7 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
@@ -363,6 +363,8 @@ void bsp_interrupt_vector_disable(rtems_vector_number vector)
rtems_interrupt_lock_release(&riscv_plic_lock, &lock_context); rtems_interrupt_lock_release(&riscv_plic_lock, &lock_context);
} }
return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_set_affinity( void bsp_interrupt_set_affinity(

View File

@@ -127,13 +127,14 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
volatile gic_dist *dist = ARM_GIC_DIST; volatile gic_dist *dist = ARM_GIC_DIST;
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
gic_id_disable(dist, vector); gic_id_disable(dist, vector);
return RTEMS_SUCCESSFUL;
} }
static inline uint32_t get_id_count(volatile gic_dist *dist) static inline uint32_t get_id_count(volatile gic_dist *dist)

View File

@@ -243,7 +243,7 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
@@ -255,6 +255,8 @@ void bsp_interrupt_vector_disable(rtems_vector_number vector)
gicv3_get_sgi_ppi(_SMP_Get_current_processor()); gicv3_get_sgi_ppi(_SMP_Get_current_processor());
sgi_ppi->icspicer[0] = 1 << (vector % 32); sgi_ppi->icspicer[0] = 1 << (vector % 32);
} }
return RTEMS_SUCCESSFUL;
} }
static inline uint32_t get_id_count(volatile gic_dist *dist) static inline uint32_t get_id_count(volatile gic_dist *dist)

View File

@@ -86,10 +86,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_UNSATISFIED; return RTEMS_UNSATISFIED;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
(void)vector; (void)vector;
return RTEMS_UNSATISFIED;
} }
rtems_status_code bsp_interrupt_facility_initialize(void) rtems_status_code bsp_interrupt_facility_initialize(void)

View File

@@ -97,7 +97,5 @@ rtems_status_code rtems_interrupt_vector_disable( rtems_vector_number vector )
return RTEMS_INVALID_ID; return RTEMS_INVALID_ID;
} }
bsp_interrupt_vector_disable( vector ); return bsp_interrupt_vector_disable( vector );
return RTEMS_SUCCESSFUL;
} }

View File

@@ -167,7 +167,7 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
#if defined(RTEMS_SMP) #if defined(RTEMS_SMP)
rtems_interrupt_lock_context lock_context; rtems_interrupt_lock_context lock_context;
@@ -192,6 +192,7 @@ void bsp_interrupt_vector_disable(rtems_vector_number vector)
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
BSP_Cpu_Mask_interrupt(vector, _LEON3_Get_current_processor()); BSP_Cpu_Mask_interrupt(vector, _LEON3_Get_current_processor());
#endif #endif
return RTEMS_SUCCESSFUL;
} }
#if defined(RTEMS_SMP) #if defined(RTEMS_SMP)

View File

@@ -92,10 +92,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
BSP_Cpu_Mask_interrupt(vector, 0); BSP_Cpu_Mask_interrupt(vector, 0);
return RTEMS_SUCCESSFUL;
} }
#endif #endif

View File

@@ -141,9 +141,10 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
{ {
/* XXX */ /* XXX */
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_get_attributes( rtems_status_code bsp_interrupt_get_attributes(