diff options
author | Youling Tang <tangyouling@loongson.cn> | 2022-12-10 17:39:59 +0300 |
---|---|---|
committer | Huacai Chen <chenhuacai@loongson.cn> | 2022-12-14 03:36:11 +0300 |
commit | 26bc82441250f2e01621f5b26606a4f6926ee3ad (patch) | |
tree | 22cebfb8711706c1ccd2123c9356f05b55f529cf /arch/loongarch/mm/extable.c | |
parent | 3d36f4298ba91fbdec6bc56aa7bb0663cba6ab0c (diff) | |
download | linux-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.c | 7 |
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(); } |