mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-05 15:15:44 +00:00
bsps/irq: bsp_interrupt_facility_initialize()
Do not return a status code in bsp_interrupt_facility_initialize() since this leads to unreachable code in bsp_interrupt_initialize(). Use RTEMS_DEBUG assertions in bsp_interrupt_facility_initialize() if necessary.
This commit is contained in:
@@ -163,7 +163,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
uint32_t intc_ilrx;
|
uint32_t intc_ilrx;
|
||||||
@@ -183,6 +183,4 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
/* Install generic interrupt handler */
|
/* Install generic interrupt handler */
|
||||||
arm_cp15_set_exception_handler(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt);
|
arm_cp15_set_exception_handler(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt);
|
||||||
arm_cp15_set_vector_base_address(bsp_vector_table_begin);
|
arm_cp15_set_vector_base_address(bsp_vector_table_begin);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,10 +88,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
unsigned long i = 0;
|
unsigned long i = 0;
|
||||||
|
|
||||||
@@ -95,6 +95,4 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
AIC_CTL_REG(AIC_IDCR) = 0xffffffff;
|
AIC_CTL_REG(AIC_IDCR) = 0xffffffff;
|
||||||
|
|
||||||
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
uint32_t int_stat = 0;
|
uint32_t int_stat = 0;
|
||||||
|
|
||||||
@@ -221,6 +221,4 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
int_stat = *EP7312_INTSR3;
|
int_stat = *EP7312_INTSR3;
|
||||||
|
|
||||||
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
/* disable all interrupts */
|
/* disable all interrupts */
|
||||||
XSCALE_INT_ICMR = 0x0;
|
XSCALE_INT_ICMR = 0x0;
|
||||||
@@ -90,6 +90,4 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
|
|
||||||
/* Install the IRQ exception handler */
|
/* Install the IRQ exception handler */
|
||||||
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
volatile uint32_t *addr = VICVectAddrBase;
|
volatile uint32_t *addr = VICVectAddrBase;
|
||||||
volatile uint32_t *prio = VICVectPriorityBase;
|
volatile uint32_t *prio = VICVectPriorityBase;
|
||||||
@@ -157,8 +157,6 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
|
|
||||||
/* Install the IRQ exception handler */
|
/* Install the IRQ exception handler */
|
||||||
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ARM_MULTILIB_ARCH_V4 */
|
#endif /* ARM_MULTILIB_ARCH_V4 */
|
||||||
|
|||||||
@@ -347,7 +347,7 @@ void lpc32xx_set_exception_handler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
||||||
@@ -385,6 +385,4 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
lpc32xx.sic_2.atr = 0x0;
|
lpc32xx.sic_2.atr = 0x0;
|
||||||
|
|
||||||
lpc32xx_set_exception_handler(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt);
|
lpc32xx_set_exception_handler(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -217,11 +217,10 @@ void bsp_interrupt_handler_default(rtems_vector_number vector)
|
|||||||
printk("spurious interrupt: %" PRIdrtems_vector_number "\n", vector);
|
printk("spurious interrupt: %" PRIdrtems_vector_number "\n", vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
BCM2835_REG(BCM2835_IRQ_DISABLE1) = 0xffffffff;
|
BCM2835_REG(BCM2835_IRQ_DISABLE1) = 0xffffffff;
|
||||||
BCM2835_REG(BCM2835_IRQ_DISABLE2) = 0xffffffff;
|
BCM2835_REG(BCM2835_IRQ_DISABLE2) = 0xffffffff;
|
||||||
BCM2835_REG(BCM2835_IRQ_DISABLE_BASIC) = 0xffffffff;
|
BCM2835_REG(BCM2835_IRQ_DISABLE_BASIC) = 0xffffffff;
|
||||||
BCM2835_REG(BCM2835_IRQ_FIQ_CTRL) = 0;
|
BCM2835_REG(BCM2835_IRQ_FIQ_CTRL) = 0;
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
volatile uint32_t *ctrl = (volatile uint32_t *) VICVectCntlBase;
|
volatile uint32_t *ctrl = (volatile uint32_t *) VICVectCntlBase;
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
@@ -109,6 +109,4 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
|
|
||||||
/* Install the IRQ exception handler */
|
/* Install the IRQ exception handler */
|
||||||
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
ARMV7M_Exception_handler *vector_table;
|
ARMV7M_Exception_handler *vector_table;
|
||||||
int i;
|
int i;
|
||||||
@@ -118,8 +118,6 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
_ARMV7M_SCB->vtor = vector_table;
|
_ARMV7M_SCB->vtor = vector_table;
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ARM_MULTILIB_ARCH_V7M */
|
#endif /* ARM_MULTILIB_ARCH_V7M */
|
||||||
|
|||||||
@@ -81,9 +81,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ rtems_status_code bsp_interrupt_vector_disable(
|
|||||||
*
|
*
|
||||||
* @retval RTEMS_SUCCESSFUL All is set
|
* @retval RTEMS_SUCCESSFUL All is set
|
||||||
*/
|
*/
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
void (**vim_vec)(void) = (void (**)(void)) 0xFFF82000;
|
void (**vim_vec)(void) = (void (**)(void)) 0xFFF82000;
|
||||||
unsigned int value = 0x00010203;
|
unsigned int value = 0x00010203;
|
||||||
@@ -241,6 +241,4 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
sctlr |= 1 << 24;
|
sctlr |= 1 << 24;
|
||||||
#endif
|
#endif
|
||||||
asm volatile ("mcr p15, 0, %0, c1, c0, 0\n": : "r" (sctlr));
|
asm volatile ("mcr p15, 0, %0, c1, c0, 0\n": : "r" (sctlr));
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -326,7 +326,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -347,8 +347,6 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
|
|
||||||
for (i = 0; i < BSP_IRQ_LINES_NUMBER; i++)
|
for (i = 0; i < BSP_IRQ_LINES_NUMBER; i++)
|
||||||
irq_trigger[i] = elcr_read_trigger(i);
|
irq_trigger[i] = elcr_read_trigger(i);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool bsp_interrupt_handler_is_empty(rtems_vector_number vector)
|
static bool bsp_interrupt_handler_is_empty(rtems_vector_number vector)
|
||||||
|
|||||||
@@ -202,10 +202,8 @@ void bsp_interrupt_initialize(void);
|
|||||||
* The vectors will be enabled with your bsp_interrupt_vector_enable() function
|
* The vectors will be enabled with your bsp_interrupt_vector_enable() function
|
||||||
* and disabled via your bsp_interrupt_vector_disable() function. These
|
* and disabled via your bsp_interrupt_vector_disable() function. These
|
||||||
* functions have to work afterwards.
|
* functions have to work afterwards.
|
||||||
*
|
|
||||||
* @return On success RTEMS_SUCCESSFUL shall be returned.
|
|
||||||
*/
|
*/
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void);
|
void bsp_interrupt_facility_initialize(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the attributes of the interrupt vector.
|
* @brief Gets the attributes of the interrupt vector.
|
||||||
|
|||||||
@@ -12,9 +12,9 @@
|
|||||||
#include <bsp/irq.h>
|
#include <bsp/irq.h>
|
||||||
#include <bsp/irq-generic.h>
|
#include <bsp/irq-generic.h>
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
return RTEMS_SUCCESSFUL;
|
/* Nothing to do */
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_get_attributes(
|
rtems_status_code bsp_interrupt_get_attributes(
|
||||||
|
|||||||
@@ -121,10 +121,9 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
mips_install_isr_entries();
|
mips_install_isr_entries();
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bsp_interrupt_handler_default(rtems_vector_number vector)
|
void bsp_interrupt_handler_default(rtems_vector_number vector)
|
||||||
|
|||||||
@@ -745,19 +745,17 @@ static void BSP_SIU_irq_init( void)
|
|||||||
setup_irqMaskTable();
|
setup_irqMaskTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize( void)
|
void bsp_interrupt_facility_initialize( void)
|
||||||
{
|
{
|
||||||
|
rtems_status_code sc;
|
||||||
|
|
||||||
BSP_SIU_irq_init();
|
BSP_SIU_irq_init();
|
||||||
|
|
||||||
/* Install exception handler */
|
/* Install exception handler */
|
||||||
if (ppc_exc_set_handler( ASM_EXT_VECTOR, C_dispatch_irq_handler)) {
|
sc = ppc_exc_set_handler( ASM_EXT_VECTOR, C_dispatch_irq_handler);
|
||||||
return RTEMS_IO_ERROR;
|
_Assert_Unused_variable_equals( sc, RTEMS_SUCCESSFUL);
|
||||||
}
|
sc = ppc_exc_set_handler( ASM_E300_SYSMGMT_VECTOR, C_dispatch_irq_handler);
|
||||||
if (ppc_exc_set_handler( ASM_E300_SYSMGMT_VECTOR, C_dispatch_irq_handler)) {
|
_Assert_Unused_variable_equals( sc, RTEMS_SUCCESSFUL);
|
||||||
return RTEMS_IO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bsp_interrupt_handler_default( rtems_vector_number vector)
|
void bsp_interrupt_handler_default( rtems_vector_number vector)
|
||||||
|
|||||||
@@ -548,20 +548,17 @@ static int BSP_irq_handle_at_ipic( unsigned excNum)
|
|||||||
* Fill the array mpc83xx_ipic_prio2mask to allow masking of lower prio sources
|
* Fill the array mpc83xx_ipic_prio2mask to allow masking of lower prio sources
|
||||||
* to implement nested interrupts.
|
* to implement nested interrupts.
|
||||||
*/
|
*/
|
||||||
static rtems_status_code mpc83xx_ipic_calc_prio2mask(void)
|
static void mpc83xx_ipic_calc_prio2mask(void)
|
||||||
{
|
{
|
||||||
rtems_status_code rc = RTEMS_SUCCESSFUL;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: fill the array
|
* FIXME: fill the array
|
||||||
*/
|
*/
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Activate the interrupt controller
|
* Activate the interrupt controller
|
||||||
*/
|
*/
|
||||||
static rtems_status_code mpc83xx_ipic_initialize(void)
|
static void mpc83xx_ipic_initialize(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* mask off all interrupts
|
* mask off all interrupts
|
||||||
@@ -613,7 +610,7 @@ static rtems_status_code mpc83xx_ipic_initialize(void)
|
|||||||
/*
|
/*
|
||||||
* calculate priority masks
|
* calculate priority masks
|
||||||
*/
|
*/
|
||||||
return mpc83xx_ipic_calc_prio2mask();
|
mpc83xx_ipic_calc_prio2mask();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mpc83xx_exception_handler(
|
static int mpc83xx_exception_handler(
|
||||||
@@ -624,19 +621,18 @@ static int mpc83xx_exception_handler(
|
|||||||
return BSP_irq_handle_at_ipic( exception_number);
|
return BSP_irq_handle_at_ipic( exception_number);
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize()
|
void bsp_interrupt_facility_initialize()
|
||||||
{
|
{
|
||||||
|
rtems_status_code sc;
|
||||||
|
|
||||||
/* Install exception handler */
|
/* Install exception handler */
|
||||||
if (ppc_exc_set_handler( ASM_EXT_VECTOR, mpc83xx_exception_handler)) {
|
sc = ppc_exc_set_handler( ASM_EXT_VECTOR, mpc83xx_exception_handler);
|
||||||
return RTEMS_IO_ERROR;
|
_Assert_Unused_variable_equals( sc, RTEMS_SUCCESSFUL);
|
||||||
}
|
sc = ppc_exc_set_handler( ASM_E300_SYSMGMT_VECTOR, mpc83xx_exception_handler);
|
||||||
if (ppc_exc_set_handler( ASM_E300_SYSMGMT_VECTOR, mpc83xx_exception_handler)) {
|
_Assert_Unused_variable_equals( sc, RTEMS_SUCCESSFUL);
|
||||||
return RTEMS_IO_ERROR;
|
sc = ppc_exc_set_handler( ASM_E300_CRIT_VECTOR, mpc83xx_exception_handler);
|
||||||
}
|
_Assert_Unused_variable_equals( sc, RTEMS_SUCCESSFUL);
|
||||||
if (ppc_exc_set_handler( ASM_E300_CRIT_VECTOR, mpc83xx_exception_handler)) {
|
|
||||||
return RTEMS_IO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initialize the interrupt controller */
|
/* Initialize the interrupt controller */
|
||||||
return mpc83xx_ipic_initialize();
|
mpc83xx_ipic_initialize();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ void bsp_interrupt_dispatch(uintptr_t exception_number)
|
|||||||
INTC.EOIR.R = 1;
|
INTC.EOIR.R = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
rtems_vector_number vector;
|
rtems_vector_number vector;
|
||||||
|
|
||||||
@@ -148,8 +148,6 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
|
|
||||||
/* Set current priority to 0 */
|
/* Set current priority to 0 */
|
||||||
INTC.CPR.B.PRI = 0;
|
INTC.CPR.B.PRI = 0;
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_get_attributes(
|
rtems_status_code bsp_interrupt_get_attributes(
|
||||||
|
|||||||
@@ -398,21 +398,19 @@ rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number irqnum)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize()
|
void bsp_interrupt_facility_initialize()
|
||||||
{
|
{
|
||||||
|
rtems_status_code sc;
|
||||||
|
|
||||||
/* Install exception handler */
|
/* Install exception handler */
|
||||||
if (ppc_exc_set_handler( ASM_EXT_VECTOR, C_dispatch_irq_handler)) {
|
sc = ppc_exc_set_handler( ASM_EXT_VECTOR, C_dispatch_irq_handler);
|
||||||
return RTEMS_IO_ERROR;
|
_Assert_Unused_variable_equals( sc, RTEMS_SUCCESSFUL);
|
||||||
}
|
sc = ppc_exc_set_handler( ASM_DEC_VECTOR, C_dispatch_irq_handler);
|
||||||
if (ppc_exc_set_handler( ASM_DEC_VECTOR, C_dispatch_irq_handler)) {
|
_Assert_Unused_variable_equals( sc, RTEMS_SUCCESSFUL);
|
||||||
return RTEMS_IO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fill in priority masks */
|
/* Fill in priority masks */
|
||||||
compute_SIU_IvectMask_from_prio();
|
compute_SIU_IvectMask_from_prio();
|
||||||
|
|
||||||
/* Initialize the interrupt controller */
|
/* Initialize the interrupt controller */
|
||||||
BSP_CPM_irq_init();
|
BSP_CPM_irq_init();
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -158,12 +158,11 @@ rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number irqnum)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
/* Install exception handler */
|
rtems_status_code sc;
|
||||||
if (ppc_exc_set_handler( ASM_EXT_VECTOR, psim_exception_handler)) {
|
|
||||||
return RTEMS_IO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
/* Install exception handler */
|
||||||
|
sc = ppc_exc_set_handler( ASM_EXT_VECTOR, psim_exception_handler);
|
||||||
|
_Assert_Unused_variable_equals( sc, RTEMS_SUCCESSFUL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,12 +94,11 @@ rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number irqnum)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
/* Install exception handler */
|
rtems_status_code sc;
|
||||||
if (ppc_exc_set_handler( ASM_EXT_VECTOR, qemuppc_exception_handler)) {
|
|
||||||
return RTEMS_IO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
/* Install exception handler */
|
||||||
|
sc = ppc_exc_set_handler( ASM_EXT_VECTOR, qemuppc_exception_handler);
|
||||||
|
_Assert_Unused_variable_equals( sc, RTEMS_SUCCESSFUL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ void bsp_interrupt_dispatch(uintptr_t exception_number)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
@@ -458,7 +458,7 @@ static void pic_global_timer_init(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
rtems_vector_number i = 0;
|
rtems_vector_number i = 0;
|
||||||
uint32_t processor_id = ppc_processor_id();
|
uint32_t processor_id = ppc_processor_id();
|
||||||
@@ -494,8 +494,6 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
qoriq.pic.eoi = 0;
|
qoriq.pic.eoi = 0;
|
||||||
qoriq.pic.whoami;
|
qoriq.pic.whoami;
|
||||||
}
|
}
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* QORIQ_IS_HYPERVISOR_GUEST */
|
#endif /* QORIQ_IS_HYPERVISOR_GUEST */
|
||||||
|
|||||||
@@ -151,11 +151,10 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Initialize RTEMS IRQ system
|
* Initialize RTEMS IRQ system
|
||||||
*/
|
*/
|
||||||
BSP_rtems_irq_mng_init(0);
|
BSP_rtems_irq_mng_init(0);
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
return RTEMS_SUCCESSFUL;
|
/* Nothing to do */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -226,8 +226,10 @@ static int BSP_irq_handle_at_siu( unsigned excNum)
|
|||||||
/*
|
/*
|
||||||
* Activate the CPIC
|
* Activate the CPIC
|
||||||
*/
|
*/
|
||||||
static rtems_status_code mpc8xx_cpic_initialize( void)
|
static void mpc8xx_cpic_initialize( void)
|
||||||
{
|
{
|
||||||
|
rtems_status_code sc;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* mask off all interrupts
|
* mask off all interrupts
|
||||||
*/
|
*/
|
||||||
@@ -240,20 +242,19 @@ static rtems_status_code mpc8xx_cpic_initialize( void)
|
|||||||
/*
|
/*
|
||||||
* enable CPIC interrupt in SIU interrupt controller
|
* enable CPIC interrupt in SIU interrupt controller
|
||||||
*/
|
*/
|
||||||
return bsp_irq_enable_at_SIU(BSP_CPM_INTERRUPT);
|
sc = bsp_irq_enable_at_SIU(BSP_CPM_INTERRUPT);
|
||||||
|
_Assert_Unused_variable_equals(sc, RTEMS_SUCCESSFUL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Activate the SIU interrupt controller
|
* Activate the SIU interrupt controller
|
||||||
*/
|
*/
|
||||||
static rtems_status_code mpc8xx_siu_int_initialize( void)
|
static void mpc8xx_siu_int_initialize( void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* mask off all interrupts
|
* mask off all interrupts
|
||||||
*/
|
*/
|
||||||
m8xx.simask = 0;
|
m8xx.simask = 0;
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mpc8xx_exception_handler(BSP_Exception_frame *frame,
|
static int mpc8xx_exception_handler(BSP_Exception_frame *frame,
|
||||||
@@ -262,16 +263,17 @@ static int mpc8xx_exception_handler(BSP_Exception_frame *frame,
|
|||||||
return BSP_irq_handle_at_siu(exception_number);
|
return BSP_irq_handle_at_siu(exception_number);
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize()
|
void bsp_interrupt_facility_initialize()
|
||||||
{
|
{
|
||||||
|
rtems_status_code sc;
|
||||||
|
|
||||||
/* Install exception handler */
|
/* Install exception handler */
|
||||||
if (ppc_exc_set_handler(ASM_EXT_VECTOR, mpc8xx_exception_handler)) {
|
sc = ppc_exc_set_handler(ASM_EXT_VECTOR, mpc8xx_exception_handler);
|
||||||
return RTEMS_IO_ERROR;
|
_Assert_Unused_variable_equals(sc, RTEMS_SUCCESSFUL);
|
||||||
}
|
|
||||||
/* Initialize the SIU interrupt controller */
|
/* Initialize the SIU interrupt controller */
|
||||||
if (mpc8xx_siu_int_initialize()) {
|
mpc8xx_siu_int_initialize();
|
||||||
return RTEMS_IO_ERROR;
|
|
||||||
}
|
|
||||||
/* Initialize the CPIC interrupt controller */
|
/* Initialize the CPIC interrupt controller */
|
||||||
return mpc8xx_cpic_initialize();
|
mpc8xx_cpic_initialize();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -203,11 +203,12 @@ static int C_dispatch_irq_handler(BSP_Exception_frame *frame, unsigned int excNu
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
|
rtems_status_code sc;
|
||||||
|
|
||||||
opb_intc_init();
|
opb_intc_init();
|
||||||
|
|
||||||
ppc_exc_set_handler(ASM_EXT_VECTOR, C_dispatch_irq_handler);
|
sc = ppc_exc_set_handler(ASM_EXT_VECTOR, C_dispatch_irq_handler);
|
||||||
|
_Assert_Unused_variable_equals(sc, RTEMS_SUCCESSFUL);
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ void _RISCV_Interrupt_dispatch(uintptr_t mcause, Per_CPU_Control *cpu_self)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -83,8 +83,6 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
* bsp_start_on_secondary_processor().
|
* bsp_start_on_secondary_processor().
|
||||||
*/
|
*/
|
||||||
set_csr(mie, MIP_MEIP);
|
set_csr(mie, MIP_MEIP);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_get_attributes(
|
rtems_status_code bsp_interrupt_get_attributes(
|
||||||
|
|||||||
@@ -215,15 +215,13 @@ static void riscv_plic_init(const void *fdt)
|
|||||||
set_csr(mie, MIP_MEIP);
|
set_csr(mie, MIP_MEIP);
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
const void *fdt;
|
const void *fdt;
|
||||||
|
|
||||||
fdt = bsp_fdt_get();
|
fdt = bsp_fdt_get();
|
||||||
riscv_clint_init(fdt);
|
riscv_clint_init(fdt);
|
||||||
riscv_plic_init(fdt);
|
riscv_plic_init(fdt);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_get_attributes(
|
rtems_status_code bsp_interrupt_get_attributes(
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ static void enable_fiq(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
volatile gic_cpuif *cpuif = GIC_CPUIF;
|
volatile gic_cpuif *cpuif = GIC_CPUIF;
|
||||||
volatile gic_dist *dist = ARM_GIC_DIST;
|
volatile gic_dist *dist = ARM_GIC_DIST;
|
||||||
@@ -239,7 +239,6 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
dist->icddcr = GIC_DIST_ICDDCR_ENABLE_GRP_1 | GIC_DIST_ICDDCR_ENABLE;
|
dist->icddcr = GIC_DIST_ICDDCR_ENABLE_GRP_1 | GIC_DIST_ICDDCR_ENABLE;
|
||||||
|
|
||||||
enable_fiq();
|
enable_fiq();
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RTEMS_SMP
|
#ifdef RTEMS_SMP
|
||||||
|
|||||||
@@ -388,7 +388,7 @@ static void gicv3_init_cpu_interface(void)
|
|||||||
WRITE_SR(ICC_CTLR, 0x0);
|
WRITE_SR(ICC_CTLR, 0x0);
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
volatile gic_dist *dist = ARM_GIC_DIST;
|
volatile gic_dist *dist = ARM_GIC_DIST;
|
||||||
uint32_t id_count = get_id_count(dist);
|
uint32_t id_count = get_id_count(dist);
|
||||||
@@ -423,7 +423,6 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
gicv3_init_cpu_interface();
|
gicv3_init_cpu_interface();
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RTEMS_SMP
|
#ifdef RTEMS_SMP
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return RTEMS_UNSATISFIED;
|
return RTEMS_UNSATISFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
return RTEMS_NOT_IMPLEMENTED;
|
/* Nothing to do */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,13 +160,7 @@ rtems_interrupt_entry *bsp_interrupt_entry_find(
|
|||||||
|
|
||||||
void bsp_interrupt_initialize( void )
|
void bsp_interrupt_initialize( void )
|
||||||
{
|
{
|
||||||
rtems_status_code sc;
|
bsp_interrupt_facility_initialize();
|
||||||
|
|
||||||
sc = bsp_interrupt_facility_initialize();
|
|
||||||
if ( sc != RTEMS_SUCCESSFUL ) {
|
|
||||||
bsp_fatal( BSP_FATAL_INTERRUPT_INITIALIZATION );
|
|
||||||
}
|
|
||||||
|
|
||||||
bsp_interrupt_set_initialized();
|
bsp_interrupt_set_initialized();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ bool bsp_interrupt_is_valid_vector(rtems_vector_number vector)
|
|||||||
Processor_mask leon3_interrupt_affinities[BSP_INTERRUPT_VECTOR_MAX_STD + 1];
|
Processor_mask leon3_interrupt_affinities[BSP_INTERRUPT_VECTOR_MAX_STD + 1];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
#if defined(RTEMS_SMP)
|
#if defined(RTEMS_SMP)
|
||||||
Processor_mask affinity;
|
Processor_mask affinity;
|
||||||
@@ -57,8 +57,6 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
leon3_interrupt_affinities[i] = affinity;
|
leon3_interrupt_affinities[i] = affinity;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_get_attributes(
|
rtems_status_code bsp_interrupt_get_attributes(
|
||||||
|
|||||||
@@ -35,10 +35,9 @@ bool bsp_interrupt_is_valid_vector(rtems_vector_number vector)
|
|||||||
return vector <= BSP_INTERRUPT_VECTOR_MAX_STD;
|
return vector <= BSP_INTERRUPT_VECTOR_MAX_STD;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
/* Nothing to do */
|
/* Nothing to do */
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool is_maskable(rtems_vector_number vector)
|
static bool is_maskable(rtems_vector_number vector)
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ void amd64_dispatch_isr(rtems_vector_number vector)
|
|||||||
bsp_interrupt_handler_dispatch(vector);
|
bsp_interrupt_handler_dispatch(vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
void bsp_interrupt_facility_initialize(void)
|
||||||
{
|
{
|
||||||
uintptr_t old;
|
uintptr_t old;
|
||||||
for (uint32_t i = 0; i < BSP_IRQ_VECTOR_NUMBER; i++) {
|
for (uint32_t i = 0; i < BSP_IRQ_VECTOR_NUMBER; i++) {
|
||||||
@@ -137,8 +137,6 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
lidt(&idtr);
|
lidt(&idtr);
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
||||||
|
|||||||
Reference in New Issue
Block a user