Home
last modified time | relevance | path

Searched refs:insn (Results 1 – 25 of 492) sorted by relevance

12345678910>>...20

/linux/arch/x86/lib/
H A Dinsn.c37 #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/tools/arch/x86/lib/
H A Dinsn.c37 #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/kernel/bpf/
H A Ddisasm.c17 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 in __func_get_name()
44 __func_imm_name(const struct bpf_insn_cbs * cbs,const struct bpf_insn * insn,u64 full_imm,char * buff,size_t len) __func_imm_name() argument
140 print_bpf_end_insn(bpf_insn_print_t verbose,void * private_data,const struct bpf_insn * insn) print_bpf_end_insn() argument
150 print_bpf_bswap_insn(bpf_insn_print_t verbose,void * private_data,const struct bpf_insn * insn) print_bpf_bswap_insn() argument
157 is_sdiv_smod(const struct bpf_insn * insn) is_sdiv_smod() argument
163 is_movsx(const struct bpf_insn * insn) is_movsx() argument
169 is_addr_space_cast(const struct bpf_insn * insn) is_addr_space_cast() argument
181 is_mov_percpu_addr(const struct bpf_insn * insn) is_mov_percpu_addr() argument
187 print_bpf_insn(const struct bpf_insn_cbs * cbs,const struct bpf_insn * insn,bool allow_ptr_leaks) print_bpf_insn() argument
[all...]
/linux/tools/testing/selftests/bpf/
H A Ddisasm.c17 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 in __func_get_name()
44 __func_imm_name(const struct bpf_insn_cbs * cbs,const struct bpf_insn * insn,u64 full_imm,char * buff,size_t len) __func_imm_name() argument
140 print_bpf_end_insn(bpf_insn_print_t verbose,void * private_data,const struct bpf_insn * insn) print_bpf_end_insn() argument
150 print_bpf_bswap_insn(bpf_insn_print_t verbose,void * private_data,const struct bpf_insn * insn) print_bpf_bswap_insn() argument
157 is_sdiv_smod(const struct bpf_insn * insn) is_sdiv_smod() argument
163 is_movsx(const struct bpf_insn * insn) is_movsx() argument
169 is_addr_space_cast(const struct bpf_insn * insn) is_addr_space_cast() argument
181 is_mov_percpu_addr(const struct bpf_insn * insn) is_mov_percpu_addr() argument
187 print_bpf_insn(const struct bpf_insn_cbs * cbs,const struct bpf_insn * insn,bool allow_ptr_leaks) print_bpf_insn() argument
[all...]
/linux/arch/arm64/lib/
H A Dinsn.c89 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 Dtraps_misaligned.c25 #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/tools/objtool/
H A Dcheck.c44 struct instruction *insn; in find_insn() local
46 hash_for_each_possible(file->insn_hash, insn, hash, sec_offset_hash(sec, offset)) { in find_insn()
47 if (insn->sec == sec && insn->offset == offset) in find_insn()
48 return insn; in find_insn()
55 struct instruction *insn) in next_insn_same_sec() argument
57 if (insn->idx == INSN_CHUNK_MAX) in next_insn_same_sec()
58 return find_insn(file, insn->sec, insn->offset + insn->len); in next_insn_same_sec()
60 insn++; in next_insn_same_sec()
61 if (!insn->len) in next_insn_same_sec()
64 return insn; in next_insn_same_sec()
[all …]
/linux/arch/s390/tools/
H A Dgen_opcode_table.c22 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/arch/arm/probes/kprobes/
H A Dactions-thumb.c24 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 …]
H A Dactions-common.c18 static void __kprobes simulate_ldm1stm1(probes_opcode_t insn, in simulate_ldm1stm1() argument
22 int rn = (insn >> 16) & 0xf; in simulate_ldm1stm1()
23 int lbit = insn & (1 << 20); in simulate_ldm1stm1()
24 int wbit = insn & (1 << 21); in simulate_ldm1stm1()
25 int ubit = insn & (1 << 23); in simulate_ldm1stm1()
26 int pbit = insn & (1 << 24); in simulate_ldm1stm1()
32 reg_bit_vector = insn & 0xffff; in simulate_ldm1stm1()
42 reg_bit_vector = insn & 0xffff; in simulate_ldm1stm1()
60 static void __kprobes simulate_stm1_pc(probes_opcode_t insn, in simulate_stm1_pc() argument
67 simulate_ldm1stm1(insn, asi, regs); in simulate_stm1_pc()
[all …]
/linux/arch/mips/kernel/
H A Dbranch.c62 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 Ddecode-insn.c18 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 Ddecode-insn.c19 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 Dunaligned_32.c34 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 …]
H A Dunaligned_64.c42 static inline enum direction decode_direction(unsigned int insn) in decode_direction() argument
44 unsigned long tmp = (insn >> 21) & 1; in decode_direction()
49 switch ((insn>>19)&0xf) { in decode_direction()
59 static inline int decode_access_size(struct pt_regs *regs, unsigned int insn) in decode_access_size() argument
63 tmp = ((insn >> 19) & 0xf); in decode_access_size()
74 printk("Impossible unaligned trap. insn=%08x\n", insn); in decode_access_size()
87 static inline int decode_asi(unsigned int insn, struct pt_regs *regs) in decode_asi() argument
89 if (insn & 0x800000) { in decode_asi()
90 if (insn & 0x2000) in decode_asi()
93 return (unsigned char)(insn >> 5); /* imm_asi */ in decode_asi()
[all …]
H A Dvisemul.c294 static void edge(struct pt_regs *regs, unsigned int insn, unsigned int opf) in edge() argument
299 maybe_flush_windows(RS1(insn), RS2(insn), RD(insn), 0); in edge()
300 orig_rs1 = rs1 = fetch_reg(RS1(insn), regs); in edge()
301 orig_rs2 = rs2 = fetch_reg(RS2(insn), regs); in edge()
350 store_reg(regs, rd_val, RD(insn)); in edge()
372 static void array(struct pt_regs *regs, unsigned int insn, unsigned int opf) in array() argument
377 maybe_flush_windows(RS1(insn), RS2(insn), RD(insn), 0); in array()
378 rs1 = fetch_reg(RS1(insn), regs); in array()
379 rs2 = fetch_reg(RS2(insn), regs); in array()
403 store_reg(regs, rd_val, RD(insn)); in array()
[all …]
/linux/arch/riscv/kvm/
H A Dvcpu_insn.c27 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 Darmv8_deprecated.c48 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 Dinst.c15 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/s390/lib/
H A Dprobes.c12 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/drivers/comedi/kcomedilib/
H A Dkcomedilib_main.c177 struct comedi_insn *insn, in comedi_do_insn() argument
191 if (insn->subdev >= dev->n_subdevices) { in comedi_do_insn()
195 s = &dev->subdevices[insn->subdev]; in comedi_do_insn()
199 "%d not usable subdevice\n", insn->subdev); in comedi_do_insn()
206 ret = comedi_check_chanlist(s, 1, &insn->chanspec); in comedi_do_insn()
219 switch (insn->insn) { in comedi_do_insn()
221 ret = s->insn_bits(dev, s, insn, data); in comedi_do_insn()
225 ret = s->insn_config(dev, s, insn, data); in comedi_do_insn()
242 struct comedi_insn insn; in comedi_dio_get_config() local
246 memset(&insn, 0, sizeof(insn)); in comedi_dio_get_config()
[all …]
/linux/arch/x86/tools/
H A Dinsn_sanity.c63 static void dump_insn(FILE *fp, struct insn *insn) in dump_insn() argument
66 dump_field(fp, "prefixes", "\t", &insn->prefixes); in dump_insn()
67 dump_field(fp, "rex_prefix", "\t", &insn->rex_prefix); in dump_insn()
68 dump_field(fp, "vex_prefix", "\t", &insn->vex_prefix); in dump_insn()
69 dump_field(fp, "opcode", "\t", &insn->opcode); in dump_insn()
70 dump_field(fp, "modrm", "\t", &insn->modrm); in dump_insn()
71 dump_field(fp, "sib", "\t", &insn->sib); in dump_insn()
72 dump_field(fp, "displacement", "\t", &insn->displacement); in dump_insn()
73 dump_field(fp, "immediate1", "\t", &insn->immediate1); in dump_insn()
74 dump_field(fp, "immediate2", "\t", &insn->immediate2); in dump_insn()
[all …]
/linux/arch/x86/kernel/
H A Dumip.c151 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.nbytes < 2 || 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()
167 if (X86_MODRM_MOD(insn->modrm.value) == 3) in identify_insn()
176 if (X86_MODRM_MOD(insn->modrm.value) == 3) in identify_insn()
185 } else if (insn->opcode.bytes[1] == 0x0) { in identify_insn()
186 if (X86_MODRM_REG(insn->modrm.value) == 0) in identify_insn()
[all …]
/linux/arch/arm/probes/
H A Ddecode.c196 prepare_emulated_insn(probes_opcode_t insn, struct arch_probes_insn *asi, in prepare_emulated_insn() argument
201 u16 *thumb_insn = (u16 *)asi->insn; in prepare_emulated_insn()
205 return insn; in prepare_emulated_insn()
207 asi->insn[1] = __opcode_to_mem_arm(0xe12fff1e); /* ARM bx lr */ in prepare_emulated_insn()
209 asi->insn[1] = __opcode_to_mem_arm(0xe1a0f00e); /* mov pc, lr */ in prepare_emulated_insn()
212 if (insn < 0xe0000000) in prepare_emulated_insn()
213 insn = (insn | 0xe0000000) & ~0x10000000; in prepare_emulated_insn()
214 return insn; in prepare_emulated_insn()
222 set_emulated_insn(probes_opcode_t insn, struct arch_probes_insn *asi, in set_emulated_insn() argument
227 u16 *ip = (u16 *)asi->insn; in set_emulated_insn()
[all …]
/linux/arch/loongarch/include/asm/
H A Dinst.h499 void simu_pc(struct pt_regs *regs, union loongarch_instruction insn);
500 void simu_branch(struct pt_regs *regs, union loongarch_instruction insn);
502 bool insns_not_supported(union loongarch_instruction insn);
503 bool insns_need_simulation(union loongarch_instruction insn);
504 void arch_simulate_insn(union loongarch_instruction insn, struct pt_regs *regs);
507 int larch_insn_write(void *addr, u32 insn);
508 int larch_insn_patch_text(void *addr, u32 insn);
538 static inline void emit_##NAME(union loongarch_instruction *insn, \
541 insn->reg0i15_format.opcode = OP; \
542 insn->reg0i15_format.immediate = imm; \
[all …]

12345678910>>...20