asm-extable.h (2e77a62cb3a6d2eb9dd875516411bcd131dd04e7) asm-extable.h (753b32368705c396000f95f33c3b7018474e33ad)
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
10#ifdef __ASSEMBLY__
11
12#define __ASM_EXTABLE_RAW(insn, fixup, type, data) \
13 .pushsection __ex_table, "a"; \
14 .align 2; \
15 .long ((insn) - .); \
16 .long ((fixup) - .); \

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

70 "(" \
71 EX_DATA_REG(ERR, err) " | " \
72 EX_DATA_REG(ZERO, zero) \
73 ")")
74
75#define _ASM_EXTABLE_UACCESS_ERR(insn, fixup, err) \
76 _ASM_EXTABLE_UACCESS_ERR_ZERO(insn, fixup, err, wzr)
77
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) - .); \

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

71 "(" \
72 EX_DATA_REG(ERR, err) " | " \
73 EX_DATA_REG(ZERO, zero) \
74 ")")
75
76#define _ASM_EXTABLE_UACCESS_ERR(insn, fixup, err) \
77 _ASM_EXTABLE_UACCESS_ERR_ZERO(insn, fixup, err, wzr)
78
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
78#endif /* __ASSEMBLY__ */
79
80#endif /* __ASM_ASM_EXTABLE_H */
93#endif /* __ASSEMBLY__ */
94
95#endif /* __ASM_ASM_EXTABLE_H */