18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2009 Sunplus Core Technology Co., Ltd. 48c2ecf20Sopenharmony_ci * Lennox Wu <lennox.wu@sunplusct.com> 58c2ecf20Sopenharmony_ci * Chen Liqin <liqin.chen@sunplusct.com> 68c2ecf20Sopenharmony_ci * Copyright (C) 2013 Regents of the University of California 78c2ecf20Sopenharmony_ci */ 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/extable.h> 118c2ecf20Sopenharmony_ci#include <linux/module.h> 128c2ecf20Sopenharmony_ci#include <linux/uaccess.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciint fixup_exception(struct pt_regs *regs) 158c2ecf20Sopenharmony_ci{ 168c2ecf20Sopenharmony_ci const struct exception_table_entry *fixup; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci fixup = search_exception_tables(regs->epc); 198c2ecf20Sopenharmony_ci if (fixup) { 208c2ecf20Sopenharmony_ci regs->epc = fixup->fixup; 218c2ecf20Sopenharmony_ci return 1; 228c2ecf20Sopenharmony_ci } 238c2ecf20Sopenharmony_ci return 0; 248c2ecf20Sopenharmony_ci} 25