removed generated
[rrq/rrqforth.git] / signals.asm
1 ;;; Handle some signals
2
3         WORD p_setup_signals,'[p_setup_signals]',dovariable
4         ;; Set up signal handling;
5         mov rdi,11
6         mov rsi,sigaction_data
7         mov rdx,0
8         sigsetsize = sigset.end - sigset.start
9         mov r10,sigsetsize
10         mov rax,13
11         syscall
12         ret
13
14 signal_handler_SEGV_message:
15         STRING 10,'*** signal SEGV - restarting ***',10
16         
17 signal_handler_SEGV:
18         mov rdi,2
19         mov rsi,signal_handler_SEGV_message + 8
20         mov rdx,qword [signal_handler_SEGV_message]
21         mov rax,1
22         syscall
23         jmp p_quit_DFA
24
25 signal_handler_SEGV_restorer:
26         mov rax,15
27         syscall
28
29 sigaction_data:
30         dq signal_handler_SEGV ; void     (*sa_handler)(int);
31         ;dq 0 ; void     (*sa_sigaction)(int, siginfo_t *, void *);
32         dq 0x44000000 ; unsigned long sa_flags
33         dq 0 ;signal_handler_SEGV_restorer ; void     (*sa_restorer)(void);
34 sigset.start: ; sigset_t   sa_mask;
35         rept 8 x {
36           db 0 
37         }
38 sigset.end:
39