]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * linux/arch/arm26/mm/extable.c | |
3 | */ | |
4 | ||
1da177e4 LT |
5 | #include <linux/module.h> |
6 | #include <asm/uaccess.h> | |
7 | ||
8 | int fixup_exception(struct pt_regs *regs) | |
9 | { | |
10 | const struct exception_table_entry *fixup; | |
11 | ||
12 | fixup = search_exception_tables(instruction_pointer(regs)); | |
13 | ||
14 | /* | |
15 | * The kernel runs in SVC mode - make sure we keep running in SVC mode | |
16 | * by frobbing the PSR appropriately (PSR and PC are in the same reg. | |
17 | * on ARM26) | |
18 | */ | |
19 | if (fixup) | |
20 | regs->ARM_pc = fixup->fixup | PSR_I_BIT | MODE_SVC26; | |
21 | ||
22 | return fixup != NULL; | |
23 | } | |
24 |