diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-11-05 09:32:09 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-11-06 14:05:53 +0100 |
commit | b7271f8c1e17bca5148039295c66d9d964a7c884 (patch) | |
tree | 525890110972f89db1252ada256146a68c556c11 /bsps/sparc/leon2 | |
parent | sparc: Move SPARC-specific macros to sparc.h (diff) | |
download | rtems-b7271f8c1e17bca5148039295c66d9d964a7c884.tar.bz2 |
sparc: Add SPARC_IS_INTERRUPT_TRAP()
Update #4171.
Diffstat (limited to 'bsps/sparc/leon2')
-rw-r--r-- | bsps/sparc/leon2/include/leon.h | 4 | ||||
-rw-r--r-- | bsps/sparc/leon2/start/setvec.c | 9 |
2 files changed, 4 insertions, 9 deletions
diff --git a/bsps/sparc/leon2/include/leon.h b/bsps/sparc/leon2/include/leon.h index 2b3379f713..49af3086ed 100644 --- a/bsps/sparc/leon2/include/leon.h +++ b/bsps/sparc/leon2/include/leon.h @@ -84,9 +84,7 @@ extern "C" { #define LEON_TRAP_SOURCE( _trap ) ((_trap) - 0x10) -#define LEON_INT_TRAP( _trap ) \ - ( (_trap) >= LEON_TRAP_TYPE( LEON_INTERRUPT_CORRECTABLE_MEMORY_ERROR ) && \ - (_trap) <= LEON_TRAP_TYPE( LEON_INTERRUPT_EMPTY6 ) ) +#define LEON_INT_TRAP( _trap ) SPARC_IS_INTERRUPT_TRAP( _trap ) /* * Structure for LEON memory mapped registers. diff --git a/bsps/sparc/leon2/start/setvec.c b/bsps/sparc/leon2/start/setvec.c index 3e4120611d..51647e3ee4 100644 --- a/bsps/sparc/leon2/start/setvec.c +++ b/bsps/sparc/leon2/start/setvec.c @@ -43,19 +43,16 @@ rtems_isr_entry set_vector( /* returns old vector */ ) { rtems_isr_entry previous_isr; - uint32_t real_trap; - uint32_t source; if ( type ) rtems_interrupt_catch( handler, vector, &previous_isr ); else _CPU_ISR_install_raw_handler( vector, handler, (void *)&previous_isr ); - real_trap = SPARC_REAL_TRAP_NUMBER( vector ); + if ( SPARC_IS_INTERRUPT_TRAP( vector ) ) { + uint32_t source; - if ( LEON_INT_TRAP( real_trap ) ) { - - source = LEON_TRAP_SOURCE( real_trap ); + source = LEON_TRAP_SOURCE( SPARC_REAL_TRAP_NUMBER( vector ) ); LEON_Clear_interrupt( source ); LEON_Unmask_interrupt( source ); |