18c2ecf20Sopenharmony_ci/* 28c2ecf20Sopenharmony_ci * Copyright (C) 2004 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) 38c2ecf20Sopenharmony_ci * Licensed under the GPL 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include <sysdep/stub.h> 78c2ecf20Sopenharmony_ci#include <sysdep/faultinfo.h> 88c2ecf20Sopenharmony_ci#include <sysdep/mcontext.h> 98c2ecf20Sopenharmony_ci#include <sys/ucontext.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_civoid __attribute__ ((__section__ (".__syscall_stub"))) 128c2ecf20Sopenharmony_cistub_segv_handler(int sig, siginfo_t *info, void *p) 138c2ecf20Sopenharmony_ci{ 148c2ecf20Sopenharmony_ci ucontext_t *uc = p; 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci GET_FAULTINFO_FROM_MC(*((struct faultinfo *) STUB_DATA), 178c2ecf20Sopenharmony_ci &uc->uc_mcontext); 188c2ecf20Sopenharmony_ci trap_myself(); 198c2ecf20Sopenharmony_ci} 208c2ecf20Sopenharmony_ci 21