asm-extable.h (03ab8e6297acd1bc0eedaa050e2a1635c576fd11) asm-extable.h (4953fc3d3270b7466a3b334838b76308c75f7751)
1/* SPDX-License-Identifier: GPL-2.0-only */
2#ifndef __ASM_ASM_EXTABLE_H
3#define __ASM_ASM_EXTABLE_H
4
5#define EX_TYPE_NONE 0
6#define EX_TYPE_FIXUP 1
7#define EX_TYPE_BPF 2
8#define EX_TYPE_UACCESS_ERR_ZERO 3
1/* SPDX-License-Identifier: GPL-2.0-only */
2#ifndef __ASM_ASM_EXTABLE_H
3#define __ASM_ASM_EXTABLE_H
4
5#define EX_TYPE_NONE 0
6#define EX_TYPE_FIXUP 1
7#define EX_TYPE_BPF 2
8#define EX_TYPE_UACCESS_ERR_ZERO 3
9#define EX_TYPE_LOAD_UNALIGNED_ZEROPAD 4
9#define EX_TYPE_KACCESS_ERR_ZERO 4
10#define EX_TYPE_LOAD_UNALIGNED_ZEROPAD 5
10
11#ifdef __ASSEMBLY__
12
13#define __ASM_EXTABLE_RAW(insn, fixup, type, data) \
14 .pushsection __ex_table, "a"; \
15 .align 2; \
16 .long ((insn) - .); \
17 .long ((fixup) - .); \

--- 50 unchanged lines hidden (view full) ---

68 __DEFINE_ASM_GPR_NUMS \
69 __ASM_EXTABLE_RAW(#insn, #fixup, \
70 __stringify(EX_TYPE_UACCESS_ERR_ZERO), \
71 "(" \
72 EX_DATA_REG(ERR, err) " | " \
73 EX_DATA_REG(ZERO, zero) \
74 ")")
75
11
12#ifdef __ASSEMBLY__
13
14#define __ASM_EXTABLE_RAW(insn, fixup, type, data) \
15 .pushsection __ex_table, "a"; \
16 .align 2; \
17 .long ((insn) - .); \
18 .long ((fixup) - .); \

--- 50 unchanged lines hidden (view full) ---

69 __DEFINE_ASM_GPR_NUMS \
70 __ASM_EXTABLE_RAW(#insn, #fixup, \
71 __stringify(EX_TYPE_UACCESS_ERR_ZERO), \
72 "(" \
73 EX_DATA_REG(ERR, err) " | " \
74 EX_DATA_REG(ZERO, zero) \
75 ")")
76
77#define _ASM_EXTABLE_KACCESS_ERR_ZERO(insn, fixup, err, zero) \
78 __DEFINE_ASM_GPR_NUMS \
79 __ASM_EXTABLE_RAW(#insn, #fixup, \
80 __stringify(EX_TYPE_KACCESS_ERR_ZERO), \
81 "(" \
82 EX_DATA_REG(ERR, err) " | " \
83 EX_DATA_REG(ZERO, zero) \
84 ")")
85
76#define _ASM_EXTABLE_UACCESS_ERR(insn, fixup, err) \
77 _ASM_EXTABLE_UACCESS_ERR_ZERO(insn, fixup, err, wzr)
78
86#define _ASM_EXTABLE_UACCESS_ERR(insn, fixup, err) \
87 _ASM_EXTABLE_UACCESS_ERR_ZERO(insn, fixup, err, wzr)
88
89#define _ASM_EXTABLE_KACCESS_ERR(insn, fixup, err) \
90 _ASM_EXTABLE_KACCESS_ERR_ZERO(insn, fixup, err, wzr)
91
79#define EX_DATA_REG_DATA_SHIFT 0
80#define EX_DATA_REG_DATA GENMASK(4, 0)
81#define EX_DATA_REG_ADDR_SHIFT 5
82#define EX_DATA_REG_ADDR GENMASK(9, 5)
83
84#define _ASM_EXTABLE_LOAD_UNALIGNED_ZEROPAD(insn, fixup, data, addr) \
85 __DEFINE_ASM_GPR_NUMS \
86 __ASM_EXTABLE_RAW(#insn, #fixup, \
87 __stringify(EX_TYPE_LOAD_UNALIGNED_ZEROPAD), \
88 "(" \
89 EX_DATA_REG(DATA, data) " | " \
90 EX_DATA_REG(ADDR, addr) \
91 ")")
92
93#endif /* __ASSEMBLY__ */
94
95#endif /* __ASM_ASM_EXTABLE_H */
92#define EX_DATA_REG_DATA_SHIFT 0
93#define EX_DATA_REG_DATA GENMASK(4, 0)
94#define EX_DATA_REG_ADDR_SHIFT 5
95#define EX_DATA_REG_ADDR GENMASK(9, 5)
96
97#define _ASM_EXTABLE_LOAD_UNALIGNED_ZEROPAD(insn, fixup, data, addr) \
98 __DEFINE_ASM_GPR_NUMS \
99 __ASM_EXTABLE_RAW(#insn, #fixup, \
100 __stringify(EX_TYPE_LOAD_UNALIGNED_ZEROPAD), \
101 "(" \
102 EX_DATA_REG(DATA, data) " | " \
103 EX_DATA_REG(ADDR, addr) \
104 ")")
105
106#endif /* __ASSEMBLY__ */
107
108#endif /* __ASM_ASM_EXTABLE_H */