/* (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands. See the copyright notice in the ACK home directory, in the file "Copyright". */ /* Module: initialization and some global vars Author: Ceriel J.H. Jacobs Version: $Header$ */ #include #include #include /* map unix signals onto EM traps */ init() { sigtrp(M2_UNIXSIG, SIGHUP); sigtrp(M2_UNIXSIG, SIGINT); sigtrp(M2_UNIXSIG, SIGQUIT); sigtrp(EILLINS, SIGILL); sigtrp(M2_UNIXSIG, SIGTRAP); sigtrp(M2_UNIXSIG, SIGIOT); sigtrp(M2_UNIXSIG, SIGEMT); /* sigtrp(M2_UNIXSIG, SIGFPE); leave this one for EM runtime startoff*/ sigtrp(M2_UNIXSIG, SIGBUS); sigtrp(M2_UNIXSIG, SIGSEGV); sigtrp(EBADMON, SIGSYS); sigtrp(M2_UNIXSIG, SIGPIPE); sigtrp(M2_UNIXSIG, SIGALRM); sigtrp(M2_UNIXSIG, SIGTERM); } #if em22 || em24 || em44 killbss() { } #else static int blablabla; /* We cannot use end, because then also bss allocated for the systemcall lib would be overwritten. Lets hope that this helps ... */ killbss() { extern char *edata; register char *p = (char *) &edata; while (p < (char *) &blablabla) *p++ = 0x66; } #endif extern int catch(); int (*handler)() = catch; char **argv = 0, **environ = 0; int argc = 0, StackSize = 0; char *CurrentProcess = 0, MainProcess = 0, StackBase = 0, MainLB = 0;