From e7e016fdc22bc830d7ab77e96514fd937a3cd785 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 4 Aug 1995 22:18:45 +0000 Subject: cleanup and optimization from Tony --- c/src/exec/score/cpu/unix/cpu.c | 30 ++++++++++++++++++------------ c/src/exec/score/cpu/unix/cpu.h | 16 ++-------------- cpukit/score/cpu/unix/cpu.c | 30 ++++++++++++++++++------------ 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/c/src/exec/score/cpu/unix/cpu.c b/c/src/exec/score/cpu/unix/cpu.c index 0e51ce3dae..736b7c4c7f 100644 --- a/c/src/exec/score/cpu/unix/cpu.c +++ b/c/src/exec/score/cpu/unix/cpu.c @@ -48,26 +48,31 @@ int cpu_number; * _CPU_ISR_From_CPU_Init */ +sigset_t posix_empty_mask; + void _CPU_ISR_From_CPU_Init() { unsigned32 i; proc_ptr old_handler; + /* + * Generate an empty mask to be used by disable_support + */ + sigemptyset(&posix_empty_mask); + /* * Block all the signals except SIGTRAP for the debugger * and SIGABRT for fatal errors. */ - _CPU_ISR_Enable(1); - (void) sigfillset(&_CPU_Signal_mask); (void) sigdelset(&_CPU_Signal_mask, SIGTRAP); (void) sigdelset(&_CPU_Signal_mask, SIGABRT); (void) sigdelset(&_CPU_Signal_mask, SIGIOT); (void) sigdelset(&_CPU_Signal_mask, SIGCONT); - sigprocmask(SIG_BLOCK, &_CPU_Signal_mask, 0); + _CPU_ISR_Enable(1); /* * Set the handler for all signals to be signal_handler @@ -130,11 +135,7 @@ void _CPU_Signal_initialize( void ) sigaction(SIGTTIN, &act, 0); sigaction(SIGTTOU, &act, 0); sigaction(SIGURG, &act, 0); -/* - * XXX: Really should be on HPUX. - */ - -#if defined(hppa1_1) +#ifdef SIGLOST sigaction(SIGLOST, &act, 0); #endif @@ -491,13 +492,10 @@ void _CPU_Restore_float_context( unsigned32 _CPU_ISR_Disable_support(void) { sigset_t old_mask; - sigset_t empty_mask; - sigemptyset(&empty_mask); - sigemptyset(&old_mask); sigprocmask(SIG_BLOCK, &_CPU_Signal_mask, &old_mask); - if (memcmp((char *)&empty_mask, (char *)&old_mask, sizeof(sigset_t)) != 0) + if (memcmp((void *)&posix_empty_mask, (void *)&old_mask, sizeof(sigset_t)) != 0) return 1; return 0; @@ -610,6 +608,14 @@ void _CPU_Fatal_error(unsigned32 error) { setitimer(ITIMER_REAL, 0, 0); + if ( error ) { +#ifdef RTEMS_DEBUG + abort(); +#endif + if (getenv("RTEMS_DEBUG")) + abort(); + } + _exit(error); } diff --git a/c/src/exec/score/cpu/unix/cpu.h b/c/src/exec/score/cpu/unix/cpu.h index f67a64cb6b..ee7239bc89 100644 --- a/c/src/exec/score/cpu/unix/cpu.h +++ b/c/src/exec/score/cpu/unix/cpu.h @@ -58,18 +58,6 @@ extern "C" { #endif -#if 0 -static inline X() -{ -#ifdef _POSIX_C_SOURCE - printf( "_POSIX_C_SOURCE", _POSIX_C_SOURCE ); -#endif -#ifdef __STRICT_ANSI__ - printf( "__STRICT_ANSI__", __STRICT_ANSI__ ); -#endif -} -#endif - #include #include #include @@ -334,7 +322,7 @@ static inline X() * Word indices within a jmp_buf structure */ -#ifdef RTEMS_NEWLIB +#ifdef RTEMS_NEWLIB_SETJMP #define RP_OFF 6 #define SP_OFF 2 #define R3_OFF 10 @@ -356,7 +344,7 @@ static inline X() #define DP_OFF 26 #endif -#ifdef RTEMS_UNIXLIB +#ifdef RTEMS_UNIXLIB_SETJMP #define RP_OFF 0 #define SP_OFF 1 #define R3_OFF 4 diff --git a/cpukit/score/cpu/unix/cpu.c b/cpukit/score/cpu/unix/cpu.c index 0e51ce3dae..736b7c4c7f 100644 --- a/cpukit/score/cpu/unix/cpu.c +++ b/cpukit/score/cpu/unix/cpu.c @@ -48,26 +48,31 @@ int cpu_number; * _CPU_ISR_From_CPU_Init */ +sigset_t posix_empty_mask; + void _CPU_ISR_From_CPU_Init() { unsigned32 i; proc_ptr old_handler; + /* + * Generate an empty mask to be used by disable_support + */ + sigemptyset(&posix_empty_mask); + /* * Block all the signals except SIGTRAP for the debugger * and SIGABRT for fatal errors. */ - _CPU_ISR_Enable(1); - (void) sigfillset(&_CPU_Signal_mask); (void) sigdelset(&_CPU_Signal_mask, SIGTRAP); (void) sigdelset(&_CPU_Signal_mask, SIGABRT); (void) sigdelset(&_CPU_Signal_mask, SIGIOT); (void) sigdelset(&_CPU_Signal_mask, SIGCONT); - sigprocmask(SIG_BLOCK, &_CPU_Signal_mask, 0); + _CPU_ISR_Enable(1); /* * Set the handler for all signals to be signal_handler @@ -130,11 +135,7 @@ void _CPU_Signal_initialize( void ) sigaction(SIGTTIN, &act, 0); sigaction(SIGTTOU, &act, 0); sigaction(SIGURG, &act, 0); -/* - * XXX: Really should be on HPUX. - */ - -#if defined(hppa1_1) +#ifdef SIGLOST sigaction(SIGLOST, &act, 0); #endif @@ -491,13 +492,10 @@ void _CPU_Restore_float_context( unsigned32 _CPU_ISR_Disable_support(void) { sigset_t old_mask; - sigset_t empty_mask; - sigemptyset(&empty_mask); - sigemptyset(&old_mask); sigprocmask(SIG_BLOCK, &_CPU_Signal_mask, &old_mask); - if (memcmp((char *)&empty_mask, (char *)&old_mask, sizeof(sigset_t)) != 0) + if (memcmp((void *)&posix_empty_mask, (void *)&old_mask, sizeof(sigset_t)) != 0) return 1; return 0; @@ -610,6 +608,14 @@ void _CPU_Fatal_error(unsigned32 error) { setitimer(ITIMER_REAL, 0, 0); + if ( error ) { +#ifdef RTEMS_DEBUG + abort(); +#endif + if (getenv("RTEMS_DEBUG")) + abort(); + } + _exit(error); } -- cgit v1.2.3