xref: /openbmc/linux/arch/mips/mm/extable.c (revision 9095bf25ea08135a5b74875dd0e3eeaddc4218a0)
11da177e4SLinus Torvalds /*
249316cbfSRalf Baechle  * This file is subject to the terms and conditions of the GNU General Public
349316cbfSRalf Baechle  * License.  See the file "COPYING" in the main directory of this archive
449316cbfSRalf Baechle  * for more details.
549316cbfSRalf Baechle  *
649316cbfSRalf Baechle  * Copyright (C) 1997, 99, 2001 - 2004 Ralf Baechle <ralf@linux-mips.org>
71da177e4SLinus Torvalds  */
89f3b8081SPaul Gortmaker #include <linux/extable.h>
91da177e4SLinus Torvalds #include <linux/spinlock.h>
101da177e4SLinus Torvalds #include <asm/branch.h>
11*7c0f6ba6SLinus Torvalds #include <linux/uaccess.h>
121da177e4SLinus Torvalds 
fixup_exception(struct pt_regs * regs)131da177e4SLinus Torvalds int fixup_exception(struct pt_regs *regs)
141da177e4SLinus Torvalds {
151da177e4SLinus Torvalds 	const struct exception_table_entry *fixup;
161da177e4SLinus Torvalds 
171da177e4SLinus Torvalds 	fixup = search_exception_tables(exception_epc(regs));
181da177e4SLinus Torvalds 	if (fixup) {
191da177e4SLinus Torvalds 		regs->cp0_epc = fixup->nextinsn;
201da177e4SLinus Torvalds 
211da177e4SLinus Torvalds 		return 1;
221da177e4SLinus Torvalds 	}
231da177e4SLinus Torvalds 
241da177e4SLinus Torvalds 	return 0;
251da177e4SLinus Torvalds }
26