1 /* 2 * Copyright (C) 2009 Sunplus Core Technology Co., Ltd. 3 * Lennox Wu <lennox.wu@sunplusct.com> 4 * Chen Liqin <liqin.chen@sunplusct.com> 5 * Copyright (C) 2013 Regents of the University of California 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, see the file COPYING, or write 19 * to the Free Software Foundation, Inc., 20 */ 21 22 23 #include <linux/extable.h> 24 #include <linux/module.h> 25 #include <linux/uaccess.h> 26 27 int fixup_exception(struct pt_regs *regs) 28 { 29 const struct exception_table_entry *fixup; 30 31 fixup = search_exception_tables(regs->sepc); 32 if (fixup) { 33 regs->sepc = fixup->fixup; 34 return 1; 35 } 36 return 0; 37 } 38