summaryrefslogtreecommitdiffstats
path: root/bsps/sparc/leon2/include/tm27.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-06-22 15:40:39 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-06-24 11:36:28 +0200
commit5c30e3d376fea2ec18b28a72c349d153973a983d (patch)
tree986ae16e9800c702bbd3779cafdda9549c3559da /bsps/sparc/leon2/include/tm27.h
parentsparc: More reliable bad trap handling (diff)
downloadrtems-5c30e3d376fea2ec18b28a72c349d153973a983d.tar.bz2
bsps/sparc: Use rtems_interrupt_handler_install()
Avoid using set_vector() which depends on _ISR_Vector_table(). Prepare for a statically initialized trap table. Update #4458.
Diffstat (limited to 'bsps/sparc/leon2/include/tm27.h')
-rw-r--r--bsps/sparc/leon2/include/tm27.h24
1 files changed, 19 insertions, 5 deletions
diff --git a/bsps/sparc/leon2/include/tm27.h b/bsps/sparc/leon2/include/tm27.h
index 7b1afe96af..8d29607c86 100644
--- a/bsps/sparc/leon2/include/tm27.h
+++ b/bsps/sparc/leon2/include/tm27.h
@@ -57,14 +57,28 @@
#else /* use a regular asynchronous trap */
#define TEST_INTERRUPT_SOURCE LEON_INTERRUPT_EXTERNAL_1
-#define TEST_VECTOR LEON_TRAP_TYPE( TEST_INTERRUPT_SOURCE )
#define TEST_INTERRUPT_SOURCE2 LEON_INTERRUPT_EXTERNAL_1+1
-#define TEST_VECTOR2 LEON_TRAP_TYPE( TEST_INTERRUPT_SOURCE2 )
#define MUST_WAIT_FOR_INTERRUPT 1
-#define Install_tm27_vector( handler ) \
- set_vector( (handler), TEST_VECTOR, 1 ); \
- set_vector( (handler), TEST_VECTOR2, 1 );
+static inline void Install_tm27_vector(
+ void ( *handler )( rtems_vector_number )
+)
+{
+ (void) rtems_interrupt_handler_install(
+ TEST_INTERRUPT_SOURCE,
+ "tm27 low",
+ RTEMS_INTERRUPT_SHARED,
+ (rtems_interrupt_handler) handler,
+ NULL
+ );
+ (void) rtems_interrupt_handler_install(
+ TEST_INTERRUPT_SOURCE2,
+ "tm27 high",
+ RTEMS_INTERRUPT_SHARED,
+ (rtems_interrupt_handler) handler,
+ NULL
+ );
+}
#define Cause_tm27_intr() \
do { \