summaryrefslogtreecommitdiff
path: root/ecos/packages/hal
diff options
context:
space:
mode:
authorsave2007-10-03 17:30:43 +0000
committersave2007-10-03 17:30:43 +0000
commite7dc3b600170dc91ade4eb0b525723fa813bbc32 (patch)
tree526dd42eb970105ca14b523803ba248e694c2e74 /ecos/packages/hal
parent33ee95db1c9c132edc919a4be21d3e588e89e28c (diff)
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
Diffstat (limited to 'ecos/packages/hal')
-rw-r--r--ecos/packages/hal/maximus/arch/current/src/maximus_intr.c62
1 files changed, 7 insertions, 55 deletions
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");
}