diff --git a/asminc/signal.inc b/asminc/signal.inc index e07625e96..ebde07e42 100644 --- a/asminc/signal.inc +++ b/asminc/signal.inc @@ -34,9 +34,7 @@ ; Standard signal handling functions -SIG_ERR = $FFFF -SIG_IGN = $0000 -SIG_DFL = $0001 +SIG_ERR = $0000 ; Signal numbers SIGABRT = 0 @@ -45,19 +43,15 @@ SIGILL = 2 SIGINT = 3 SIGSEGV = 4 SIGTERM = 5 -SIGCOUNT = 6 ; Number of signals (maximum: 8) +SIGCOUNT = 6 ; Number of signals -; Signal masks -SIGMASK_ABRT = (1 .SHL SIGABRT) -SIGMASK_FPE = (1 .SHL SIGFPE) -SIGMASK_ILL = (1 .SHL SIGILL) -SIGMASK_INT = (1 .SHL SIGINT) -SIGMASK_SEGV = (1 .SHL SIGSEGV) -SIGMASK_TERM = (1 .SHL SIGTERM) +; Table with signal handlers (asm code only) +.global sigtable ; Function declarations +.global __sig_ign +.global __sig_dfl .global _signal .global _raise - diff --git a/include/signal.h b/include/signal.h index e702366a2..884b0e8e4 100644 --- a/include/signal.h +++ b/include/signal.h @@ -42,12 +42,16 @@ typedef unsigned char sig_atomic_t; /* Type of a signal handler */ -typedef void (*__sigfunc) (int); +typedef void __fastcall__ (*__sigfunc) (int); + +/* Functions that implement SIG_IGN and SIG_DFL */ +void _sig_ign (int); +void _sig_dfl (int); /* Standard signal handling functions */ -#define SIG_IGN ((__sigfunc) 0x0000) -#define SIG_ERR ((__sigfunc) 0xFFFF) -#define SIG_DFL ((__sigfunc) 0xFFFE) +#define SIG_DFL _sig_dfl +#define SIG_IGN _sig_ign +#define SIG_ERR ((__sigfunc) 0x0000) /* Signal numbers */ #define SIGABRT 0