xref: /linux/arch/arc/mm/extable.c (revision 03c11eb3b16dc0058589751dfd91f254be2be613)
1*d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
243697cb0SVineet Gupta /*
343697cb0SVineet Gupta  * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
443697cb0SVineet Gupta  *
543697cb0SVineet Gupta  * Borrowed heavily from MIPS
643697cb0SVineet Gupta  */
743697cb0SVineet Gupta 
89ce6dbe8SPaul Gortmaker #include <linux/export.h>
99ce6dbe8SPaul Gortmaker #include <linux/extable.h>
1043697cb0SVineet Gupta #include <linux/uaccess.h>
1143697cb0SVineet Gupta 
fixup_exception(struct pt_regs * regs)1243697cb0SVineet Gupta int fixup_exception(struct pt_regs *regs)
1343697cb0SVineet Gupta {
1443697cb0SVineet Gupta 	const struct exception_table_entry *fixup;
1543697cb0SVineet Gupta 
1643697cb0SVineet Gupta 	fixup = search_exception_tables(instruction_pointer(regs));
1743697cb0SVineet Gupta 	if (fixup) {
1843697cb0SVineet Gupta 		regs->ret = fixup->fixup;
1943697cb0SVineet Gupta 
2043697cb0SVineet Gupta 		return 1;
2143697cb0SVineet Gupta 	}
2243697cb0SVineet Gupta 
2343697cb0SVineet Gupta 	return 0;
2443697cb0SVineet Gupta }
25