| /linux/tools/arch/x86/lib/ |
| H A D | insn.c | 37 #define validate_next(t, insn, n) \ argument 38 ((insn)->next_byte + sizeof(t) + n <= (insn)->end_kaddr) 40 #define __get_next(t, insn) \ argument 41 …({ t r = get_unaligned((t *)(insn)->next_byte); (insn)->next_byte += sizeof(t); leXX_to_cpu(t, r);… 43 #define __peek_nbyte_next(t, insn, n) \ argument 44 ({ t r = get_unaligned((t *)(insn)->next_byte + n); leXX_to_cpu(t, r); }) 46 #define get_next(t, insn) \ argument 47 ({ if (unlikely(!validate_next(t, insn, 0))) goto err_out; __get_next(t, insn); }) 49 #define peek_nbyte_next(t, insn, n) \ argument 50 ({ if (unlikely(!validate_next(t, insn, n))) goto err_out; __peek_nbyte_next(t, insn, n); }) [all …]
|
| /linux/arch/x86/lib/ |
| H A D | insn.c | 37 #define validate_next(t, insn, n) \ argument 38 ((insn)->next_byte + sizeof(t) + n <= (insn)->end_kaddr) 40 #define __get_next(t, insn) \ argument 41 …({ t r = get_unaligned((t *)(insn)->next_byte); (insn)->next_byte += sizeof(t); leXX_to_cpu(t, r);… 43 #define __peek_nbyte_next(t, insn, n) \ argument 44 ({ t r = get_unaligned((t *)(insn)->next_byte + n); leXX_to_cpu(t, r); }) 46 #define get_next(t, insn) \ argument 47 ({ if (unlikely(!validate_next(t, insn, 0))) goto err_out; __get_next(t, insn); }) 49 #define peek_nbyte_next(t, insn, n) \ argument 50 ({ if (unlikely(!validate_next(t, insn, n))) goto err_out; __peek_nbyte_next(t, insn, n); }) [all …]
|
| H A D | insn-eval.c | 39 static bool is_string_insn(struct insn *insn) in is_string_insn() argument 42 if (insn->opcode.nbytes != 1) in is_string_insn() 45 switch (insn->opcode.bytes[0]) { in is_string_insn() 63 bool insn_has_rep_prefix(struct insn *insn) in insn_has_rep_prefix() argument 68 insn_get_prefixes(insn); in insn_has_rep_prefix() 70 for_each_insn_prefix(insn, i, p) { in insn_has_rep_prefix() 92 static int get_seg_reg_override_idx(struct insn *insn) in get_seg_reg_override_idx() argument 98 insn_get_prefixes(insn); in get_seg_reg_override_idx() 101 for_each_insn_prefix(insn, i, p) { in get_seg_reg_override_idx() 155 static bool check_seg_overrides(struct insn *insn, int regoff) in check_seg_overrides() argument [all …]
|
| /linux/kernel/bpf/ |
| H A D | disasm.c | 17 const struct bpf_insn *insn, in __func_get_name() argument 22 if (!insn->src_reg && in __func_get_name() 23 insn->imm >= 0 && insn->imm < __BPF_FUNC_MAX_ID && in __func_get_name() 24 func_id_str[insn->imm]) in __func_get_name() 25 return func_id_str[insn->imm]; in __func_get_name() 30 res = cbs->cb_call(cbs->private_data, insn); in __func_get_name() 35 if (insn->src_reg == BPF_PSEUDO_CALL) in __func_get_name() 36 snprintf(buff, len, "%+d", insn->imm); in __func_get_name() 37 else if (insn->src_reg == BPF_PSEUDO_KFUNC_CALL) in __func_get_name() 44 const struct bpf_insn *insn, in __func_imm_name() argument [all …]
|
| /linux/tools/testing/selftests/bpf/ |
| H A D | disasm.c | 17 const struct bpf_insn *insn, in __func_get_name() argument 22 if (!insn->src_reg && in __func_get_name() 23 insn->imm >= 0 && insn->imm < __BPF_FUNC_MAX_ID && in __func_get_name() 24 func_id_str[insn->imm]) in __func_get_name() 25 return func_id_str[insn->imm]; in __func_get_name() 30 res = cbs->cb_call(cbs->private_data, insn); in __func_get_name() 35 if (insn->src_reg == BPF_PSEUDO_CALL) in __func_get_name() 36 snprintf(buff, len, "%+d", insn->imm); in __func_get_name() 37 else if (insn->src_reg == BPF_PSEUDO_KFUNC_CALL) in __func_get_name() 44 const struct bpf_insn *insn, in __func_imm_name() argument [all …]
|
| /linux/tools/arch/x86/include/asm/ |
| H A D | insn.h | 68 struct insn { struct 153 extern void insn_init(struct insn *insn, const void *kaddr, int buf_len, int x86_64); 154 extern int insn_get_prefixes(struct insn *insn); 155 extern int insn_get_opcode(struct insn *insn); 156 extern int insn_get_modrm(struct insn *insn); 157 extern int insn_get_sib(struct insn *insn); 158 extern int insn_get_displacement(struct insn *insn); 159 extern int insn_get_immediate(struct insn *insn); 160 extern int insn_get_length(struct insn *insn); 170 extern int insn_decode(struct insn *insn, const void *kaddr, int buf_len, enum insn_mode m); [all …]
|
| /linux/arch/x86/include/asm/ |
| H A D | insn.h | 68 struct insn { struct 153 extern void insn_init(struct insn *insn, const void *kaddr, int buf_len, int x86_64); 154 extern int insn_get_prefixes(struct insn *insn); 155 extern int insn_get_opcode(struct insn *insn); 156 extern int insn_get_modrm(struct insn *insn); 157 extern int insn_get_sib(struct insn *insn); 158 extern int insn_get_displacement(struct insn *insn); 159 extern int insn_get_immediate(struct insn *insn); 160 extern int insn_get_length(struct insn *insn); 170 extern int insn_decode(struct insn *insn, const void *kaddr, int buf_len, enum insn_mode m); [all …]
|
| /linux/arch/arm64/lib/ |
| H A D | insn.c | 89 u64 aarch64_insn_decode_immediate(enum aarch64_insn_imm_type type, u32 insn) in aarch64_insn_decode_immediate() argument 97 immlo = (insn >> ADR_IMM_LOSHIFT) & ADR_IMM_LOMASK; in aarch64_insn_decode_immediate() 98 immhi = (insn >> ADR_IMM_HISHIFT) & ADR_IMM_HIMASK; in aarch64_insn_decode_immediate() 99 insn = (immhi << ADR_IMM_HILOSPLIT) | immlo; in aarch64_insn_decode_immediate() 110 return (insn >> shift) & mask; in aarch64_insn_decode_immediate() 114 u32 insn, u64 imm) in aarch64_insn_encode_immediate() argument 119 if (insn == AARCH64_BREAK_FAULT) in aarch64_insn_encode_immediate() 141 insn &= ~(mask << shift); in aarch64_insn_encode_immediate() 142 insn |= (imm & mask) << shift; in aarch64_insn_encode_immediate() 144 return insn; in aarch64_insn_encode_immediate() [all …]
|
| /linux/arch/riscv/kernel/ |
| H A D | traps_misaligned.c | 25 #define FP_GET_RD(insn) (insn >> 7 & 0x1F) argument 29 static int set_f32_rd(unsigned long insn, struct pt_regs *regs, in set_f32_rd() argument 32 unsigned long fp_reg = FP_GET_RD(insn); in set_f32_rd() 42 static int set_f64_rd(unsigned long insn, struct pt_regs *regs, u64 val) in set_f64_rd() argument 44 unsigned long fp_reg = FP_GET_RD(insn); in set_f64_rd() 61 static u64 get_f64_rs(unsigned long insn, u8 fp_reg_offset, in get_f64_rs() argument 64 unsigned long fp_reg = (insn >> fp_reg_offset) & 0x1F; in get_f64_rs() 76 static unsigned long get_f64_rs(unsigned long insn, u8 fp_reg_offset, in get_f64_rs() argument 79 unsigned long fp_reg = (insn >> fp_reg_offset) & 0x1F; in get_f64_rs() 92 static unsigned long get_f32_rs(unsigned long insn, u8 fp_reg_offset, in get_f32_rs() argument [all …]
|
| /linux/arch/s390/tools/ |
| H A 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/tools/objtool/ |
| H A D | check.c | 27 struct instruction *insn; member 40 struct instruction *insn; in find_insn() local 42 hash_for_each_possible(file->insn_hash, insn, hash, sec_offset_hash(sec, offset)) { in find_insn() 43 if (insn->sec == sec && insn->offset == offset) in find_insn() 44 return insn; in find_insn() 51 struct instruction *insn) in next_insn_same_sec() argument 53 if (insn->idx == INSN_CHUNK_MAX) in next_insn_same_sec() 54 return find_insn(file, insn->sec, insn->offset + insn->len); in next_insn_same_sec() 56 insn++; in next_insn_same_sec() 57 if (!insn->len) in next_insn_same_sec() [all …]
|
| /linux/arch/arm/probes/kprobes/ |
| H A D | actions-thumb.c | 24 t32_simulate_table_branch(probes_opcode_t insn, in t32_simulate_table_branch() argument 28 int rn = (insn >> 16) & 0xf; in t32_simulate_table_branch() 29 int rm = insn & 0xf; in t32_simulate_table_branch() 35 if (insn & 0x10) /* TBH */ in t32_simulate_table_branch() 44 t32_simulate_mrs(probes_opcode_t insn, in t32_simulate_mrs() argument 47 int rd = (insn >> 8) & 0xf; in t32_simulate_mrs() 53 t32_simulate_cond_branch(probes_opcode_t insn, in t32_simulate_cond_branch() argument 58 long offset = insn & 0x7ff; /* imm11 */ in t32_simulate_cond_branch() 59 offset += (insn & 0x003f0000) >> 5; /* imm6 */ in t32_simulate_cond_branch() 60 offset += (insn & 0x00002000) << 4; /* J1 */ in t32_simulate_cond_branch() [all …]
|
| /linux/arch/mips/kernel/ |
| H A D | branch.c | 62 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/arch/arm64/kernel/probes/ |
| H A D | decode-insn.c | 18 static bool __kprobes aarch64_insn_is_steppable(u32 insn) in aarch64_insn_is_steppable() argument 27 if (aarch64_insn_is_class_branch_sys(insn)) { in aarch64_insn_is_steppable() 28 if (aarch64_insn_is_branch(insn) || in aarch64_insn_is_steppable() 29 aarch64_insn_is_msr_imm(insn) || in aarch64_insn_is_steppable() 30 aarch64_insn_is_msr_reg(insn) || in aarch64_insn_is_steppable() 31 aarch64_insn_is_exception(insn) || in aarch64_insn_is_steppable() 32 aarch64_insn_is_eret(insn) || in aarch64_insn_is_steppable() 33 aarch64_insn_is_eret_auth(insn)) in aarch64_insn_is_steppable() 41 if (aarch64_insn_is_mrs(insn)) in aarch64_insn_is_steppable() 42 return aarch64_insn_extract_system_reg(insn) in aarch64_insn_is_steppable() [all …]
|
| /linux/arch/csky/kernel/probes/ |
| H A D | decode-insn.c | 19 probe_opcode_t insn = le32_to_cpu(*addr); in csky_probe_decode_insn() local 21 CSKY_INSN_SET_SIMULATE(br16, insn); in csky_probe_decode_insn() 22 CSKY_INSN_SET_SIMULATE(bt16, insn); in csky_probe_decode_insn() 23 CSKY_INSN_SET_SIMULATE(bf16, insn); in csky_probe_decode_insn() 24 CSKY_INSN_SET_SIMULATE(jmp16, insn); in csky_probe_decode_insn() 25 CSKY_INSN_SET_SIMULATE(jsr16, insn); in csky_probe_decode_insn() 26 CSKY_INSN_SET_SIMULATE(lrw16, insn); in csky_probe_decode_insn() 27 CSKY_INSN_SET_SIMULATE(pop16, insn); in csky_probe_decode_insn() 29 CSKY_INSN_SET_SIMULATE(br32, insn); in csky_probe_decode_insn() 30 CSKY_INSN_SET_SIMULATE(bt32, insn); in csky_probe_decode_insn() [all …]
|
| /linux/arch/sparc/kernel/ |
| H A D | unaligned_32.c | 34 static inline enum direction decode_direction(unsigned int insn) in decode_direction() argument 36 unsigned long tmp = (insn >> 21) & 1; in decode_direction() 41 if(((insn>>19)&0x3f) == 15) in decode_direction() 49 static inline int decode_access_size(unsigned int insn) in decode_access_size() argument 51 insn = (insn >> 19) & 3; in decode_access_size() 53 if(!insn) in decode_access_size() 55 else if(insn == 3) in decode_access_size() 57 else if(insn == 2) in decode_access_size() 60 printk("Impossible unaligned trap. insn=%08x\n", insn); in decode_access_size() 67 static inline int decode_signedness(unsigned int insn) in decode_signedness() argument [all …]
|
| /linux/arch/riscv/kvm/ |
| H A D | vcpu_insn.c | 27 int (*func)(struct kvm_vcpu *vcpu, struct kvm_run *run, ulong insn); 31 ulong insn) in truly_illegal_insn() argument 38 utrap.stval = insn; in truly_illegal_insn() 47 ulong insn) in truly_virtual_insn() argument 54 utrap.stval = insn; in truly_virtual_insn() 76 static int wfi_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, ulong insn) in wfi_insn() argument 83 static int wrs_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, ulong insn) in wrs_insn() argument 129 ulong insn; in kvm_riscv_vcpu_csr_return() local 136 insn = vcpu->arch.csr_decode.insn; in kvm_riscv_vcpu_csr_return() 137 if ((insn >> SH_RD) & MASK_RX) in kvm_riscv_vcpu_csr_return() [all …]
|
| /linux/arch/arm64/kernel/ |
| H A D | armv8_deprecated.c | 48 u32 insn); 231 static bool try_emulate_swp(struct pt_regs *regs, u32 insn) in try_emulate_swp() argument 237 if ((insn & 0x0fb00ff0) != 0x01000090) in try_emulate_swp() 240 return swp_handler(regs, insn) == 0; in try_emulate_swp() 314 static bool try_emulate_cp15_barrier(struct pt_regs *regs, u32 insn) in try_emulate_cp15_barrier() argument 319 if ((insn & 0x0fff0fdf) == 0x0e070f9a) in try_emulate_cp15_barrier() 320 return cp15barrier_handler(regs, insn) == 0; in try_emulate_cp15_barrier() 322 if ((insn & 0x0fff0fff) == 0x0e070f95) in try_emulate_cp15_barrier() 323 return cp15barrier_handler(regs, insn) == 0; in try_emulate_cp15_barrier() 351 char *insn; in compat_setend_handler() local [all …]
|
| /linux/arch/loongarch/kernel/ |
| H A D | inst.c | 15 void simu_pc(struct pt_regs *regs, union loongarch_instruction insn) in simu_pc() argument 18 unsigned int rd = insn.reg1i20_format.rd; in simu_pc() 19 unsigned int imm = insn.reg1i20_format.immediate; in simu_pc() 26 switch (insn.reg1i20_format.opcode) { in simu_pc() 48 void simu_branch(struct pt_regs *regs, union loongarch_instruction insn) in simu_branch() argument 58 imm_l = insn.reg0i26_format.immediate_l; in simu_branch() 59 imm_h = insn.reg0i26_format.immediate_h; in simu_branch() 60 switch (insn.reg0i26_format.opcode) { in simu_branch() 70 imm_l = insn.reg1i21_format.immediate_l; in simu_branch() 71 imm_h = insn.reg1i21_format.immediate_h; in simu_branch() [all …]
|
| /linux/arch/arm64/include/asm/ |
| H A D | asm-extable.h | 32 #define __ASM_EXTABLE_RAW(insn, fixup, type, data) \ 35 .long ((insn) - .); \ 44 #define _ASM_EXTABLE_UACCESS_ERR_ZERO(insn, fixup, err, zero) \ 45 __ASM_EXTABLE_RAW(insn, fixup, \ 52 #define _ASM_EXTABLE_UACCESS_ERR(insn, fixup, err) \ 53 _ASM_EXTABLE_UACCESS_ERR_ZERO(insn, fixup, err, wzr) 55 #define _ASM_EXTABLE_UACCESS(insn, fixup) \ 56 _ASM_EXTABLE_UACCESS_ERR_ZERO(insn, fixup, wzr, wzr) 62 .macro _asm_extable_uaccess, insn, fixup 63 _ASM_EXTABLE_UACCESS(\insn, \fixup) [all …]
|
| H A D | insn.h | 442 static __always_inline bool aarch64_insn_is_steppable_hint(u32 insn) in aarch64_insn_is_steppable_hint() argument 444 if (!aarch64_insn_is_hint(insn)) in aarch64_insn_is_steppable_hint() 447 switch (insn & 0xFE0) { in aarch64_insn_is_steppable_hint() 466 static __always_inline bool aarch64_insn_is_branch(u32 insn) in aarch64_insn_is_branch() argument 470 return aarch64_insn_is_b(insn) || in aarch64_insn_is_branch() 471 aarch64_insn_is_bl(insn) || in aarch64_insn_is_branch() 472 aarch64_insn_is_cbz(insn) || in aarch64_insn_is_branch() 473 aarch64_insn_is_cbnz(insn) || in aarch64_insn_is_branch() 474 aarch64_insn_is_tbz(insn) || in aarch64_insn_is_branch() 475 aarch64_insn_is_tbnz(insn) || in aarch64_insn_is_branch() [all …]
|
| /linux/drivers/comedi/kcomedilib/ |
| H A 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/arch/s390/lib/ |
| H A 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/tools/objtool/arch/loongarch/ |
| H A D | decode.c | 15 unsigned long arch_jump_destination(struct instruction *insn) in arch_jump_destination() argument 17 return insn->offset + (insn->immediate << 2); in arch_jump_destination() 76 struct instruction *insn) in decode_insn_reg0i26_fomat() argument 80 insn->type = INSN_JUMP_UNCONDITIONAL; in decode_insn_reg0i26_fomat() 81 insn->immediate = sign_extend64(inst.reg0i26_format.immediate_h << 16 | in decode_insn_reg0i26_fomat() 85 insn->type = INSN_CALL; in decode_insn_reg0i26_fomat() 86 insn->immediate = sign_extend64(inst.reg0i26_format.immediate_h << 16 | in decode_insn_reg0i26_fomat() 97 struct instruction *insn) in decode_insn_reg1i21_fomat() argument 103 insn->type = INSN_JUMP_CONDITIONAL; in decode_insn_reg1i21_fomat() 104 insn->immediate = sign_extend64(inst.reg1i21_format.immediate_h << 16 | in decode_insn_reg1i21_fomat() [all …]
|
| /linux/arch/x86/kernel/kprobes/ |
| H A D | core.c | 115 } __packed *insn; in __synthesize_relative_insn() local 117 insn = (struct __arch_relative_insn *)dest; in __synthesize_relative_insn() 118 insn->raddr = (s32)((long)(to) - ((long)(from) + 5)); in __synthesize_relative_insn() 119 insn->op = op; in __synthesize_relative_insn() 140 bool can_boost(struct insn *insn, void *addr) in can_boost() argument 150 if (insn->opcode.nbytes == 2) in can_boost() 151 return test_bit(insn->opcode.bytes[1], in can_boost() 154 if (insn->opcode.nbytes != 1) in can_boost() 157 for_each_insn_prefix(insn, i, prefix) { in can_boost() 166 opcode = insn->opcode.bytes[0]; in can_boost() [all …]
|