Home
last modified time | relevance | path

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

12345678910>>...22

/Linux-v5.15/arch/x86/lib/
Dinsn.c36 #define validate_next(t, insn, n) \ argument
37 ((insn)->next_byte + sizeof(t) + n <= (insn)->end_kaddr)
39 #define __get_next(t, insn) \ argument
40 ({ t r; memcpy(&r, insn->next_byte, sizeof(t)); insn->next_byte += sizeof(t); leXX_to_cpu(t, r); })
42 #define __peek_nbyte_next(t, insn, n) \ argument
43 ({ t r; memcpy(&r, (insn)->next_byte + n, sizeof(t)); leXX_to_cpu(t, r); })
45 #define get_next(t, insn) \ argument
46 ({ if (unlikely(!validate_next(t, insn, 0))) goto err_out; __get_next(t, insn); })
48 #define peek_nbyte_next(t, insn, n) \ argument
49 ({ if (unlikely(!validate_next(t, insn, n))) goto err_out; __peek_nbyte_next(t, insn, n); })
[all …]
Dinsn-eval.c38 static bool is_string_insn(struct insn *insn) in is_string_insn() argument
40 insn_get_opcode(insn); in is_string_insn()
43 if (insn->opcode.nbytes != 1) in is_string_insn()
46 switch (insn->opcode.bytes[0]) { in is_string_insn()
64 bool insn_has_rep_prefix(struct insn *insn) in insn_has_rep_prefix() argument
69 insn_get_prefixes(insn); in insn_has_rep_prefix()
71 for_each_insn_prefix(insn, i, p) { in insn_has_rep_prefix()
93 static int get_seg_reg_override_idx(struct insn *insn) in get_seg_reg_override_idx() argument
99 insn_get_prefixes(insn); in get_seg_reg_override_idx()
102 for_each_insn_prefix(insn, i, p) { in get_seg_reg_override_idx()
[all …]
/Linux-v5.15/tools/arch/x86/lib/
Dinsn.c36 #define validate_next(t, insn, n) \ argument
37 ((insn)->next_byte + sizeof(t) + n <= (insn)->end_kaddr)
39 #define __get_next(t, insn) \ argument
40 ({ t r; memcpy(&r, insn->next_byte, sizeof(t)); insn->next_byte += sizeof(t); leXX_to_cpu(t, r); })
42 #define __peek_nbyte_next(t, insn, n) \ argument
43 ({ t r; memcpy(&r, (insn)->next_byte + n, sizeof(t)); leXX_to_cpu(t, r); })
45 #define get_next(t, insn) \ argument
46 ({ if (unlikely(!validate_next(t, insn, 0))) goto err_out; __get_next(t, insn); })
48 #define peek_nbyte_next(t, insn, n) \ argument
49 ({ if (unlikely(!validate_next(t, insn, n))) goto err_out; __peek_nbyte_next(t, insn, n); })
[all …]
/Linux-v5.15/kernel/bpf/
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->src_reg == BPF_PSEUDO_KFUNC_CALL) in __func_get_name()
44 const struct bpf_insn *insn, in __func_imm_name() argument
[all …]
/Linux-v5.15/arch/arm64/lib/
Dinsn.c42 enum aarch64_insn_encoding_class __kprobes aarch64_get_insn_class(u32 insn) in aarch64_get_insn_class() argument
44 return aarch64_insn_encoding_class[(insn >> 25) & 0xf]; in aarch64_get_insn_class()
47 bool __kprobes aarch64_insn_is_steppable_hint(u32 insn) in aarch64_insn_is_steppable_hint() argument
49 if (!aarch64_insn_is_hint(insn)) in aarch64_insn_is_steppable_hint()
52 switch (insn & 0xFE0) { in aarch64_insn_is_steppable_hint()
71 bool aarch64_insn_is_branch_imm(u32 insn) in aarch64_insn_is_branch_imm() argument
73 return (aarch64_insn_is_b(insn) || aarch64_insn_is_bl(insn) || in aarch64_insn_is_branch_imm()
74 aarch64_insn_is_tbz(insn) || aarch64_insn_is_tbnz(insn) || in aarch64_insn_is_branch_imm()
75 aarch64_insn_is_cbz(insn) || aarch64_insn_is_cbnz(insn) || in aarch64_insn_is_branch_imm()
76 aarch64_insn_is_bcond(insn)); in aarch64_insn_is_branch_imm()
[all …]
/Linux-v5.15/tools/arch/x86/include/asm/
Dinsn.h68 struct insn { struct
134 extern void insn_init(struct insn *insn, const void *kaddr, int buf_len, int x86_64);
135 extern int insn_get_prefixes(struct insn *insn);
136 extern int insn_get_opcode(struct insn *insn);
137 extern int insn_get_modrm(struct insn *insn);
138 extern int insn_get_sib(struct insn *insn);
139 extern int insn_get_displacement(struct insn *insn);
140 extern int insn_get_immediate(struct insn *insn);
141 extern int insn_get_length(struct insn *insn);
151 extern int insn_decode(struct insn *insn, const void *kaddr, int buf_len, enum insn_mode m);
[all …]
/Linux-v5.15/arch/x86/include/asm/
Dinsn.h68 struct insn { struct
134 extern void insn_init(struct insn *insn, const void *kaddr, int buf_len, int x86_64);
135 extern int insn_get_prefixes(struct insn *insn);
136 extern int insn_get_opcode(struct insn *insn);
137 extern int insn_get_modrm(struct insn *insn);
138 extern int insn_get_sib(struct insn *insn);
139 extern int insn_get_displacement(struct insn *insn);
140 extern int insn_get_immediate(struct insn *insn);
141 extern int insn_get_length(struct insn *insn);
151 extern int insn_decode(struct insn *insn, const void *kaddr, int buf_len, enum insn_mode m);
[all …]
/Linux-v5.15/tools/objtool/
Dcheck.c25 struct instruction *insn; member
34 struct instruction *insn; in find_insn() local
36 hash_for_each_possible(file->insn_hash, insn, hash, sec_offset_hash(sec, offset)) { in find_insn()
37 if (insn->sec == sec && insn->offset == offset) in find_insn()
38 return insn; in find_insn()
45 struct instruction *insn) in next_insn_same_sec() argument
47 struct instruction *next = list_next_entry(insn, list); in next_insn_same_sec()
49 if (!next || &next->list == &file->insn_list || next->sec != insn->sec) in next_insn_same_sec()
56 struct instruction *insn) in next_insn_same_func() argument
58 struct instruction *next = list_next_entry(insn, list); in next_insn_same_func()
[all …]
/Linux-v5.15/arch/powerpc/xmon/
Dspu.h80 #define SIGNED_EXTRACT(insn,size,pos) (((int)((insn) << (32-size-pos))) >> (32-size)) argument
81 #define UNSIGNED_EXTRACT(insn,size,pos) (((insn) >> pos) & ((1 << size)-1)) argument
83 #define DECODE_INSN_RT(insn) (insn & 0x7f) argument
84 #define DECODE_INSN_RA(insn) ((insn >> 7) & 0x7f) argument
85 #define DECODE_INSN_RB(insn) ((insn >> 14) & 0x7f) argument
86 #define DECODE_INSN_RC(insn) ((insn >> 21) & 0x7f) argument
88 #define DECODE_INSN_I10(insn) SIGNED_EXTRACT(insn,10,14) argument
89 #define DECODE_INSN_U10(insn) UNSIGNED_EXTRACT(insn,10,14) argument
92 #define DECODE_INSN_I16(insn) SIGNED_EXTRACT(insn,16,7) argument
93 #define DECODE_INSN_U16(insn) UNSIGNED_EXTRACT(insn,16,7) argument
[all …]
/Linux-v5.15/arch/s390/tools/
Dgen_opcode_table.c22 struct insn { struct
44 struct insn *insn; member
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-v5.15/arch/riscv/kernel/
Dtraps_misaligned.c85 #define INSN_LEN(insn) ((((insn) & 0x3) < 0x3) ? 2 : 4) argument
118 #define RVC_RS1S(insn) (8 + RV_X(insn, SH_RD, 3)) argument
119 #define RVC_RS2S(insn) (8 + RV_X(insn, SH_RS2C, 3)) argument
120 #define RVC_RS2(insn) RV_X(insn, SH_RS2C, 5) argument
128 #define REG_OFFSET(insn, pos) \ argument
129 (SHIFT_RIGHT((insn), (pos) - LOG_REGBYTES) & REG_MASK)
131 #define REG_PTR(insn, pos, regs) \ argument
132 (ulong *)((ulong)(regs) + REG_OFFSET(insn, pos))
134 #define GET_RM(insn) (((insn) >> 12) & 7) argument
136 #define GET_RS1(insn, regs) (*REG_PTR(insn, SH_RS1, regs)) argument
[all …]
/Linux-v5.15/arch/arm/probes/kprobes/
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 …]
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-v5.15/arch/mips/kernel/
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-v5.15/arch/arm64/kernel/probes/
Ddecode-insn.c18 static bool __kprobes aarch64_insn_is_steppable(u32 insn) in aarch64_insn_is_steppable() argument
27 if (aarch64_get_insn_class(insn) == AARCH64_INSN_CLS_BR_SYS) { 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-v5.15/arch/csky/kernel/probes/
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-v5.15/arch/sparc/kernel/
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 …]
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 …]
/Linux-v5.15/drivers/comedi/kcomedilib/
Dkcomedilib_main.c67 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-v5.15/arch/s390/lib/
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-v5.15/arch/arm64/kernel/
Darmv8_deprecated.c89 struct insn_emulation *insn = (struct insn_emulation *)data; in enable_insn_hw_mode() local
90 if (insn->ops->set_hw_mode) in enable_insn_hw_mode()
91 insn->ops->set_hw_mode(true); in enable_insn_hw_mode()
96 struct insn_emulation *insn = (struct insn_emulation *)data; in disable_insn_hw_mode() local
97 if (insn->ops->set_hw_mode) in disable_insn_hw_mode()
98 insn->ops->set_hw_mode(false); in disable_insn_hw_mode()
102 static int run_all_cpu_set_hw_mode(struct insn_emulation *insn, bool enable) in run_all_cpu_set_hw_mode() argument
104 if (!insn->ops->set_hw_mode) in run_all_cpu_set_hw_mode()
107 on_each_cpu(enable_insn_hw_mode, (void *)insn, true); in run_all_cpu_set_hw_mode()
109 on_each_cpu(disable_insn_hw_mode, (void *)insn, true); in run_all_cpu_set_hw_mode()
[all …]
/Linux-v5.15/arch/x86/kernel/
Duprobes.c41 #define OPCODE1(insn) ((insn)->opcode.bytes[0]) argument
42 #define OPCODE2(insn) ((insn)->opcode.bytes[1]) argument
43 #define OPCODE3(insn) ((insn)->opcode.bytes[2]) argument
44 #define MODRM_REG(insn) X86_MODRM_REG((insn)->modrm.value) argument
256 static bool is_prefix_bad(struct insn *insn) in is_prefix_bad() argument
261 for_each_insn_prefix(insn, i, p) { in is_prefix_bad()
277 static int uprobe_init_insn(struct arch_uprobe *auprobe, struct insn *insn, bool x86_64) in uprobe_init_insn() argument
283 ret = insn_decode(insn, auprobe->insn, sizeof(auprobe->insn), m); in uprobe_init_insn()
287 if (is_prefix_bad(insn)) in uprobe_init_insn()
291 if (insn_masking_exception(insn)) in uprobe_init_insn()
[all …]
/Linux-v5.15/arch/x86/tools/
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-v5.15/tools/objtool/include/objtool/
Dcheck.h66 static inline bool is_static_jump(struct instruction *insn) in is_static_jump() argument
68 return insn->type == INSN_JUMP_CONDITIONAL || in is_static_jump()
69 insn->type == INSN_JUMP_UNCONDITIONAL; in is_static_jump()
72 static inline bool is_dynamic_jump(struct instruction *insn) in is_dynamic_jump() argument
74 return insn->type == INSN_JUMP_DYNAMIC || in is_dynamic_jump()
75 insn->type == INSN_JUMP_DYNAMIC_CONDITIONAL; in is_dynamic_jump()
78 static inline bool is_jump(struct instruction *insn) in is_jump() argument
80 return is_static_jump(insn) || is_dynamic_jump(insn); in is_jump()
86 #define for_each_insn(file, insn) \ argument
87 list_for_each_entry(insn, &file->insn_list, list)
[all …]
/Linux-v5.15/arch/mips/net/
Debpf_jit.c194 const struct bpf_insn *insn, in ebpf_to_mips_reg() argument
198 insn->src_reg : insn->dst_reg; in ebpf_to_mips_reg()
408 static void gen_imm_to_reg(const struct bpf_insn *insn, int reg, in gen_imm_to_reg() argument
411 if (insn->imm >= S16_MIN && insn->imm <= S16_MAX) { in gen_imm_to_reg()
412 emit_instr(ctx, addiu, reg, MIPS_R_ZERO, insn->imm); in gen_imm_to_reg()
414 int lower = (s16)(insn->imm & 0xffff); in gen_imm_to_reg()
415 int upper = insn->imm - lower; in gen_imm_to_reg()
422 static int gen_imm_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, in gen_imm_insn() argument
426 int dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in gen_imm_insn()
431 switch (BPF_OP(insn->code)) { in gen_imm_insn()
[all …]

12345678910>>...22