init.c (__gnat_map_signal): map SIGSEGV to Storage_Error for AE653 vthreads.

* 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
This commit is contained in:
Arnaud Charlet 2004-11-19 12:25:15 +01:00
parent 87b62748db
commit edbe49d1f9
1 changed files with 15 additions and 7 deletions

View File

@ -1704,19 +1704,25 @@ __gnat_map_signal (int sig)
exception = &constraint_error;
msg = "SIGILL";
break;
#ifdef VTHREADS
case SIGSEGV:
exception = &storage_error;
msg = "SIGSEGV: possible stack overflow";
break;
case SIGBUS:
exception = &storage_error;
msg = "SIGBUS: possible stack overflow";
break;
#else
case SIGSEGV:
exception = &program_error;
msg = "SIGSEGV";
break;
case SIGBUS:
#ifdef VTHREADS
exception = &storage_error;
msg = "SIGBUS: possible stack overflow";
#else
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