From d8d51bd286c00d7ec89530195ba196fbeacc2ff6 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 1 Jul 2021 08:26:47 +0200 Subject: bsp/leon3: Use interrupt entry directives --- bsps/sparc/leon3/clock/ckinit.c | 14 ++++++++++---- bsps/sparc/leon3/include/tm27.h | 25 ++++++++++++++++++------- bsps/sparc/leon3/start/bspsmp.c | 13 +++++++++---- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/bsps/sparc/leon3/clock/ckinit.c b/bsps/sparc/leon3/clock/ckinit.c index 4d30e0fd64..69afb25f3c 100644 --- a/bsps/sparc/leon3/clock/ckinit.c +++ b/bsps/sparc/leon3/clock/ckinit.c @@ -133,16 +133,22 @@ static void leon3_tc_do_tick(void) #define Clock_driver_support_install_isr(isr) \ bsp_clock_handler_install(isr) +static rtems_interrupt_entry leon3_clock_interrupt_entry; + static void bsp_clock_handler_install(rtems_interrupt_handler isr) { rtems_status_code sc; - sc = rtems_interrupt_handler_install( + rtems_interrupt_entry_initialize( + &leon3_clock_interrupt_entry, + isr, + NULL, + "Clock" + ); + sc = rtems_interrupt_entry_install( clkirq, - "Clock", RTEMS_INTERRUPT_UNIQUE, - isr, - NULL + &leon3_clock_interrupt_entry ); if (sc != RTEMS_SUCCESSFUL) { rtems_fatal(RTEMS_FATAL_SOURCE_BSP, LEON3_FATAL_CLOCK_INITIALIZATION); diff --git a/bsps/sparc/leon3/include/tm27.h b/bsps/sparc/leon3/include/tm27.h index 7b73bc4dbd..197e1a6119 100644 --- a/bsps/sparc/leon3/include/tm27.h +++ b/bsps/sparc/leon3/include/tm27.h @@ -64,19 +64,30 @@ static inline void Install_tm27_vector( void ( *handler )( rtems_vector_number ) ) { - (void) rtems_interrupt_handler_install( + static rtems_interrupt_entry entry_low; + static rtems_interrupt_entry entry_high; + + rtems_interrupt_entry_initialize( + &entry_low, + (rtems_interrupt_handler) handler, + NULL, + "tm27 low" + ); + (void) rtems_interrupt_entry_install( TEST_INTERRUPT_SOURCE, - "tm27 low", RTEMS_INTERRUPT_SHARED, + &entry_low + ); + rtems_interrupt_entry_initialize( + &entry_high, (rtems_interrupt_handler) handler, - NULL + NULL, + "tm27 high" ); - (void) rtems_interrupt_handler_install( + (void) rtems_interrupt_entry_install( TEST_INTERRUPT_SOURCE2, - "tm27 high", RTEMS_INTERRUPT_SHARED, - (rtems_interrupt_handler) handler, - NULL + &entry_high ); } diff --git a/bsps/sparc/leon3/start/bspsmp.c b/bsps/sparc/leon3/start/bspsmp.c index 1c72027ebf..4e6e3a6e36 100644 --- a/bsps/sparc/leon3/start/bspsmp.c +++ b/bsps/sparc/leon3/start/bspsmp.c @@ -51,6 +51,13 @@ void bsp_start_on_secondary_processor(Per_CPU_Control *cpu_self) _SMP_Start_multitasking_on_secondary_processor(cpu_self); } +static rtems_interrupt_entry leon3_inter_processor_interrupt_entry = + RTEMS_INTERRUPT_ENTRY_INITIALIZER( + bsp_inter_processor_interrupt, + NULL, + "IPI" + ); + static void leon3_install_inter_processor_interrupt( void ) { rtems_status_code sc; @@ -60,12 +67,10 @@ static void leon3_install_inter_processor_interrupt( void ) bsp_interrupt_set_affinity( irq, _SMP_Get_online_processors() ); - sc = rtems_interrupt_handler_install( + sc = rtems_interrupt_entry_install( irq, - "IPI", RTEMS_INTERRUPT_SHARED, - bsp_inter_processor_interrupt, - NULL + &leon3_inter_processor_interrupt_entry ); _Assert_Unused_variable_equals( sc, RTEMS_SUCCESSFUL ); } -- cgit v1.2.3