init.c (__gnat_map_signal): map SIGSEGV to Storage_Error for AE653 vthreads.
authorArnaud Charlet <charlet@gcc.gnu.org>
Fri, 19 Nov 2004 11:25:15 +0000 (12:25 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 19 Nov 2004 11:25:15 +0000 (12:25 +0100)
* init.c (__gnat_map_signal): map SIGSEGV to Storage_Error for AE653
vthreads.
(init_float): Eliminate initialization of floating point status for
AE653. The instructions have no effect for vThreads.

From-SVN: r90911

gcc/ada/init.c

index 30a2098cb4c2383827953ff43bef0dd833ea25e9..86152f9feded597613073118f374497b758c8202 100644 (file)
@@ -1704,19 +1704,25 @@ __gnat_map_signal (int sig)
       exception = &constraint_error;
       msg = "SIGILL";
       break;
+#ifdef VTHREADS
     case SIGSEGV:
-      exception = &program_error;
-      msg = "SIGSEGV";
+      exception = &storage_error;
+      msg = "SIGSEGV: possible stack overflow";
       break;
     case SIGBUS:
-#ifdef VTHREADS
       exception = &storage_error;
       msg = "SIGBUS: possible stack overflow";
+      break;
 #else
+    case SIGSEGV:
+      exception = &program_error;
+      msg = "SIGSEGV";
+      break;
+    case SIGBUS:
       exception = &program_error;
       msg = "SIGBUS";
-#endif
       break;
+#endif
     default:
       exception = &program_error;
       msg = "unhandled signal";
@@ -1777,8 +1783,10 @@ void
 __gnat_init_float (void)
 {
   /* Disable overflow/underflow exceptions on the PPC processor, this is needed
-     to get correct Ada semantic.  */
-#if defined (_ARCH_PPC) && !defined (_SOFT_FLOAT)
+     to get correct Ada semantics.  Note that for AE653 vThreads, the HW
+     overflow settings are an OS configuration issue.  The instructions
+     below have no effect */
+#if defined (_ARCH_PPC) && !defined (_SOFT_FLOAT) && !defined (VTHREADS)
   asm ("mtfsb0 25");
   asm ("mtfsb0 26");
 #endif