Branch data Line data Source code
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 : : 8 : 3 : int fixup_exception(struct pt_regs *regs) 9 : : { 10 : : const struct exception_table_entry *fixup; 11 : : 12 : 3 : fixup = search_exception_tables(instruction_pointer(regs)); 13 : 3 : if (fixup) { 14 : 3 : 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 : 3 : return fixup != NULL; 22 : : }