tm27: Avoid function pointer casts

Add TM27_USE_VECTOR_HANDLER to select the interrupt handler type used by
the <tm27.h> implementation.

Close #4820.
This commit is contained in:
Sebastian Huber
2023-01-23 14:56:31 +01:00
parent 9ecb73f368
commit 10ee41a8a3
37 changed files with 144 additions and 108 deletions

View File

@@ -59,6 +59,8 @@
#define MUST_WAIT_FOR_INTERRUPT 1
#define TM27_USE_VECTOR_HANDLER
#define Install_tm27_vector( handler ) \
set_vector( (handler), TEST_VECTOR, 1 );
@@ -80,22 +82,20 @@
#define MUST_WAIT_FOR_INTERRUPT 1
static inline void Install_tm27_vector(
void ( *handler )( rtems_vector_number )
)
static inline void Install_tm27_vector( rtems_interrupt_handler handler )
{
(void) rtems_interrupt_handler_install(
TEST_INTERRUPT_SOURCE,
"tm27 low",
RTEMS_INTERRUPT_SHARED,
(rtems_interrupt_handler) handler,
handler,
NULL
);
(void) rtems_interrupt_handler_install(
TEST_INTERRUPT_SOURCE2,
"tm27 high",
RTEMS_INTERRUPT_SHARED,
(rtems_interrupt_handler) handler,
handler,
NULL
);
}

View File

@@ -59,6 +59,8 @@
#define MUST_WAIT_FOR_INTERRUPT 1
#define TM27_USE_VECTOR_HANDLER
#define Install_tm27_vector( handler ) \
set_vector( (handler), TEST_VECTOR, 1 );
@@ -79,22 +81,20 @@
#define TEST_INTERRUPT_SOURCE2 LEON_INTERRUPT_EXTERNAL_1+1
#define MUST_WAIT_FOR_INTERRUPT 1
static inline void Install_tm27_vector(
void ( *handler )( rtems_vector_number )
)
static inline void Install_tm27_vector( rtems_interrupt_handler handler )
{
(void) rtems_interrupt_handler_install(
TEST_INTERRUPT_SOURCE,
"tm27 low",
RTEMS_INTERRUPT_SHARED,
(rtems_interrupt_handler) handler,
handler,
NULL
);
(void) rtems_interrupt_handler_install(
TEST_INTERRUPT_SOURCE2,
"tm27 high",
RTEMS_INTERRUPT_SHARED,
(rtems_interrupt_handler) handler,
handler,
NULL
);
}

View File

@@ -66,6 +66,8 @@
#define MUST_WAIT_FOR_INTERRUPT 1
#define TM27_USE_VECTOR_HANDLER
#define Install_tm27_vector( handler ) \
set_vector( (handler), TEST_VECTOR, 1 );
@@ -88,9 +90,7 @@ extern uint32_t Interrupt_nest;
#define TEST_INTERRUPT_SOURCE2 6
#define MUST_WAIT_FOR_INTERRUPT 1
static inline void Install_tm27_vector(
void ( *handler )( rtems_vector_number )
)
static inline void Install_tm27_vector( rtems_interrupt_handler handler )
{
static rtems_interrupt_entry entry_low;
static rtems_interrupt_entry entry_high;
@@ -108,7 +108,7 @@ static inline void Install_tm27_vector(
rtems_interrupt_entry_initialize(
&entry_low,
(rtems_interrupt_handler) handler,
handler,
NULL,
"tm27 low"
);
@@ -119,7 +119,7 @@ static inline void Install_tm27_vector(
);
rtems_interrupt_entry_initialize(
&entry_high,
(rtems_interrupt_handler) handler,
handler,
NULL,
"tm27 high"
);