summaryrefslogtreecommitdiff
path: root/arch/s390/include/asm/asm-extable.h
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2022-02-28 16:52:42 +0300
committerVasily Gorbik <gor@linux.ibm.com>2022-03-08 02:33:00 +0300
commit3d66718cd62d45f3210f047248eab9e76d227e47 (patch)
tree5f2aa9740d8a8dae078cade30935e59b94fb6497 /arch/s390/include/asm/asm-extable.h
parent46fee16f571250d6cef74af73ffd47512da981a2 (diff)
downloadlinux-3d66718cd62d45f3210f047248eab9e76d227e47.tar.xz
s390/extable: convert to relative table with data
Follow arm64, riscv, and x86 and change extable layout to common "relative table with data". This allows to get rid of s390 specific code in sorttable.c. The main difference to before is that extable entries do not contain a relative function pointer anymore. Instead data and type fields are added. The type field is used to indicate which exception handler needs to be called, while the data field is currently unused. Acked-by: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/asm-extable.h')
-rw-r--r--arch/s390/include/asm/asm-extable.h15
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/s390/include/asm/asm-extable.h b/arch/s390/include/asm/asm-extable.h
index 620390f17f0c..61484a5f1209 100644
--- a/arch/s390/include/asm/asm-extable.h
+++ b/arch/s390/include/asm/asm-extable.h
@@ -5,17 +5,22 @@
#include <linux/stringify.h>
#include <asm/asm-const.h>
-#define __EX_TABLE(_section, _fault, _target) \
+#define EX_TYPE_NONE 0
+#define EX_TYPE_FIXUP 1
+#define EX_TYPE_BPF 2
+
+#define __EX_TABLE(_section, _fault, _target, _type) \
stringify_in_c(.section _section,"a";) \
- stringify_in_c(.align 8;) \
+ stringify_in_c(.align 4;) \
stringify_in_c(.long (_fault) - .;) \
stringify_in_c(.long (_target) - .;) \
- stringify_in_c(.quad 0;) \
+ stringify_in_c(.short (_type);) \
+ stringify_in_c(.short 0;) \
stringify_in_c(.previous)
#define EX_TABLE(_fault, _target) \
- __EX_TABLE(__ex_table, _fault, _target)
+ __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_FIXUP)
#define EX_TABLE_AMODE31(_fault, _target) \
- __EX_TABLE(.amode31.ex_table, _fault, _target)
+ __EX_TABLE(.amode31.ex_table, _fault, _target, EX_TYPE_FIXUP)
#endif /* __ASM_EXTABLE_H */