From 6a1b9e41521fffc0abc82cb4426fc0e4ca8ca17e Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 22 Nov 2016 10:13:27 +0100 Subject: 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. --- c/src/lib/libbsp/sparc/leon3/startup/spurious.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'c/src/lib/libbsp/sparc/leon3/startup/spurious.c') 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; -- cgit v1.2.3