From e7dc3b600170dc91ade4eb0b525723fa813bbc32 Mon Sep 17 00:00:00 2001 From: save Date: Wed, 3 Oct 2007 17:30:43 +0000 Subject: Changed cyg_hal_sys_exit by HAL_PLATFORM_EXIT + Suppressed linux signals management git-svn-id: svn+ssh://pessac/svn/cesar/trunk@765 017c9cb6-072f-447c-8318-d5b54f68fe89 --- .../hal/maximus/arch/current/src/maximus_intr.c | 62 +++------------------- 1 file changed, 7 insertions(+), 55 deletions(-) (limited to 'ecos/packages/hal') diff --git a/ecos/packages/hal/maximus/arch/current/src/maximus_intr.c b/ecos/packages/hal/maximus/arch/current/src/maximus_intr.c index 7e4d43bb87..c059643360 100644 --- a/ecos/packages/hal/maximus/arch/current/src/maximus_intr.c +++ b/ecos/packages/hal/maximus/arch/current/src/maximus_intr.c @@ -35,19 +35,15 @@ #include "common/std.h" #include "host/station.h" -#if 0 -#include "maximus_protocol.h" -#endif - -// ---------------------------------------------------------------------------- -// Statics. - // global variable to communicate with SCI Layer station_ctx_t my_station = {0}; // Are interrupts currently enabled? volatile cyg_bool_t hal_interrupts_enabled = false; +// ---------------------------------------------------------------------------- +// Statics. + // The current VSR, to be invoked by the signal handler. This allows // application code to install an alternative VSR, without that VSR // having to check for interrupts being disabled and updating the @@ -352,7 +348,7 @@ maximus_exception_sighandler(int sig) #else CYG_FAIL("Exception!!!"); station_down(&my_station); - cyg_hal_sys_exit(1); + HAL_PLATFORM_EXIT(1); #endif } @@ -366,7 +362,7 @@ maximus_terminate_sighandler(int sig) // Disable interrupts. HAL_DISABLE_INTERRUPTS(old); station_down(&my_station); - cyg_hal_sys_exit(0); + HAL_PLATFORM_EXIT(0); } // ---------------------------------------------------------------------------- // The clock support. This can be implemented using the SCI Layercalls. @@ -466,34 +462,9 @@ void maximus_hardware_init(void) { struct cyg_hal_sys_sigaction action; - struct cyg_hal_sys_sigset_t blocked; int i; - // Set up a sigprocmask to block all signals except the ones we - // particularly want to handle. However do not block the tty - // signals - the ability to ctrl-C a program is important. - CYG_HAL_SYS_SIGFILLSET(&blocked); - CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGILL); - CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGBUS); - CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGFPE); - CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGSEGV); -// CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGPIPE); -// CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGCHLD); -// CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGALRM); -// CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGIO); -// CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGHUP); - CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGINT); -// CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGQUIT); - CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGTERM); -// CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGCONT); -// CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGSTOP); -// CYG_HAL_SYS_SIGDELSET(&blocked, CYG_HAL_SYS_SIGTSTP); - - if (0 != cyg_hal_sys_sigprocmask(CYG_HAL_SYS_SIG_SETMASK, &blocked, (cyg_hal_sys_sigset_t*) 0)) { - CYG_FAIL("Failed to initialize sigprocmask"); - } - - // Now set up the VSR and ISR statics + // Set up the VSR and ISR statics maximus_VSR = &maximus_default_vsr; for (i = 0; i < CYGNUM_HAL_ISR_COUNT; i++) { maximus_isr_handlers[i].isr = &maximus_default_isr; @@ -510,29 +481,10 @@ maximus_hardware_init(void) // instead of having the signal handler return immediately. action.hal_mask = 0; action.hal_flags = CYG_HAL_SYS_SA_NODEFER; - action.hal_handler = &maximus_exception_sighandler; + action.hal_handler = &maximus_terminate_sighandler; action.hal_restorer = (void (*)(void)) 0; - // Install handlers for the various exceptions. For now these also - // operate with unchanged sigprocmasks, allowing nested - // exceptions. It is not clear that this is entirely a good idea, - // but in practice these exceptions will usually be handled by gdb - // anyway. - if (0 != cyg_hal_sys_sigaction(CYG_HAL_SYS_SIGILL, &action, (struct cyg_hal_sys_sigaction*) 0)) { - CYG_FAIL("Failed to install signal handler for SIGILL"); - } - if (0 != cyg_hal_sys_sigaction(CYG_HAL_SYS_SIGBUS, &action, (struct cyg_hal_sys_sigaction*) 0)) { - CYG_FAIL("Failed to install signal handler for SIGBUS"); - } - if (0 != cyg_hal_sys_sigaction(CYG_HAL_SYS_SIGFPE, &action, (struct cyg_hal_sys_sigaction*) 0)) { - CYG_FAIL("Failed to install signal handler for SIGFPE"); - } - if (0 != cyg_hal_sys_sigaction(CYG_HAL_SYS_SIGSEGV, &action, (struct cyg_hal_sys_sigaction*) 0)) { - CYG_FAIL("Failed to install signal handler for SIGSEGV"); - } - // Needed to close us when we receive a SIGTERM signal given by the // Simulator - action.hal_handler = &maximus_terminate_sighandler; if (0 != cyg_hal_sys_sigaction(CYG_HAL_SYS_SIGTERM, &action, (struct cyg_hal_sys_sigaction*) 0)) { CYG_FAIL("Failed to install signal handler for SIGTERM"); } -- cgit v1.2.3