summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/leon3/startup/spurious.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-11-22 10:13:27 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-11-28 16:08:43 +0100
commit6a1b9e41521fffc0abc82cb4426fc0e4ca8ca17e (patch)
tree55facda04d71966fbffe36c1c1b6de7d8dbf547d /c/src/lib/libbsp/sparc/leon3/startup/spurious.c
parentscore: Fix thread queue context initialization (diff)
downloadrtems-6a1b9e41521fffc0abc82cb4426fc0e4ca8ca17e.tar.bz2
sparc: Optimize _ISR_Handler()
Use _Thread_Do_dispatch() instead of _Thread_Dispatch(). Restore the PSR[EF] state of the interrupted context via new system call syscall_irqdis_fp in case floating-point support is enabled.
Diffstat (limited to 'c/src/lib/libbsp/sparc/leon3/startup/spurious.c')
-rw-r--r--c/src/lib/libbsp/sparc/leon3/startup/spurious.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/sparc/leon3/startup/spurious.c b/c/src/lib/libbsp/sparc/leon3/startup/spurious.c
index 0fb784963b..39ceacfafa 100644
--- a/c/src/lib/libbsp/sparc/leon3/startup/spurious.c
+++ b/c/src/lib/libbsp/sparc/leon3/startup/spurious.c
@@ -156,6 +156,9 @@ void bsp_spurious_initialize()
(( trap >= 0x11 ) && ( trap <= 0x1f )) ||
(( trap >= 0x70 ) && ( trap <= 0x83 )) ||
( trap == 0x80 + SPARC_SWTRAP_IRQDIS ) ||
+#if SPARC_HAS_FPU == 1
+ ( trap == 0x80 + SPARC_SWTRAP_IRQDIS_FP ) ||
+#endif
( trap == 0x80 + SPARC_SWTRAP_IRQEN ))
continue;