Merge tag 'usb-5.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
[linux/fpc-iii.git] / arch / mips / kernel / probes-common.h
blob73e1d5e95e19187f173218604b520f056b7c239d
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3 * Copyright (C) 2016 Imagination Technologies
4 * Author: Marcin Nowakowski <marcin.nowakowski@mips.com>
5 */
7 #ifndef __PROBES_COMMON_H
8 #define __PROBES_COMMON_H
10 #include <asm/inst.h>
12 int __insn_is_compact_branch(union mips_instruction insn);
14 static inline int __insn_has_delay_slot(const union mips_instruction insn)
16 switch (insn.i_format.opcode) {
18 * jr and jalr are in r_format format.
20 case spec_op:
21 switch (insn.r_format.func) {
22 case jalr_op:
23 case jr_op:
24 return 1;
26 break;
29 * This group contains:
30 * bltz_op, bgez_op, bltzl_op, bgezl_op,
31 * bltzal_op, bgezal_op, bltzall_op, bgezall_op.
33 case bcond_op:
34 switch (insn.i_format.rt) {
35 case bltz_op:
36 case bltzl_op:
37 case bgez_op:
38 case bgezl_op:
39 case bltzal_op:
40 case bltzall_op:
41 case bgezal_op:
42 case bgezall_op:
43 case bposge32_op:
44 return 1;
46 break;
49 * These are unconditional and in j_format.
51 case jal_op:
52 case j_op:
53 case beq_op:
54 case beql_op:
55 case bne_op:
56 case bnel_op:
57 case blez_op: /* not really i_format */
58 case blezl_op:
59 case bgtz_op:
60 case bgtzl_op:
61 return 1;
64 * And now the FPA/cp1 branch instructions.
66 case cop1_op:
67 #ifdef CONFIG_CPU_CAVIUM_OCTEON
68 case lwc2_op: /* This is bbit0 on Octeon */
69 case ldc2_op: /* This is bbit032 on Octeon */
70 case swc2_op: /* This is bbit1 on Octeon */
71 case sdc2_op: /* This is bbit132 on Octeon */
72 #endif
73 return 1;
76 return 0;
79 #endif /* __PROBES_COMMON_H */