/Linux-v4.19/tools/objtool/arch/x86/lib/ |
D | insn.c | 30 #define validate_next(t, insn, n) \ argument 31 ((insn)->next_byte + sizeof(t) + n <= (insn)->end_kaddr) 33 #define __get_next(t, insn) \ argument 34 ({ t r = *(t*)insn->next_byte; insn->next_byte += sizeof(t); r; }) 36 #define __peek_nbyte_next(t, insn, n) \ argument 37 ({ t r = *(t*)((insn)->next_byte + n); r; }) 39 #define get_next(t, insn) \ argument 40 ({ if (unlikely(!validate_next(t, insn, 0))) goto err_out; __get_next(t, insn); }) 42 #define peek_nbyte_next(t, insn, n) \ argument 43 ({ if (unlikely(!validate_next(t, insn, n))) goto err_out; __peek_nbyte_next(t, insn, n); }) [all …]
|
/Linux-v4.19/tools/perf/util/intel-pt-decoder/ |
D | insn.c | 30 #define validate_next(t, insn, n) \ argument 31 ((insn)->next_byte + sizeof(t) + n <= (insn)->end_kaddr) 33 #define __get_next(t, insn) \ argument 34 ({ t r = *(t*)insn->next_byte; insn->next_byte += sizeof(t); r; }) 36 #define __peek_nbyte_next(t, insn, n) \ argument 37 ({ t r = *(t*)((insn)->next_byte + n); r; }) 39 #define get_next(t, insn) \ argument 40 ({ if (unlikely(!validate_next(t, insn, 0))) goto err_out; __get_next(t, insn); }) 42 #define peek_nbyte_next(t, insn, n) \ argument 43 ({ if (unlikely(!validate_next(t, insn, n))) goto err_out; __peek_nbyte_next(t, insn, n); }) [all …]
|
D | insn.h | 36 struct insn { struct 101 extern void insn_init(struct insn *insn, const void *kaddr, int buf_len, int x86_64); 102 extern void insn_get_prefixes(struct insn *insn); 103 extern void insn_get_opcode(struct insn *insn); 104 extern void insn_get_modrm(struct insn *insn); 105 extern void insn_get_sib(struct insn *insn); 106 extern void insn_get_displacement(struct insn *insn); 107 extern void insn_get_immediate(struct insn *insn); 108 extern void insn_get_length(struct insn *insn); 111 static inline void insn_get_attribute(struct insn *insn) in insn_get_attribute() argument [all …]
|
D | intel-pt-insn-decoder.c | 36 static void intel_pt_insn_decoder(struct insn *insn, in intel_pt_insn_decoder() argument 45 if (insn_is_avx(insn)) { in intel_pt_insn_decoder() 48 intel_pt_insn->length = insn->length; in intel_pt_insn_decoder() 52 switch (insn->opcode.bytes[0]) { in intel_pt_insn_decoder() 54 switch (insn->opcode.bytes[1]) { in intel_pt_insn_decoder() 118 ext = (insn->modrm.bytes[0] >> 3) & 0x7; in intel_pt_insn_decoder() 140 intel_pt_insn->length = insn->length; in intel_pt_insn_decoder() 145 switch (insn->immediate.nbytes) { in intel_pt_insn_decoder() 147 intel_pt_insn->rel = insn->immediate.value; in intel_pt_insn_decoder() 151 bswap_16((short)insn->immediate.value); in intel_pt_insn_decoder() [all …]
|
/Linux-v4.19/arch/x86/lib/ |
D | insn.c | 30 #define validate_next(t, insn, n) \ argument 31 ((insn)->next_byte + sizeof(t) + n <= (insn)->end_kaddr) 33 #define __get_next(t, insn) \ argument 34 ({ t r = *(t*)insn->next_byte; insn->next_byte += sizeof(t); r; }) 36 #define __peek_nbyte_next(t, insn, n) \ argument 37 ({ t r = *(t*)((insn)->next_byte + n); r; }) 39 #define get_next(t, insn) \ argument 40 ({ if (unlikely(!validate_next(t, insn, 0))) goto err_out; __get_next(t, insn); }) 42 #define peek_nbyte_next(t, insn, n) \ argument 43 ({ if (unlikely(!validate_next(t, insn, n))) goto err_out; __peek_nbyte_next(t, insn, n); }) [all …]
|
D | insn-eval.c | 37 static bool is_string_insn(struct insn *insn) in is_string_insn() argument 39 insn_get_opcode(insn); in is_string_insn() 42 if (insn->opcode.nbytes != 1) in is_string_insn() 45 switch (insn->opcode.bytes[0]) { in is_string_insn() 69 static int get_seg_reg_override_idx(struct insn *insn) in get_seg_reg_override_idx() argument 74 insn_get_prefixes(insn); in get_seg_reg_override_idx() 77 for (i = 0; i < insn->prefixes.nbytes; i++) { in get_seg_reg_override_idx() 80 attr = inat_get_opcode_attribute(insn->prefixes.bytes[i]); in get_seg_reg_override_idx() 131 static bool check_seg_overrides(struct insn *insn, int regoff) in check_seg_overrides() argument 133 if (regoff == offsetof(struct pt_regs, di) && is_string_insn(insn)) in check_seg_overrides() [all …]
|
/Linux-v4.19/arch/x86/include/asm/ |
D | insn.h | 36 struct insn { struct 101 extern void insn_init(struct insn *insn, const void *kaddr, int buf_len, int x86_64); 102 extern void insn_get_prefixes(struct insn *insn); 103 extern void insn_get_opcode(struct insn *insn); 104 extern void insn_get_modrm(struct insn *insn); 105 extern void insn_get_sib(struct insn *insn); 106 extern void insn_get_displacement(struct insn *insn); 107 extern void insn_get_immediate(struct insn *insn); 108 extern void insn_get_length(struct insn *insn); 111 static inline void insn_get_attribute(struct insn *insn) in insn_get_attribute() argument [all …]
|
/Linux-v4.19/tools/objtool/arch/x86/include/asm/ |
D | insn.h | 36 struct insn { struct 101 extern void insn_init(struct insn *insn, const void *kaddr, int buf_len, int x86_64); 102 extern void insn_get_prefixes(struct insn *insn); 103 extern void insn_get_opcode(struct insn *insn); 104 extern void insn_get_modrm(struct insn *insn); 105 extern void insn_get_sib(struct insn *insn); 106 extern void insn_get_displacement(struct insn *insn); 107 extern void insn_get_immediate(struct insn *insn); 108 extern void insn_get_length(struct insn *insn); 111 static inline void insn_get_attribute(struct insn *insn) in insn_get_attribute() argument [all …]
|
/Linux-v4.19/kernel/bpf/ |
D | disasm.c | 25 const struct bpf_insn *insn, in __func_get_name() argument 30 if (insn->src_reg != BPF_PSEUDO_CALL && in __func_get_name() 31 insn->imm >= 0 && insn->imm < __BPF_FUNC_MAX_ID && in __func_get_name() 32 func_id_str[insn->imm]) in __func_get_name() 33 return func_id_str[insn->imm]; in __func_get_name() 36 return cbs->cb_call(cbs->private_data, insn); in __func_get_name() 38 if (insn->src_reg == BPF_PSEUDO_CALL) in __func_get_name() 39 snprintf(buff, len, "%+d", insn->imm); in __func_get_name() 45 const struct bpf_insn *insn, in __func_imm_name() argument 49 return cbs->cb_imm(cbs->private_data, insn, full_imm); in __func_imm_name() [all …]
|
/Linux-v4.19/arch/arm64/kernel/ |
D | insn.c | 59 enum aarch64_insn_encoding_class __kprobes aarch64_get_insn_class(u32 insn) in aarch64_get_insn_class() argument 61 return aarch64_insn_encoding_class[(insn >> 25) & 0xf]; in aarch64_get_insn_class() 65 bool __kprobes aarch64_insn_is_nop(u32 insn) in aarch64_insn_is_nop() argument 67 if (!aarch64_insn_is_hint(insn)) in aarch64_insn_is_nop() 70 switch (insn & 0xFE0) { in aarch64_insn_is_nop() 82 bool aarch64_insn_is_branch_imm(u32 insn) in aarch64_insn_is_branch_imm() argument 84 return (aarch64_insn_is_b(insn) || aarch64_insn_is_bl(insn) || in aarch64_insn_is_branch_imm() 85 aarch64_insn_is_tbz(insn) || aarch64_insn_is_tbnz(insn) || in aarch64_insn_is_branch_imm() 86 aarch64_insn_is_cbz(insn) || aarch64_insn_is_cbnz(insn) || in aarch64_insn_is_branch_imm() 87 aarch64_insn_is_bcond(insn)); in aarch64_insn_is_branch_imm() [all …]
|
D | armv8_deprecated.c | 92 struct insn_emulation *insn = (struct insn_emulation *)data; in enable_insn_hw_mode() local 93 if (insn->ops->set_hw_mode) in enable_insn_hw_mode() 94 insn->ops->set_hw_mode(true); in enable_insn_hw_mode() 99 struct insn_emulation *insn = (struct insn_emulation *)data; in disable_insn_hw_mode() local 100 if (insn->ops->set_hw_mode) in disable_insn_hw_mode() 101 insn->ops->set_hw_mode(false); in disable_insn_hw_mode() 105 static int run_all_cpu_set_hw_mode(struct insn_emulation *insn, bool enable) in run_all_cpu_set_hw_mode() argument 107 if (!insn->ops->set_hw_mode) in run_all_cpu_set_hw_mode() 110 on_each_cpu(enable_insn_hw_mode, (void *)insn, true); in run_all_cpu_set_hw_mode() 112 on_each_cpu(disable_insn_hw_mode, (void *)insn, true); in run_all_cpu_set_hw_mode() [all …]
|
/Linux-v4.19/arch/powerpc/xmon/ |
D | spu.h | 91 #define SIGNED_EXTRACT(insn,size,pos) (((int)((insn) << (32-size-pos))) >> (32-size)) argument 92 #define UNSIGNED_EXTRACT(insn,size,pos) (((insn) >> pos) & ((1 << size)-1)) argument 94 #define DECODE_INSN_RT(insn) (insn & 0x7f) argument 95 #define DECODE_INSN_RA(insn) ((insn >> 7) & 0x7f) argument 96 #define DECODE_INSN_RB(insn) ((insn >> 14) & 0x7f) argument 97 #define DECODE_INSN_RC(insn) ((insn >> 21) & 0x7f) argument 99 #define DECODE_INSN_I10(insn) SIGNED_EXTRACT(insn,10,14) argument 100 #define DECODE_INSN_U10(insn) UNSIGNED_EXTRACT(insn,10,14) argument 103 #define DECODE_INSN_I16(insn) SIGNED_EXTRACT(insn,16,7) argument 104 #define DECODE_INSN_U16(insn) UNSIGNED_EXTRACT(insn,16,7) argument [all …]
|
/Linux-v4.19/tools/objtool/ |
D | check.c | 33 struct instruction *insn; member 42 struct instruction *insn; in find_insn() local 44 hash_for_each_possible(file->insn_hash, insn, hash, offset) in find_insn() 45 if (insn->sec == sec && insn->offset == offset) in find_insn() 46 return insn; in find_insn() 52 struct instruction *insn) in next_insn_same_sec() argument 54 struct instruction *next = list_next_entry(insn, list); in next_insn_same_sec() 56 if (!next || &next->list == &file->insn_list || next->sec != insn->sec) in next_insn_same_sec() 63 struct instruction *insn) in next_insn_same_func() argument 65 struct instruction *next = list_next_entry(insn, list); in next_insn_same_func() [all …]
|
/Linux-v4.19/arch/s390/tools/ |
D | gen_opcode_table.c | 22 struct insn { struct 44 struct insn *insn; argument 154 struct insn insn; in read_instructions() local 158 rc = scanf("%s %s %s", insn.opcode, insn.name, insn.format); in read_instructions() 163 insn.type = insn_format_to_type(insn.format); in read_instructions() 164 insn.name_len = strlen(insn.name); in read_instructions() 165 for (i = 0; i <= insn.name_len; i++) in read_instructions() 166 insn.upper[i] = toupper((unsigned char)insn.name[i]); in read_instructions() 168 desc->insn = realloc(desc->insn, desc->nr * sizeof(*desc->insn)); in read_instructions() 169 if (!desc->insn) in read_instructions() [all …]
|
/Linux-v4.19/arch/arm/probes/kprobes/ |
D | actions-thumb.c | 27 t32_simulate_table_branch(probes_opcode_t insn, in t32_simulate_table_branch() argument 31 int rn = (insn >> 16) & 0xf; in t32_simulate_table_branch() 32 int rm = insn & 0xf; in t32_simulate_table_branch() 38 if (insn & 0x10) /* TBH */ in t32_simulate_table_branch() 47 t32_simulate_mrs(probes_opcode_t insn, in t32_simulate_mrs() argument 50 int rd = (insn >> 8) & 0xf; in t32_simulate_mrs() 56 t32_simulate_cond_branch(probes_opcode_t insn, in t32_simulate_cond_branch() argument 61 long offset = insn & 0x7ff; /* imm11 */ in t32_simulate_cond_branch() 62 offset += (insn & 0x003f0000) >> 5; /* imm6 */ in t32_simulate_cond_branch() 63 offset += (insn & 0x00002000) << 4; /* J1 */ in t32_simulate_cond_branch() [all …]
|
D | actions-common.c | 21 static void __kprobes simulate_ldm1stm1(probes_opcode_t insn, in simulate_ldm1stm1() argument 25 int rn = (insn >> 16) & 0xf; in simulate_ldm1stm1() 26 int lbit = insn & (1 << 20); in simulate_ldm1stm1() 27 int wbit = insn & (1 << 21); in simulate_ldm1stm1() 28 int ubit = insn & (1 << 23); in simulate_ldm1stm1() 29 int pbit = insn & (1 << 24); in simulate_ldm1stm1() 35 reg_bit_vector = insn & 0xffff; in simulate_ldm1stm1() 45 reg_bit_vector = insn & 0xffff; in simulate_ldm1stm1() 63 static void __kprobes simulate_stm1_pc(probes_opcode_t insn, in simulate_stm1_pc() argument 70 simulate_ldm1stm1(insn, asi, regs); in simulate_stm1_pc() [all …]
|
/Linux-v4.19/arch/mips/kernel/ |
D | branch.c | 60 union mips_instruction insn = (union mips_instruction)dec_insn.insn; in __mm_isBranchInstr() local 68 switch (insn.mm_i_format.opcode) { in __mm_isBranchInstr() 70 if ((insn.mm_i_format.simmediate & MM_POOL32A_MINOR_MASK) == in __mm_isBranchInstr() 72 switch (insn.mm_i_format.simmediate >> in __mm_isBranchInstr() 78 if (insn.mm_i_format.rt != 0) /* Not mm_jr */ in __mm_isBranchInstr() 79 regs->regs[insn.mm_i_format.rt] = in __mm_isBranchInstr() 83 *contpc = regs->regs[insn.mm_i_format.rs]; in __mm_isBranchInstr() 89 switch (insn.mm_i_format.rt) { in __mm_isBranchInstr() 97 if ((long)regs->regs[insn.mm_i_format.rs] < 0) in __mm_isBranchInstr() 100 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr() [all …]
|
/Linux-v4.19/arch/sparc/kernel/ |
D | unaligned_32.c | 33 static inline enum direction decode_direction(unsigned int insn) in decode_direction() argument 35 unsigned long tmp = (insn >> 21) & 1; in decode_direction() 40 if(((insn>>19)&0x3f) == 15) in decode_direction() 48 static inline int decode_access_size(unsigned int insn) in decode_access_size() argument 50 insn = (insn >> 19) & 3; in decode_access_size() 52 if(!insn) in decode_access_size() 54 else if(insn == 3) in decode_access_size() 56 else if(insn == 2) in decode_access_size() 59 printk("Impossible unaligned trap. insn=%08x\n", insn); in decode_access_size() 66 static inline int decode_signedness(unsigned int insn) in decode_signedness() argument [all …]
|
/Linux-v4.19/arch/arm64/kernel/probes/ |
D | decode-insn.c | 26 static bool __kprobes aarch64_insn_is_steppable(u32 insn) in aarch64_insn_is_steppable() argument 35 if (aarch64_get_insn_class(insn) == AARCH64_INSN_CLS_BR_SYS) { in aarch64_insn_is_steppable() 36 if (aarch64_insn_is_branch(insn) || in aarch64_insn_is_steppable() 37 aarch64_insn_is_msr_imm(insn) || in aarch64_insn_is_steppable() 38 aarch64_insn_is_msr_reg(insn) || in aarch64_insn_is_steppable() 39 aarch64_insn_is_exception(insn) || in aarch64_insn_is_steppable() 40 aarch64_insn_is_eret(insn)) in aarch64_insn_is_steppable() 48 if (aarch64_insn_is_mrs(insn)) in aarch64_insn_is_steppable() 49 return aarch64_insn_extract_system_reg(insn) in aarch64_insn_is_steppable() 56 if (aarch64_insn_is_hint(insn)) in aarch64_insn_is_steppable() [all …]
|
/Linux-v4.19/arch/s390/lib/ |
D | probes.c | 12 int probe_is_prohibited_opcode(u16 *insn) in probe_is_prohibited_opcode() argument 14 if (!is_known_insn((unsigned char *)insn)) in probe_is_prohibited_opcode() 16 switch (insn[0] >> 8) { in probe_is_prohibited_opcode() 25 switch (insn[0] & 0x0f) { in probe_is_prohibited_opcode() 30 switch (insn[0]) { in probe_is_prohibited_opcode() 46 int probe_get_fixup_type(u16 *insn) in probe_get_fixup_type() argument 51 switch (insn[0] >> 8) { in probe_get_fixup_type() 56 if ((insn[0] & 0x0f) == 0) in probe_get_fixup_type() 77 if ((insn[0] & 0xff) == 0xb2) in probe_get_fixup_type() 81 if ((insn[0] & 0x0f) == 0x05) in probe_get_fixup_type() [all …]
|
/Linux-v4.19/drivers/staging/comedi/kcomedilib/ |
D | kcomedilib_main.c | 67 struct comedi_insn *insn, in comedi_do_insn() argument 81 if (insn->subdev >= dev->n_subdevices) { in comedi_do_insn() 85 s = &dev->subdevices[insn->subdev]; in comedi_do_insn() 89 "%d not usable subdevice\n", insn->subdev); in comedi_do_insn() 96 ret = comedi_check_chanlist(s, 1, &insn->chanspec); in comedi_do_insn() 109 switch (insn->insn) { in comedi_do_insn() 111 ret = s->insn_bits(dev, s, insn, data); in comedi_do_insn() 115 ret = s->insn_config(dev, s, insn, data); in comedi_do_insn() 132 struct comedi_insn insn; in comedi_dio_get_config() local 136 memset(&insn, 0, sizeof(insn)); in comedi_dio_get_config() [all …]
|
/Linux-v4.19/arch/x86/tools/ |
D | insn_sanity.c | 80 static void dump_insn(FILE *fp, struct insn *insn) in dump_insn() argument 83 dump_field(fp, "prefixes", "\t", &insn->prefixes); in dump_insn() 84 dump_field(fp, "rex_prefix", "\t", &insn->rex_prefix); in dump_insn() 85 dump_field(fp, "vex_prefix", "\t", &insn->vex_prefix); in dump_insn() 86 dump_field(fp, "opcode", "\t", &insn->opcode); in dump_insn() 87 dump_field(fp, "modrm", "\t", &insn->modrm); in dump_insn() 88 dump_field(fp, "sib", "\t", &insn->sib); in dump_insn() 89 dump_field(fp, "displacement", "\t", &insn->displacement); in dump_insn() 90 dump_field(fp, "immediate1", "\t", &insn->immediate1); in dump_insn() 91 dump_field(fp, "immediate2", "\t", &insn->immediate2); in dump_insn() [all …]
|
/Linux-v4.19/arch/x86/kernel/ |
D | uprobes.c | 54 #define OPCODE1(insn) ((insn)->opcode.bytes[0]) argument 55 #define OPCODE2(insn) ((insn)->opcode.bytes[1]) argument 56 #define OPCODE3(insn) ((insn)->opcode.bytes[2]) argument 57 #define MODRM_REG(insn) X86_MODRM_REG((insn)->modrm.value) argument 269 static bool is_prefix_bad(struct insn *insn) in is_prefix_bad() argument 273 for (i = 0; i < insn->prefixes.nbytes; i++) { in is_prefix_bad() 276 attr = inat_get_opcode_attribute(insn->prefixes.bytes[i]); in is_prefix_bad() 289 static int uprobe_init_insn(struct arch_uprobe *auprobe, struct insn *insn, bool x86_64) in uprobe_init_insn() argument 293 insn_init(insn, auprobe->insn, sizeof(auprobe->insn), x86_64); in uprobe_init_insn() 295 insn_get_length(insn); in uprobe_init_insn() [all …]
|
D | umip.c | 151 static int identify_insn(struct insn *insn) in identify_insn() argument 154 insn_get_modrm(insn); in identify_insn() 156 if (!insn->modrm.nbytes) in identify_insn() 160 if (insn->opcode.bytes[0] != 0xf) in identify_insn() 163 if (insn->opcode.bytes[1] == 0x1) { in identify_insn() 164 switch (X86_MODRM_REG(insn->modrm.value)) { in identify_insn() 174 } else if (insn->opcode.bytes[1] == 0x0) { in identify_insn() 175 if (X86_MODRM_REG(insn->modrm.value) == 0) in identify_insn() 177 else if (X86_MODRM_REG(insn->modrm.value) == 1) in identify_insn() 204 static int emulate_umip_insn(struct insn *insn, int umip_inst, in emulate_umip_insn() argument [all …]
|
/Linux-v4.19/arch/mips/net/ |
D | ebpf_jit.c | 191 int ebpf_to_mips_reg(struct jit_ctx *ctx, const struct bpf_insn *insn, in ebpf_to_mips_reg() argument 195 insn->src_reg : insn->dst_reg; in ebpf_to_mips_reg() 387 static void gen_imm_to_reg(const struct bpf_insn *insn, int reg, in gen_imm_to_reg() argument 390 if (insn->imm >= S16_MIN && insn->imm <= S16_MAX) { in gen_imm_to_reg() 391 emit_instr(ctx, addiu, reg, MIPS_R_ZERO, insn->imm); in gen_imm_to_reg() 393 int lower = (s16)(insn->imm & 0xffff); in gen_imm_to_reg() 394 int upper = insn->imm - lower; in gen_imm_to_reg() 401 static int gen_imm_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, in gen_imm_insn() argument 405 int dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in gen_imm_insn() 410 switch (BPF_OP(insn->code)) { in gen_imm_insn() [all …]
|