Commit | Line | Data |
---|---|---|
62217beb HD |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _ASM_PARISC_JUMP_LABEL_H | |
3 | #define _ASM_PARISC_JUMP_LABEL_H | |
4 | ||
5 | #ifndef __ASSEMBLY__ | |
6 | ||
7 | #include <linux/types.h> | |
4d7804d2 | 8 | #include <linux/stringify.h> |
62217beb HD |
9 | #include <asm/assembly.h> |
10 | ||
11 | #define JUMP_LABEL_NOP_SIZE 4 | |
12 | ||
13 | static __always_inline bool arch_static_branch(struct static_key *key, bool branch) | |
14 | { | |
4356e9f8 | 15 | asm goto("1:\n\t" |
62217beb HD |
16 | "nop\n\t" |
17 | ".pushsection __jump_table, \"aw\"\n\t" | |
07eecff8 | 18 | ".align %1\n\t" |
62217beb HD |
19 | ".word 1b - ., %l[l_yes] - .\n\t" |
20 | __stringify(ASM_ULONG_INSN) " %c0 - .\n\t" | |
21 | ".popsection\n\t" | |
07eecff8 HD |
22 | : : "i" (&((char *)key)[branch]), "i" (sizeof(long)) |
23 | : : l_yes); | |
62217beb HD |
24 | |
25 | return false; | |
26 | l_yes: | |
27 | return true; | |
28 | } | |
29 | ||
30 | static __always_inline bool arch_static_branch_jump(struct static_key *key, bool branch) | |
31 | { | |
4356e9f8 | 32 | asm goto("1:\n\t" |
62217beb HD |
33 | "b,n %l[l_yes]\n\t" |
34 | ".pushsection __jump_table, \"aw\"\n\t" | |
07eecff8 | 35 | ".align %1\n\t" |
62217beb HD |
36 | ".word 1b - ., %l[l_yes] - .\n\t" |
37 | __stringify(ASM_ULONG_INSN) " %c0 - .\n\t" | |
38 | ".popsection\n\t" | |
07eecff8 HD |
39 | : : "i" (&((char *)key)[branch]), "i" (sizeof(long)) |
40 | : : l_yes); | |
62217beb HD |
41 | |
42 | return false; | |
43 | l_yes: | |
44 | return true; | |
45 | } | |
46 | ||
47 | #endif /* __ASSEMBLY__ */ | |
48 | #endif |