1d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike/* 2ee3d9bd4de1ed93d2a7ee41c331ed30a1c7b8acdJeff Dike * Copyright (C) 2004 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) 3d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike * Licensed under the GPL 4d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike */ 5d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike 637185b33240870719b6b5913a46e6a441f1ae96fAl Viro#include <sysdep/stub.h> 737185b33240870719b6b5913a46e6a441f1ae96fAl Viro#include <sysdep/faultinfo.h> 837185b33240870719b6b5913a46e6a441f1ae96fAl Viro#include <sysdep/mcontext.h> 9d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike 10d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dikevoid __attribute__ ((__section__ (".__syscall_stub"))) 119b25fcbdc64369f4cce41e73fc0f57f3fd367d20Al Virostub_segv_handler(int sig, siginfo_t *info, void *p) 12d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike{ 139b25fcbdc64369f4cce41e73fc0f57f3fd367d20Al Viro struct ucontext *uc = p; 14d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike 15248b74c79ebb9fb55e146797a808836d90418c4bAl Viro GET_FAULTINFO_FROM_MC(*((struct faultinfo *) STUB_DATA), 1650f72b57946d565db74fae71bac23f3f319311c8Jeff Dike &uc->uc_mcontext); 17ee3d9bd4de1ed93d2a7ee41c331ed30a1c7b8acdJeff Dike trap_myself(); 18d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike} 19ee3d9bd4de1ed93d2a7ee41c331ed30a1c7b8acdJeff Dike 20