diff options
Diffstat (limited to 'arch/arm/mm/extable.c')
-rw-r--r-- | arch/arm/mm/extable.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/mm/extable.c b/arch/arm/mm/extable.c index 9d285626bc7d..312e15e6d00b 100644 --- a/arch/arm/mm/extable.c +++ b/arch/arm/mm/extable.c | |||
@@ -9,8 +9,13 @@ int fixup_exception(struct pt_regs *regs) | |||
9 | const struct exception_table_entry *fixup; | 9 | const struct exception_table_entry *fixup; |
10 | 10 | ||
11 | fixup = search_exception_tables(instruction_pointer(regs)); | 11 | fixup = search_exception_tables(instruction_pointer(regs)); |
12 | if (fixup) | 12 | if (fixup) { |
13 | regs->ARM_pc = fixup->fixup; | 13 | regs->ARM_pc = fixup->fixup; |
14 | #ifdef CONFIG_THUMB2_KERNEL | ||
15 | /* Clear the IT state to avoid nasty surprises in the fixup */ | ||
16 | regs->ARM_cpsr &= ~PSR_IT_MASK; | ||
17 | #endif | ||
18 | } | ||
14 | 19 | ||
15 | return fixup != NULL; | 20 | return fixup != NULL; |
16 | } | 21 | } |