1// SPDX-License-Identifier: GPL-2.0
2/*
3 *  linux/arch/arm/mm/extable.c
4 */
5#include <linux/extable.h>
6#include <linux/uaccess.h>
7
8int fixup_exception(struct pt_regs *regs)
9{
10	const struct exception_table_entry *fixup;
11
12	fixup = search_exception_tables(instruction_pointer(regs));
13	if (fixup) {
14		regs->ARM_pc = fixup->fixup;
15#ifdef CONFIG_THUMB2_KERNEL
16		/* Clear the IT state to avoid nasty surprises in the fixup */
17		regs->ARM_cpsr &= ~PSR_IT_MASK;
18#endif
19	}
20
21	return fixup != NULL;
22}
23