X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Farm26%2Fmm%2Fextable.c;h=2d9f5b5a78d6b3c88981de9c506656293f445544;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=72644dd07201958e051fdb0073e42092572eedea;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/arch/arm26/mm/extable.c b/arch/arm26/mm/extable.c index 72644dd07..2d9f5b5a7 100644 --- a/arch/arm26/mm/extable.c +++ b/arch/arm26/mm/extable.c @@ -1,5 +1,5 @@ /* - * linux/arch/arm/mm/extable.c + * linux/arch/arm26/mm/extable.c */ #include @@ -11,6 +11,12 @@ int fixup_exception(struct pt_regs *regs) const struct exception_table_entry *fixup; fixup = search_exception_tables(instruction_pointer(regs)); + + /* + * The kernel runs in SVC mode - make sure we keep running in SVC mode + * by frobbing the PSR appropriately (PSR and PC are in the same reg. + * on ARM26) + */ if (fixup) regs->ARM_pc = fixup->fixup | PSR_I_BIT | MODE_SVC26;