diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2023-12-18 12:02:31 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2023-12-19 08:26:46 +0100 |
commit | 93f927de26d9e5504e548c99533f2de197682a83 (patch) | |
tree | 8d2e2e7ab8cff1b726046000efcb608b67e44b37 /testsuites/validation/tx-call-within-isr.c | |
parent | tm27: Add optional TM27_INTERRUPT_VECTOR_DEFAULT (diff) | |
download | rtems-93f927de26d9e5504e548c99533f2de197682a83.tar.bz2 |
tm27: Add TM27_INTERRUPT_VECTOR_ALTERNATIVE
The TM27 support may define TM27_INTERRUPT_VECTOR_ALTERNATIVE to provide
an alternative software generated interrupt request which is raised by
_TM27_Raise_alternative() and cleared by _TM27_Clear_alternative().
Both functions shall return an RTEMS status code. This interrupt vector
may be used to test the interrupt controller support on targets which do
not provide generic software generated interrupts.
Update #3716.
Diffstat (limited to 'testsuites/validation/tx-call-within-isr.c')
-rw-r--r-- | testsuites/validation/tx-call-within-isr.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/testsuites/validation/tx-call-within-isr.c b/testsuites/validation/tx-call-within-isr.c index a7fce4368d..8bbe0e7c29 100644 --- a/testsuites/validation/tx-call-within-isr.c +++ b/testsuites/validation/tx-call-within-isr.c @@ -185,6 +185,37 @@ rtems_vector_number CallWithinISRGetVector( void ) #endif } +rtems_vector_number GetSoftwareInterruptVector( void ) +{ +#if defined( TM27_INTERRUPT_VECTOR_ALTERNATIVE ) + return TM27_INTERRUPT_VECTOR_ALTERNATIVE; +#else + return UINT32_MAX; +#endif +} + +rtems_status_code RaiseSoftwareInterrupt( rtems_vector_number vector ) +{ +#if defined( TM27_INTERRUPT_VECTOR_ALTERNATIVE ) + if ( vector == TM27_INTERRUPT_VECTOR_ALTERNATIVE ) { + return _TM27_Raise_alternative(); + } +#endif + + return rtems_interrupt_raise( vector ); +} + +rtems_status_code ClearSoftwareInterrupt( rtems_vector_number vector ) +{ +#if defined( TM27_INTERRUPT_VECTOR_ALTERNATIVE ) + if ( vector == TM27_INTERRUPT_VECTOR_ALTERNATIVE ) { + return _TM27_Clear_alternative(); + } +#endif + + return rtems_interrupt_clear( vector ); +} + static void CallWithinISRInitialize( void ) { Install_tm27_vector( CallWithinISRHandler ); |