diff options
Diffstat (limited to 'gcc/ada/init.c')
-rw-r--r-- | gcc/ada/init.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ada/init.c b/gcc/ada/init.c index 3193dff..2f10505 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -1932,9 +1932,19 @@ __gnat_init_float (void) overflow settings are an OS configuration issue. The instructions below have no effect. */ #if defined (_ARCH_PPC) && !defined (_SOFT_FLOAT) && !defined (VTHREADS) +#if defined (_SPE_) + { + const unsigned long spefscr_mask = 0xfffffff3; + unsigned long spefscr; + asm ("mfspr %0, 512" : "=r" (spefscr)); + spefscr = spefscr & spefscr_mask; + asm ("mtspr 512, %0\n\tisync" : : "r" (spefscr)); + } +#else asm ("mtfsb0 25"); asm ("mtfsb0 26"); #endif +#endif #if (defined (__i386__) || defined (i386)) && !defined (VTHREADS) /* This is used to properly initialize the FPU on an x86 for each |