summaryrefslogtreecommitdiff
path: root/arch/loongarch/mm/extable.c
diff options
context:
space:
mode:
authorYouling Tang <tangyouling@loongson.cn>2022-12-10 17:39:59 +0300
committerHuacai Chen <chenhuacai@loongson.cn>2022-12-14 03:36:11 +0300
commit26bc82441250f2e01621f5b26606a4f6926ee3ad (patch)
tree22cebfb8711706c1ccd2123c9356f05b55f529cf /arch/loongarch/mm/extable.c
parent3d36f4298ba91fbdec6bc56aa7bb0663cba6ab0c (diff)
downloadlinux-26bc82441250f2e01621f5b26606a4f6926ee3ad.tar.xz
LoongArch: extable: Add `type` and `data` fields
This is a LoongArch port of commit d6e2cc564775 ("arm64: extable: add `type` and `data` fields"). Subsequent patches will add specialized handlers for fixups, in addition to the simple PC fixup we have today. In preparation, this patch adds a new `type` field to struct exception_table_entry, and uses this to distinguish the fixup and other cases. A `data` field is also added so that subsequent patches can associate data specific to each exception site (e.g. register numbers). Handlers are named ex_handler_*() for consistency, following the example of x86. At the same time, get_ex_fixup() is split out into a helper so that it can be used by other ex_handler_*() functions in the subsequent patches. Signed-off-by: Youling Tang <tangyouling@loongson.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Diffstat (limited to 'arch/loongarch/mm/extable.c')
-rw-r--r--arch/loongarch/mm/extable.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/loongarch/mm/extable.c b/arch/loongarch/mm/extable.c
index 08a9a7d6357a..fd2395221cff 100644
--- a/arch/loongarch/mm/extable.c
+++ b/arch/loongarch/mm/extable.c
@@ -30,5 +30,10 @@ bool fixup_exception(struct pt_regs *regs)
if (!ex)
return false;
- return ex_handler_fixup(ex, regs);
+ switch (ex->type) {
+ case EX_TYPE_FIXUP:
+ return ex_handler_fixup(ex, regs);
+ }
+
+ BUG();
}