1/* 2 * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) 3 * Licensed under the GPL 4 */ 5 6#include <stdlib.h> 7#include <signal.h> 8#include "kern_util.h" 9#include "os.h" 10#include "mode.h" 11#include "longjmp.h" 12 13void usr2_handler(int sig, union uml_pt_regs *regs) 14{ 15 CHOOSE_MODE(syscall_handler_tt(sig, regs), (void) 0); 16} 17 18/* Initialized from linux_main() */ 19void (*sig_info[NSIG])(int, union uml_pt_regs *); 20 21void os_fill_handlinfo(struct kern_handlers h) 22{ 23 sig_info[SIGTRAP] = h.relay_signal; 24 sig_info[SIGFPE] = h.relay_signal; 25 sig_info[SIGILL] = h.relay_signal; 26 sig_info[SIGWINCH] = h.winch; 27 sig_info[SIGBUS] = h.bus_handler; 28 sig_info[SIGSEGV] = h.page_fault; 29 sig_info[SIGIO] = h.sigio_handler; 30 sig_info[SIGVTALRM] = h.timer_handler; 31 sig_info[SIGALRM] = h.timer_handler; 32 sig_info[SIGUSR2] = usr2_handler; 33} 34 35void do_longjmp(void *b, int val) 36{ 37 jmp_buf *buf = b; 38 39 UML_LONGJMP(buf, val); 40} 41