0001
0002
0003
0004
0005
0006
0007 #ifndef __PROBES_COMMON_H
0008 #define __PROBES_COMMON_H
0009
0010 #include <asm/inst.h>
0011
0012 int __insn_is_compact_branch(union mips_instruction insn);
0013
0014 static inline int __insn_has_delay_slot(const union mips_instruction insn)
0015 {
0016 switch (insn.i_format.opcode) {
0017
0018
0019
0020 case spec_op:
0021 switch (insn.r_format.func) {
0022 case jalr_op:
0023 case jr_op:
0024 return 1;
0025 }
0026 break;
0027
0028
0029
0030
0031
0032
0033 case bcond_op:
0034 switch (insn.i_format.rt) {
0035 case bltz_op:
0036 case bltzl_op:
0037 case bgez_op:
0038 case bgezl_op:
0039 case bltzal_op:
0040 case bltzall_op:
0041 case bgezal_op:
0042 case bgezall_op:
0043 case bposge32_op:
0044 return 1;
0045 }
0046 break;
0047
0048
0049
0050
0051 case jal_op:
0052 case j_op:
0053 case beq_op:
0054 case beql_op:
0055 case bne_op:
0056 case bnel_op:
0057 case blez_op:
0058 case blezl_op:
0059 case bgtz_op:
0060 case bgtzl_op:
0061 return 1;
0062
0063
0064
0065
0066 case cop1_op:
0067 #ifdef CONFIG_CPU_CAVIUM_OCTEON
0068 case lwc2_op:
0069 case ldc2_op:
0070 case swc2_op:
0071 case sdc2_op:
0072 #endif
0073 return 1;
0074 }
0075
0076 return 0;
0077 }
0078
0079 #endif